vv = vector(200, n, [0]) nb = vector(#vv) explore(m, v, pi) = { if (v, if (nb[v]++ > #vv[v], vv[v] = concat(vv[v], vector(#vv[v])); ); vv[v][nb[v]] = m; ); while (1, my (w = v + if (pi, prime(pi), 1)); if (w > #vv, break; ); explore(m+2^pi, w, pi+1); pi++; ); } { explore(0,0,0); a = vector(10 000); u = 1; print ("0 0"); m = 0; for (n = 1, #vv, r = Set(vv[n][1..nb[n]]); for (k = 1, #r, m++; if (r[k] <= #a, a[r[k]] = m; while (a[u], print (u " " a[u]); if (u++ > #a, break (3); ); ); ); ); ); } quit