can add(x,y) = { for (r=2, oo, if (x==0 || y==0, return (1), floor(x)+floor(y)>=r-1, return (0), x=frac(x)*r; y=frac(y)*r; ); ); } { print (k++ " " 1); tot = 0; while (1, rem = 1-tot; for (n=max(2, floor(1/rem)), oo, if (can add(tot, 1/n), tot+=1/n; print (k++ " " n); break; ) ) ) } quit