#define N 6
void Row(int y);
int Counter;
int Solution[N];
int ListElement[1000][N];
void CheckUniqueSolution(void)
{
int i,j,s;
int chk[7];
for(j=0; j<Counter; j++)
{
for(i=0;i<7;i++) chk[i]=0;
for(i=0; i<N; i++)
{
s=Solution[i];
if(s==ListElement[j][N-1-i]) chk[0]++;
if(N-1-s==ListElement[j][i]) chk[1]++;
if(N-1-s==ListElement[j][N-1-i]) chk[2]++;
if(i==ListElement[j][s]) chk[3]++;
if(i==ListElement[j][N-1-s]) chk[4]++;
if(N-1-i==ListElement[j][s]) chk[5]++;
if(N-1-i==ListElement[j][N-1-s]) chk[6]++;
}
for(i=0;i<7;i++) if(chk[i]==N) return;
}
for(i=0;i<N;i++)ListElement[Counter][i]=Solution[i];
Counter++;
}
int Check(int x, int y)
{
int i;
for(i=0; i<N; i++) if(Solution[i]>=0)
{
if(Solution[i]==x) return 0;
if((i==y-2)||(i==y+2))if((Solution[i]==x-1)||(Solution[i]==x+1))return 0;
if((i==y-1)||(i==y+1))if((Solution[i]==x-2)||(Solution[i]==x+2))return 0;
}
return 1;
}
void Row(int y)
{
int i, z;
for(i=0; i<N; i++)
{
for(z=y; z<N; z++) Solution[z]=-1;
if(Check(i,y))
{
Solution[y]=i;
if(y==N-1) CheckUniqueSolution();
else Row(y+1);
}
}
}
int main(void)
{
Counter=0;
Row(0);
return 0;
}
I2RlZmluZSBOICAgNgoKdm9pZCBSb3coaW50IHkpOwoKaW50IENvdW50ZXI7CmludCBTb2x1dGlvbltOXTsKaW50IExpc3RFbGVtZW50WzEwMDBdW05dOwoKdm9pZCBDaGVja1VuaXF1ZVNvbHV0aW9uKHZvaWQpCnsKICBpbnQgaSxqLHM7CiAgaW50IGNoa1s3XTsKICAKICBmb3Ioaj0wOyBqPENvdW50ZXI7IGorKykKICB7CiAgICBmb3IoaT0wO2k8NztpKyspIGNoa1tpXT0wOwogICAgZm9yKGk9MDsgaTxOOyBpKyspCiAgICB7CiAgICAgIHM9U29sdXRpb25baV07CiAgICAgIGlmKHM9PUxpc3RFbGVtZW50W2pdW04tMS1pXSkgY2hrWzBdKys7CiAgICAgIGlmKE4tMS1zPT1MaXN0RWxlbWVudFtqXVtpXSkgY2hrWzFdKys7CiAgICAgIGlmKE4tMS1zPT1MaXN0RWxlbWVudFtqXVtOLTEtaV0pIGNoa1syXSsrOwogICAgICBpZihpPT1MaXN0RWxlbWVudFtqXVtzXSkgY2hrWzNdKys7CiAgICAgIGlmKGk9PUxpc3RFbGVtZW50W2pdW04tMS1zXSkgY2hrWzRdKys7CiAgICAgIGlmKE4tMS1pPT1MaXN0RWxlbWVudFtqXVtzXSkgY2hrWzVdKys7CiAgICAgIGlmKE4tMS1pPT1MaXN0RWxlbWVudFtqXVtOLTEtc10pIGNoa1s2XSsrOwogICAgfQogICAgZm9yKGk9MDtpPDc7aSsrKSBpZihjaGtbaV09PU4pIHJldHVybjsKICB9CiAgZm9yKGk9MDtpPE47aSsrKUxpc3RFbGVtZW50W0NvdW50ZXJdW2ldPVNvbHV0aW9uW2ldOwogIENvdW50ZXIrKzsKfQoKaW50IENoZWNrKGludCB4LCBpbnQgeSkKewogIGludCBpOwogIAogICAgZm9yKGk9MDsgaTxOOyBpKyspIGlmKFNvbHV0aW9uW2ldPj0wKQogICAgewogICAgICBpZihTb2x1dGlvbltpXT09eCkgcmV0dXJuIDA7CiAgICAgIGlmKChpPT15LTIpfHwoaT09eSsyKSlpZigoU29sdXRpb25baV09PXgtMSl8fChTb2x1dGlvbltpXT09eCsxKSlyZXR1cm4gMDsKICAgICAgaWYoKGk9PXktMSl8fChpPT15KzEpKWlmKChTb2x1dGlvbltpXT09eC0yKXx8KFNvbHV0aW9uW2ldPT14KzIpKXJldHVybiAwOwogICAgfQogICAgcmV0dXJuIDE7Cn0KCnZvaWQgUm93KGludCB5KQp7CiAgICBpbnQgaSwgejsKICAgIAogICAgZm9yKGk9MDsgaTxOOyBpKyspCiAgICB7CiAgICAgIGZvcih6PXk7IHo8TjsgeisrKSBTb2x1dGlvblt6XT0tMTsKICAgICAgaWYoQ2hlY2soaSx5KSkKICAgICAgewogICAgICAgIFNvbHV0aW9uW3ldPWk7CiAgICAgICAgaWYoeT09Ti0xKSBDaGVja1VuaXF1ZVNvbHV0aW9uKCk7CiAgICAgICAgZWxzZSBSb3coeSsxKTsKICAgICAgfQogICAgfQp9CgppbnQgbWFpbih2b2lkKQp7CiAgICBDb3VudGVyPTA7CiAgICBSb3coMCk7CiAgICBwcmludGYoIlxuJWQiLCBDb3VudGVyKTsKICAgIHJldHVybiAwOwp9