+PROGRAM PERMUTATIONEN(INPUT,OUTPUT);
+
+ VAR I,N: INTEGER;
+ C: ARRAY[1..10] OF INTEGER;
+
+
+
+ PROCEDURE WRITEPERMUTATION;
+ VAR I: INTEGER;
+ BEGIN
+ WRITE(" ":10);
+ FOR I := 1 TO N DO WRITE( C[I] :3);
+ WRITELN
+ END (* WRITEPERMUTATION *);
+
+
+
+ PROCEDURE PERM(K: INTEGER);
+ VAR I,H: INTEGER;
+ BEGIN
+ IF K=1 THEN WRITEPERMUTATION ELSE
+ BEGIN PERM(K-1);
+ FOR I:= 1 TO K-1 DO
+ BEGIN H := C[I]; C[I] := C[K]; C[K] := H;
+ PERM(K-1);
+ H := C[I]; C[I] := C[K]; C[K] := H
+ END
+ END
+ END (* PERM *);
+
+
+
+BEGIN
+ WRITE("P E R M U T A T I O N E N DER ORDNUNG");
+ READ(N);
+ WRITELN;
+ FOR I := 1 TO N DO C[I] := I;
+ PERM(N)
+END.