#include <bits/stdc++.h>
using namespace std;
int perform(int n, const vector<int>& active)
{
string bit(n,'0');
for(int idx : active)
{
if(idx>=0 && idx<n)
{
bit[idx]='1';
}
}
cout<<"? "<<bit<<endl;
int screams;
cin>>screams;
return screams;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin>>n;
int diff=0;
int bit=0;
while((1<<bit)<n)
{
bit++;
}
for(int k=0; k<bit; k++)
{
vector<int> test;
for(int i=0; i<n; i++)
{
if((i>>k) & 1)
{
test.push_back(i);
}
}
if(test.empty())
{
continue;
}
if(perform(n,test)%2!=0)
{
diff |= (1<<k);
}
}
int j=0;
while(!((diff>>j) & 1))
{
j++;
}
vector<int> candidates;
for(int i=0; i<n; i++)
{
if(!((i>>j) & 1))
{
candidates.push_back(i);
}
}
int low=0;
int high=(int)candidates.size()-1;
while(low<high)
{
int mid=(low+high)/2;
vector<int> first;
for(int i=0; i<=mid; i++)
{
first.push_back(candidates[i]);
}
if(perform(n,first)%2!=0)
{
high=mid;
}
else
{
low=mid+1;
}
}
int sa=candidates[low];
int sb=sa^diff;
cout<<"! "<<sa<<" "<<sb<<endl;
return 0;
}