first(n) = {n++; res = vector(n); for(i = 0, n, sol([i, 0, 0], n, 1); ); for(i = 1, #res - 1, res[i + 1] += res[i]); res } sol(v, n, u) = { s = sum(i = 1, #v, v[i] ^ 3); if(u < 3, for(i = v[u], sqrtnint(n ^ 3 - s, 3), cv = v; v[u+1] = i; sol(v, n, u+1) ) , l = sqrtnint(s, 3); if(l ^ 3 < s, l++); if(l + 1 <= #res, res[l + 1] += qperms(v); ) ) } addhelp(qperms, "number of permutations elements in vector v, assumes sorted v.") qperms(v) = {my(r=1,t); for(i=1,#v-1,if(v[i]==v[i+1],t++,r*=binomial(i,t+1);t=0));r*=binomial(#v,t+1)}