#COMPILE EXE #DIM ALL FUNCTION PBMAIN () AS LONG LOCAL n, i, j, k, p, q AS INTEGER LOCAL m AS QUAD IF COMMAND$(1) <> "" THEN n = VAL(COMMAND$(1)) REDIM a(1 TO n) AS INTEGER REDIM s(1 TO n) AS INTEGER REDIM u(1 TO 2 * n - 1) AS INTEGER REDIM v(1 TO 2 * n - 1) AS INTEGER FOR i = 1 TO n a(i) = i NEXT FOR i = 1 TO 2 * n - 1 u(i) = 1 v(i) = 1 NEXT m = 0 i = 1 1 IF i > n THEN INCR m FOR k = 1 TO n : PRINT a(k); : NEXT : PRINT GOTO 4 END IF j = i 2 k = a(j) p = i - k + n q = i + k - 1 IF u(p) AND v(q) THEN u(p) = 0 : v(q) = 0 a(j) = a(i) : a(i) = k s(i) = j INCR i GOTO 1 END IF 3 INCR j : IF j <= n GOTO 2 4 DECR i : IF i = 0 THEN PRINT m : EXIT FUNCTION j = s(i) k = a(i) : a(i) = a(j) : a(j) = k p = i - k + n q = i + k - 1 u(p) = 1 : v(q) = 1 GOTO 3 END IF END FUNCTION