#include #include #include #define WIDTH 10000 #define HEIGHT 20000 bool seen [1+HEIGHT]; bool aligned[1+WIDTH][1+HEIGHT]; int a [1+WIDTH]; int gcd(int a, int b) { while (a != 0) { int c = a; a = b%a; b = c; } return (b<0) ? -b : +b; } int compute(int n) { int c = 1; while (seen[c] || aligned[n][c]) { c++; if (c>HEIGHT) { exit(0); } } a[n] = c; seen[a[n]] = true; for (int i=1; i WIDTH) { break; } na += da; if (na < 1 || na > HEIGHT) { break; } aligned[nn][na] = true; } } return a[n]; } int main() { memset(seen, 0, sizeof(seen)); memset(aligned, 0, sizeof(aligned)); memset(a, 0, sizeof(a)); for (int n=1; n<=WIDTH; n++) { printf("%d %d\n", n, compute(n)); fflush(stdout); } return 0; }