#include <iostream> #include <unordered_map> using namespace std; unordered_map<long long, long long> pos; #define MAX 1000 long long twice[MAX]; long long u = 0; int main() { for (long long n=0; n<MAX; n++) { twice[n] = -1; } twice[1]=0; // never occurs long long v=0; for (long long n=1; u<MAX; n++) { long long w=v; if (pos.count(w)) { v=n-pos[w]; } else { v=0; } pos[w] = n; if (w==v && w<MAX && twice[w]<0) { twice[w] = n+1; while (u<MAX && twice[u]>=0) { cout << u << ' ' << twice[u] << endl; u++; } } } return 0; }