/*
二分搜索出一个01段或10即可
先用n个0确定1的个数num
然后测试区间[l,mid]是否全是0或全是1
如果是,则l=mid,否则r=mid,直到l+1==r
然后再测试l是1还是r是1
如何判定[l,mid]是否全是0或1,将这一段变成1进行询问,如果结果=num+len或者结果=num-len,那么就是全0|1
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 1050
char s[maxn];
int n,num;
int query(char *str){
int res;
cout<<"? "<<str<<endl;
cin>>res;
return res;
}
int judge(int l,int mid){
for(int i=1;i<=n;i++)s[i]='0';
for(int i=l;i<=mid;i++)s[i]='1';
int res=query(s+1),len=mid-l+1;
if(res==num+len||res==num-len)return 0;
return 1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)s[i]='0';
num=query(s+1);
int l=1,r=n,mid;
while(l+1<r){
int mid=l+r>>1;
if(judge(l,mid))//如果[l,mid]区间有0|1
r=mid;
else l=mid;
}
for(int i=1;i<=n;i++)
s[i]='0';s[l]='1';
int tmp=query(s+1);
if(tmp>num)//l位置是0
cout<<"! "<<l<<" "<<r<<endl;
else cout<<"! "<<r<<" "<<l<<endl;
}