//递归法。所幸规模小。 #include <stdio.h> int n; int sum=0; int lie[14]={0}; int zh[14]={0}; int zzx[30]={0}; int zfx[30]={0}; void try(int i) { if(i>n) { if(sum<3) { int s; for(s=1;s<n;s++) printf("%d ",lie[s]); printf("%d\n",lie[s]); } sum++; } else { int r; for(r=1;r<=n;r++) if(zh[r]==0&&zzx[i+r]==0&&zfx[i-r+n]==0) { lie[i]=r; zh[r]=1; zzx[i+r]=1; zfx[i-r+n]=1; try(i+1); zh[r]=0; zzx[i+r]=0; zfx[i-r+n]=0; } } }
int main()
{
scanf("%d",&n);
try(1);
printf("%d",sum);
return 0;
}