#include<bits/stdc++.h>
using namespace std;
const int maxn=1000001;
int vis[2][maxn];
int c[maxn];
int tot=0,n;
void dfs(int cur){
if(cur>n){
if(tot<=2){
for(int i=1;i<=n;i++){
cout<<c[i]<<" ";
}
cout<<endl;
}
tot++;
}
else for(int i=1;i<=n;i++){
if(!vis[0][i]&&!vis[1][cur+i]&&!vis[2][cur-i+n]){
c[cur]=i;
vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=1;
dfs(cur+1);
vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=0;
}
}
return;
}
int main(){
cin>>n;
dfs(1);
cout<<tot;
return 0;
}
记录,不知道为啥会read 0