PROGRAM IS TYPE BARRAY IS ARRAY OF BOOLEAN; IARRAY IS ARRAY OF INTEGER; VAR i: INTEGER := 0; up, down := BARRAY [<15 OF TRUE>]; rows := BARRAY [<15 OF TRUE>]; x := IARRAY [<8 OF 0 >]; PROCEDURE print() IS BEGIN WRITE(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7]); END; PROCEDURE queens(c : INTEGER) IS VAR r := 0; BEGIN FOR r := 0 TO 7 DO IF rows[r] AND up[r-c+7] AND down[r+c] THEN rows[r] := FALSE; up[r-c+7] := FALSE; down[r+c] := FALSE; x[c] := r; IF c = 7 THEN print(); ELSE queens (c+1); END; rows[r] := TRUE; up[r-c+7] := TRUE; down[r+c] := TRUE; END; END; END; BEGIN queens(0); END;