#include<iostream>
using namespace std;
int n;
int a20,b20;//a自西向东的靶数,b自北向南的靶数
int arr2020;//格子
int vis2020;//标记是否访问过
int top;//栈顶
int stack20;//存储路线的栈
int dx4={1,0,-1,0};//下左上右
int dy4={0,-1,0,1};//下左上右
bool check(){//检查靶子
for(int i=0;i<n;i++){
if(ai!=0||bi!=0){
return false;
}
}
return true;
}
void dfs(int x,int y,int step){
if(ay<0||bx<0){
return;
}
if(x==n-1&&y==n-1){//终止条件,到达最后一个格子
if(check()){
for(int i=0;i<top;i++){
cout<<stacki<<" ";
}
cout<<endl;
}
return;
}
for(int i=0;i<4;i++){
int tx,ty;
tx=x+dxi;
ty=y+dyi;
if(tx>=0&&tx<n&&ty>=0&&ty<n&&vistxty==0){
vistxty=1;
stacktop++=arrtxty;
aty--;
btx--;
dfs(tx,ty,step+1);
aty++;
btx++;
top--;//出栈
vistxty=0;
}
}
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>ai;
}
for(int i=0;i<n;i++){
cin>>bi;
}
for(int i=0,k=0;i<n;i++){
for(int j=0;j<n;j++){
arrij=k++;//为每个格子分配编号
}
}
vis00=1;
stack0=arr00;
top=1;
a0--;
b0--;
dfs(0,0,1);
return 0;
}