s = 0 seen(v) = bittest(s, v) see(v) = s = bitor(s, 2^v) T = vector(1911) n = 0 m = -1 emit(t) = { if (n++ <= #T, T[n] = t; ); for (k = 1, #t, if (!seen(t[k]), see(t[k]); print (m++ " " t[k]); ); ); } { emit([0, 1]); for (k = 1, #T, my (t = T[k]); if (#t > 1, emit(2*t[2..#t]); ); emit(concat( [2*t[1]+0, 2*t[1]+1], [2*v+1 | v <- t[2..#t]] )); ); } quit