#include #include #include #define MAX (1LL<<29) long long *ord = 0; int main() { ord = (long long*)malloc(MAX * sizeof(*ord)); memset(ord, 0, MAX * sizeof(*ord)); long long p = 1; long long z = 0; long long v = 0; for (long long n=1;; n++) { if (n==1) { v = 0; } else { v = (ord[v]-1) ^ v; } if (v==p) { printf("%lld %lld\n", z, n); fflush(stdout); z++; p*=2; } if (v>=MAX) { break; } else { ord[v]++; } } free(ord); return 0; }