package work2;
import java.util.*;
public class nqueen {
int n;
int x[];
int sum;
public nqueen(int n) {
this.n=n;
sum=0;
x=new int[n+1];
for(int i=1;i<=n;i++) {
x[i]=i;
}
}
public void Swap(int[] x,int i,int j){
int temp=x[i];
x[i]=x[j];
x[j]=temp;
}
public boolean Place(int k) {
for(int j=1;j<k;j++) {
if(Math.abs(k-j)==Math.abs(x[k]-x[j])) {
return false;
}
}
return true;
}
public void Backtrack(int t) {
if(t>n) {
sum++;
}else {
for(int j=t;j<=n;j++) {
Swap(x,j,t);
if(Place(t)) {
Backtrack(t+1);
}
Swap(x,j,t);
}
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
nqueen q=new nqueen(n);
q.Backtrack(1);
System.out.println("sum:"+q.sum);
}
}