#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;
}