\\ 1's and 2's, initial term v0 kolakoski(p, v0, mx=oo) = { my (s=vector(min(vecsum(p)+1,mx)), n=0, v=v0); for (i=1, #p, for (j=1, p[i], s[n++] = v; if (n==#s, return (s); ); ); v = 3-v; ); s[n++] = v; return (s); } \\ 1s, 2s, 3s, etc. golomb(p, mx=oo) = { my (s=vector(min(vecsum(p)+1,mx)), n=0, v=1); for (i=1, #p, for (j=1, p[i], s[n++] = v; if (n==#s, return (s); ); ); v++; ); s[n++] = v; return (s); } a = []; mx = 10 000; while (#a < mx, a = kolakoski(golomb(a, mx), 1, mx)); for (n=1, #a, print (n " " a[n])) quit