tozeck0(n) = { for (i=0, oo, if (n<=fibonacci(2+i), my (v=0, f); forstep (j=i, 0, -1, if (n>=f=fibonacci(2+j), n-=f; v+=2^j;); if (n==0, return (v););););); } cache = [tozeck0(1)] tozeck(n) = { while (#cache < n, cache = concat(cache, apply (tozeck0, [#cache+1..2*#cache])); ); cache[n]; } s = 0 unseen = 1 seen(v) = bittest(s, v) see(v) = s = bitor(s, 2^v); while (seen(unseen), unseen++) other(p) = { see(p); my (zp = tozeck(p)); for (v = unseen, oo, if (!seen(v) && bitand(zp, tozeck(v))!=0, return (v); ); ); } a = vector(10 000) u = 1 { for (n = 1, oo, v = if (n==1, unseen, other(v)); if (v <= #a, a[v] = n; while (a[u], print (u " " a[u]); if (u++ > #a, break (2); ); ); ); ); } quit