#include <iostream>
#include <unordered_set>
using namespace std;

int main() {
	unordered_set<long long> powersOf2;
	long long max2;	// greatest power of 2 representable as long long
	for (long long p=1; p>0; p*=2) {
		powersOf2.insert(max2=p);
	}

	long long k=0;
	long long pp, p, v=0;
	for (long long n=0; v!=max2; n++) {
		switch (n) {
			case 0:
			case 1:
				v = n;
				break;

			default:
				v = (pp+p+1) & ~p;
				break;
		}

		if (powersOf2.count(v)) {
			cout << ++k << ' ' << n << endl;
		}

		pp = p;
		p = v;
	}

	return 0;
}