RT
#include<bits/stdc++.h>
using namespace std;
string c;
int l,n,sum;
bool isok;
bool check(){ //检查是否符合条件
if(l!=n)
return false;
sum=0;
for(int i=0;i<l;i++)
if(c[i]=='1')
sum+=i+1;
return (sum==0||sum%(n+1)==0)?true:false;
}
void f1(){ //操作1
sum=0;
for(int i=0;i<l;i++) //计算位置号的和
if(c[i]=='1')
sum+=i+1;
for(int i=0;i<l;i++){ //替换1为0
if(c[i]=='1'&&(sum-i-1)%(n+1)==0){
c[i]='0';
cout<<c;
return;
}
}
isok=false; //标记不存在答案
return;
}
void f2(){ //操作2
int sum=0,fl=0,bs=0;
for(int i=0;i<l;i++) //计算位置号的和
if(c[i]=='1')
sum+=i+1,bs++; //记录1的数目
fl=bs;
for(int i=0;i<l;i++){ //在第i个元素前填入0
if((sum+fl)%(n+1)==0){
for(int j=0;j<i;j++)
cout<<c[j];
cout<<'0';
for(int j=i;j<n;j++)
cout<<c[j];
return;
}
if(c[i]=='1')fl--; //除去不受影响的1
}
if(sum==0||sum%(n+1)==0){ //特判需在最后填0
cout<<c<<'0';
return;
}
fl=bs;
for(int i=0;i<l;i++){ //在第i个元素前填入1
if((sum+fl+i+1)%(n+1)==0){
for(int j=0;j<i;j++)
cout<<c[j];
cout<<'1';
for(int j=i;j<l;j++)
cout<<c[j];
return;
}
if(c[i]=='1')fl--; //除去不受影响的1
}
if(sum==0||(sum+l)%(n+1)==0){ //特判需在最后填1
cout<<c<<'1';
return;
}
isok=false; //标记不存在答案
return;
}
void f3(){ //操作3
int sum=0,fl=0;
for(int i=0;i<l;i++) //计算位置号的和
if(c[i]=='1')
sum+=i+1,fl++; //记录1的数目
for(int i=0;i<l;i++){ //除去第i个元素
if(c[i]=='1'){ //除去1
fl--;
if((sum-i-1-fl)%(n+1)==0){
for(int j=0;j<i;j++)
cout<<c[j];
for(int j=i+1;j<l;j++)
cout<<c[j];
return;
}
}else{ //除去0
if((sum-fl)%(n+1)==0){
for(int j=0;j<i;j++)
cout<<c[j];
for(int j=i+1;j<l;j++)
cout<<c[j];
return;
}
}
}
isok=false; //标记不存在答案
return;
}
int main(){
//freopen("a.in","r",stdin);
cin>>n;
while(cin>>c){
isok=true; //标记变量初始化
l=c.length();
if(!check()){ //根据长度判断操作种类
if(l==n) f1();
else if(l==n-1) f2();
else if(l==n+1) f3();
else cout<<-1;
if(!isok)cout<<-1; //没答案输出-1
}else cout<<c; //符合条件直接输出
cout<<endl;
}
return 0;
}