#include <iostream>
#include <string>
#include <vector>
#include <map>

using namespace std;

map <pair <int, int>, int> mp;

int n;
vector <int> vec;

bool f[3013];
int zap(int l, int r) {
	int out;
	if (mp[make_pair(l, r)] == 0) {
		cout << "? " << l + 1 << " " << r + 1 << endl;
		cout.flush();
		cin >> out;
		mp[make_pair(l, r)] = out;
	}
	else {
		out = mp[make_pair(l, r)];
	}
	return out;
}
int main() {

	int out = 0;
	cin >> n;

	int ind = 0;

	while (ind < n) {
		int l = 0, r = n - ind;
		while (l < r - 1) {
			int m = (l + r) / 2;
			int z = zap(ind, ind + m);
			if (z == 1) {
				l = m;
			}
			else {
				r = m;
			}
		}

		vec.push_back(l + 1);
		ind = ind + l + 1;
	}

	cout << "Ready!" << endl << (vec.size() >= 2) + 1 << endl;

	for (int i = 0; i < vec.size(); i++) {
		for (int j = 0; j < vec[i]; j++) {
			cout << (i % 2) + 1 << " ";
		}
	}
	cout << endl;
	cout.flush();
	return 0;
}