Dim As Integer n, i, j, k, p, q Dim m As LongInt = 0 If Command(1) <> "" Then n = CInt(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 L1: If i > n Then m += 1 For k = 1 To n : Print a(k); : Next : Print Goto L4 End If j = i L2: 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 i += 1 Goto L1 End If L3: j += 1 : If j <= n Goto L2 L4: i -= 1 : If i = 0 Then Print m : End 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 L3 End If