#include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <math.h> #include <string.h> #include <iostream> #include <string> #include <time.h> #include <queue> #include <list> #include <map> #include <set> #include <vector> #include <stack> #include <bitset> using namespace std; const long long N=3e5+5; int n,a[50],b[50],c[50],ans[50],sum;//a标记列,b,c标记对角线 void dfs(int i){ int j; if(i>n){ sum++; if(sum>3) return ; else { for(int m=1;m<n;m++){ printf("%d ",ans[m]); } cout<<ans[n]<<endl;; } } for(j=1;j<=n;j++){ if(a[j]==0 && b[i+j]==0 && c[i-j+n]==0 ) { ans[i]=j;//标记 a[j]=1; b[j+i]=1; c[i-j+n]=1; dfs(i+1);//搜索下一行 a[j]=0;//回溯 b[i+j]=0; c[i-j+n]=0; } } } int main() { cin>>n; dfs(1); cout<<sum<<endl; return 0; }