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<iostream>
#include<iomanip>
#include<cassert>
#include<stdexcept>
#include<utility>
#include<functional>
#include<numeric>
#include<cmath>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<array>
#include<stack>
#include<queue>
#include<deque>
#include<vector>
#include<complex>
#include<set>
#include<map>
#include<unordered_map>
#include<unordered_set>
#include<string>
#include<bitset>
#include<memory>
using namespace std;
using ll=long long;

string quest(vector<int> vec){
    cout<<"? ";
    for(auto v:vec) cout<<v+1<<" ";
    cout<<endl;
    string res;
    cin>>res;
    return res;
}
string query(int x,int y,int a=0,int b=0,int plus=-1){
    vector<int> vec;
    for(int i=x;i<y;i++) vec.push_back(i);
    for(int i=a;i<b;i++) vec.push_back(i);
    if(plus!=-1) vec.push_back(plus);
    return quest(vec);
}

string query3(int x,int y,int plus,int minus){
    vector<int> vec;
    for(int i=x;i<y;i++) if(i!=minus) vec.push_back(i);
    vec.push_back(plus);
    return quest(vec);
}
int main(){
    int N;
    cin>>N;

    vector<string> ans(2*N);

    string prev=query(0,N);
    int lb=0;
    int ub=N;
    while(ub-lb>1){
        int mid=(lb+ub)/2;
        if(query(0,N-mid,2*N-mid,2*N)==prev) lb=mid;
        else ub=mid;
    }
    int i=ub;
    
    int tar=-1;
    for(int j=N-i;j<2*N-i;j++){
        ans[j]=query(0,N-i,2*N-i+1,2*N,j);
        if(ans[j]==prev){
            tar=j;
        }
    }
            
    for(int j=0;j<N-i;j++){
        ans[j]=query3(N-i,2*N-i,j,tar);
    }
    for(int j=2*N-i;j<2*N;j++){
        ans[j]=query3(N-i,2*N-i,j,tar);
    }
    cout<<"! ";
    for(int i=0;i<2*N;i++){
        cout<<ans[i][0];
    }
    cout<<endl;
    
    return 0;
}