W = 141 T = matrix(W,W) nb = vector(W) s = vector(W) rem = W^2 grind(k, from, to) = { if (k<=W, while (from <= to, if (to >= s[k]+1, \\ take next value v my (v=max(from, s[k]+1)); if (from <= v-1, grind(k+1, from, v-1); ); if (nb[k]++<=W, T[nb[k], k] = v; rem--; if (rem==0, m=0; for (d=1, W, for (k=1, d, print (m++ " " T[d+1-k, k]); ); ); quit; ); ); s[k] += v; from = v+1, \\ pass to next column grind(k+1, from, to); break; ) ) ) } grind(1, 1, oo) quit