allocate mem(2^32) { a = vector(2^13); u = 0; ord = [0]; for (n=1, oo, if (n==1, v = 0, v = bitxor(v, ord[1+v]-1); ); while (#ord < 1+v, ord = concat(ord, vector(#ord)); ); ord[1+v]++; if (1+v<=#a && !a[1+v], a[1+v] = n; while (a[1+u]>0, print (u " " a[1+u]); if (1+u==#a, break (2), u++; ); ); ); ); } quit