PROGRAM Path (Input,Output);

CONST
  MAXCOL = 80;
  MAXROW = 24;

VAR
   i,j : Integer;                         (* looping variables *)
   x1,x2,y1,y2 : Integer;                 (* source and dest points *)
   done : Boolean;                        (* flag to indicate end of run *)
   l2r : Boolean;                         (* l2r==1 -> point1 left of point2 *)


BEGIN
  Writeln('Enter new source, dest pair. ');
  Writeln('Usage is: sourcex sourcey destx desty ');
  Writeln('Enter a negative number for any point to quit.-> ');

  Readln(x1,y1,x2,y2);

  IF (x1<0) OR (y1<0) OR (x2<0) OR (y2<0) THEN
    done := True
  ELSE 
    done := False;


  WHILE NOT done DO
   Begin

    i := 1;
    WHILE i <= MAXROW DO
     Begin
    
      j := 1;
      WHILE j <= MAXCOL DO
       Begin
        IF (y1=j) AND (i>=x1) AND (i<x2) THEN
           Write('|')                                  (* Vertical Path*)

	ELSE IF (i=x2) AND (j>=y1) AND (j<=y2 ) THEN
                Write('-')                             (* Horiz Path *)
    
	ELSE IF j = MAXCOL THEN
              Writeln                   (* Next line *)
 
	ELSE Write(' ');                                
    
        j := j + 1;
       End;

     i := i + 1;
    End;

    Writeln('Enter new source, dest pair. ');            (* Next point *)
    Writeln('Usage is:\nsourcex sourcey destx desty ');
    Writeln('Enter a negative number for any point to quit\n-> ');

    Readln(x1,y1,x2,y2);

    IF (x1<0) OR (y1<0) OR (x2<0) OR (y2<0) THEN
      done := True
    ELSE 
      done := False;
   End

END.

