#include <stdio.h> #include <string.h> #define MAX 20241LL bool ok[MAX]; void test(long long x, long long y, long long z) { long long k = x*x*x + y*y*y + z*z*z; long long n2 = x*x + y*y + z*z; if (k>=0 && k<MAX && n2<=k) { ok[k] = true; } } int main() { memset(ok, 0, sizeof(ok)); for (long long x=0; x*x<MAX; x++) { for (long long y=0; x*x+y*y<MAX; y++) { for (long long z=0; x*x+y*y+z*z<MAX; z++) { test(+x,+y,+z); test(+x,+y,-z); test(+x,-y,+z); test(+x,-y,-z); test(-x,+y,+z); test(-x,+y,-z); test(-x,-y,+z); test(-x,-y,-z); } } } long long n = 0; for (long long k=0; k<MAX; k++) { if (ok[k]) { printf("%lld %lld\n", ++n, k); fflush(stdout); } } }