--- /dev/null
+PROGRAM PLOTALLTREES(INPUT,OUTPUT);
+
+ VAR N,TREE: INTEGER;
+ OX,OY: REAL;
+ X,Y: ARRAY[1..6] OF REAL;
+ U,V: ARRAY[1..6] OF INTEGER;
+
+ PENXPOS,PENYPOS: INTEGER;
+
+(********** P L O T T E R PROZEDUREN **********)
+
+PROCEDURE PEN(I:CHAR);
+ BEGIN WRITE(I) END;
+
+PROCEDURE SEND(IX,IY: INTEGER);
+ BEGIN
+ IF IX>=0 THEN WRITE( IX:1,"@")
+ ELSE WRITE(-IX:1,"P");
+ IF IY>=0 THEN WRITE( IY:1,"A")
+ ELSE WRITE(-IY:1,"Q")
+ END;
+
+PROCEDURE MOVE(X,Y: REAL);
+ BEGIN
+ PENXPOS:=ROUND(X); PENYPOS:=ROUND(Y);
+ WRITE("H");
+ SEND(PENXPOS,PENYPOS);
+ WRITELN("K")
+ END;
+
+PROCEDURE LINE(X,Y: REAL);
+ VAR DX,DY: INTEGER;
+ BEGIN
+ DX:=ROUND(X)-PENXPOS;
+ DY:=ROUND(Y)-PENYPOS;
+ SEND(DX,DY); WRITELN("J");
+ PENXPOS:=PENXPOS+DX; PENYPOS:=PENYPOS+DY
+ END;
+
+PROCEDURE SYSIZE(R,G: INTEGER);
+ BEGIN
+ WRITE("C", CHR(G+16*(R+2)))
+ END;
+
+PROCEDURE BLATTWECHSEL;
+ BEGIN PEN("H"); WRITELN(" ":384); TREE := 0 END;
+(***********************************************)
+
+PROCEDURE INITPOINTS;
+ CONST R=150.0; RAD=0.0174533;
+ VAR I: INTEGER;
+ P1W: ARRAY[3..6] OF REAL;
+BEGIN
+ P1W[3] := -30.0; P1W[4] := 45.0; P1W[5] := 18.0; P1W[6] := 60.0;
+ FOR I := 1 TO N DO
+ BEGIN
+ X[I] := R*COS( (I*360/N + P1W[N]) * RAD);
+ Y[I] := R*SIN( (I*360/N + P1W[N]) * RAD)
+ END
+END (* INITPOINTS *);
+
+
+PROCEDURE DECODE;
+ VAR I,K: INTEGER;
+ Z: ARRAY[1..6] OF INTEGER;
+BEGIN
+ FOR I := 1 TO N DO Z[I] := 0;
+ FOR K := 1 TO N-1 DO Z[ V[K] ] := Z[ V[K] ] + 1;
+ FOR K := 1 TO N-1 DO
+ BEGIN I := 1; WHILE Z[I]<>0 DO I := I + 1;
+ U[K] := I;
+ Z[I] := -1 (* FORGET THIS VERTEX *);
+ Z[ V[K] ] := Z[ V[K] ] - 1
+ END
+END (* DECODE *);
+
+
+PROCEDURE PLOTTREE;
+ VAR K: INTEGER;
+BEGIN
+ DECODE;
+ OX := 200 + 400*(TREE MOD 9);
+ OY := 2600 - 400*(TREE DIV 9);
+ FOR K := 1 TO N-1 DO
+ BEGIN
+ MOVE(OX+X[ U[K] ], OY+Y[ U[K] ]); PEN("I");
+ LINE(OX+X[ V[K] ], OY+Y[ V[K] ])
+ END;
+ TREE := TREE + 1; IF TREE=63 THEN BLATTWECHSEL
+END (* PLOTTREE *);
+
+PROCEDURE COMBITREE(N,K: INTEGER);
+ VAR Z: INTEGER;
+BEGIN
+ IF K>0 THEN
+ BEGIN FOR Z := 1 TO N DO
+ BEGIN V[K] := Z; COMBITREE(N,K-1) END
+ END ELSE PLOTTREE
+END (* COMBITREE *);
+
+
+
+BEGIN
+ READ(N);
+ INITPOINTS;
+ TREE := 0;
+ V[N-1] := N; COMBITREE(N,N-2);
+ BLATTWECHSEL
+END.