Problem: This is an interactive task.

We have 2N balls arranged in a row, numbered 1, 2, 3, ..., 2N from left to right, where N is an odd number. Among them, there are N red balls and N blue balls.

While blindfolded, you are challenged to guess the color of every ball correctly, by asking at most 210 questions of the following form:

* You choose any N of the 2N balls and ask whether there are more red balls than blue balls or not among those N balls.



Now, let us begin.

Constraints

* 1 \leq N \leq 99
* N is an odd number.



* * *



Example

Input




Output

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
#define st first
#define nd second
#define mp make_pair
#define pb push_back
#define sol (k+k)
#define sag (k+k+1)
#define orta ((bas+son)/2)
#define coc g[node][i]
#define mod 1000000007
#define inf 1000000009
#define N 1000005
using namespace std;

typedef long long ll;
typedef pair < int , int > ii;

int n, bas, a[N];
string ans, ilk;
char cvp[N];

string sor(int x){
	string cvp;
	cout << "? ";
	for(int i = x; i < x + n; i++)
		cout << i << " ";
	cout << endl;
	cin >> cvp;
	return cvp;
}

int main() {
	// freopen("in.txt", "r", stdin);
	// freopen("out.txt", "w", stdout);
	cin >> n;
	int bas = 1, son = n + 1;
	ans = sor(1);
	while(bas < son){
		if(sor(orta) != ans)
			son = orta;
		else
			bas = orta + 1;
	}
	// for(int i = n; i <= n + n; i++){
	// 	cout << "? ";
	// 	for(int j = i - n + 1; j <= i; j++)
	// 		cout << j << " ";
	// 	cout << endl;

	// 	cin >> ans;
	// 	if(ilk.empty()){
	// 		ilk = ans;
	// 		continue;
	// 	}
	// 	if(ans != ilk){
	// 		bas = i - n + 1;
	// 		break;
	// 	}
	// }
	for(int i = 1; i <= n+n; i++){
		if(i >= bas and i < bas + n){
			cout << "? ";
			for(int j = 1; j <= n+n; j++)
				if( !(j >= bas-1 and j < bas + n) )
					cout << j << " ";
			cout << i << endl;
			cin >> ans;
			cvp[i] = ans[0];
		} else{
			cout << "? ";
			for(int j = bas; j < bas + n - 1; j++)
				cout << j << " ";
			cout << i << endl;
			cin >> ans;
			cvp[i] = ans[0];
		}
	}
	cout << "! ";
	for(int i = 1; i <= n + n; i++)
		cout << cvp[i];
	return 0;
}