#include <stdio.h>
int n,cnt;
int map[16];
if(a<0){
a=0-a;
}
return a;
}
int check(int a){ //check
int i;
int result=1;
for(i=0; i<n; i++){
if(a==i){
break;
}
if(map
[i
]==map
[a
]||abs(i
-a
)==abs(map
[i
]-map
[a
])){ result=0;
break;
}
}
return result;
}
void dfs(int a){ //dfs..
int i;
if(a==n){
cnt++;
return;
}
for(i=0;i<n;i++){
map[a]=i;
if(check(a)==1){
dfs(a+1);
}
}
}
int main()
{
cnt=0;
dfs(0);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbixjbnQ7CmludCBtYXBbMTZdOwoKaW50IGFicyhpbnQgYSl7CiBpZihhPDApewogIGE9MC1hOwogfQogIHJldHVybiBhOwp9CgppbnQgY2hlY2soaW50IGEpewkJCS8vY2hlY2sKIGludCBpOwogaW50IHJlc3VsdD0xOwogCiBmb3IoaT0wOyBpPG47IGkrKyl7CiAKIGlmKGE9PWkpewoJCWJyZWFrOwoJfQogIGlmKG1hcFtpXT09bWFwW2FdfHxhYnMoaS1hKT09YWJzKG1hcFtpXS1tYXBbYV0pKXsKIAlyZXN1bHQ9MDsKICAgYnJlYWs7CiAgfQogfQogcmV0dXJuIHJlc3VsdDsKfQoKIAoKdm9pZCBkZnMoaW50IGEpewkJCS8vZGZzLi4KIGludCBpOwoKIGlmKGE9PW4pewogIGNudCsrOwogIHJldHVybjsKIH0KIAogZm9yKGk9MDtpPG47aSsrKXsKICBtYXBbYV09aTsKIGlmKGNoZWNrKGEpPT0xKXsKICBkZnMoYSsxKTsKIH0KIH0KfQoKaW50IG1haW4oKQp7CiAgICBzY2FuZigiJWQiLCZuKTsKCWNudD0wOwogICAgZGZzKDApOwogICAgcHJpbnRmKCIlZFxuIixjbnQpOwp9Cg==