\\ how to combine successive terms f(u,v) = u+v L = []; u = 1; get(n) = { if (n<=#L, L[n], u + n - (#L+1) ); } merge(n) = { while (n+1 > #L, L = concat(L, u++-1); ); L = concat([L[1..n-1], [f(L[n], L[n+1])], L[n+2..#L]]); } { for (n=1, 10 000, at = 1; mx = f(get(1), get(2)); for (k=2, #L+1, s = f(get(k), get(k+1)); if (mx > s, mx = s; at = k; ); ); print (n " " mx); merge(at); ); } quit