first(n) = {n = max(n, 4); my(v = vector(100), res = vector(n), maxused = 4); for(i = 1, 4, res[i] = i; v[i] = 1); for(i = 5, n, s = 0; forvec(x = vector(2, j, [i-3, i-1]), s+=(gcd(res[x[1]], res[x[2]]) != 1); , 2 ); target = 1-s; proceed = 1; if(2*maxused > #v, v = concat(v, vector(2*maxused - #v)); ); for(j = 1, #v, if(proceed = 0, next(2)); if(v[j] == 0, s = 0; for(k = i-3, i-1, s+=(gcd(j, res[k]) != 1); ); if(s == target, res[i] = j; v[j] = 1; maxused = max(maxused, j); proceed = 0; next(2); ) ) ); ); res }