#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
class Nqueen
{
public:
long NQueen()
{
cout<<"请输入皇后个数!"<<endl;
cin>>n;
sum = 0;
a.reserve(n+1);
init();
backtrack(1);
return sum;
}
private:
bool place(int k)
{
for(int j = 1;j<k;j++)
if((abs(k-j) == abs(a[k]-a[j]))||(a[k] == a[j])) return false;
return true;
}
void print()
{
for(int i = 1;i<= n;i++)
{cout<<a[i]<<" ";}
cout<<endl;
}
void init()
{
for(int i = 0;i<= n;i++)
a[i] = 0;
}
void backtrack(int t)
{
if(t>n)
{ sum++;
print();
}
else
for(int i = 1;i<=n;i++)
{
a[t] = i;
if(place(t))
backtrack(t+1);
}
}
vector<int> a;
int n;
long sum;
};
int main()
{
Nqueen q;
cout<<q.NQueen()<<endl;
}