#include <iostream>
#include <vector>
using namespace std;
const int n = 4;
int col[n]; int diag1[2*n+1]; int diag2[2*n+1];
int ans = 0;
int count = 0;
void search(int y)
{
if (y == n)
{
ans++;
return;
}
for (int x = 0; x < n; x++)
{
if (col[x] || diag1[x + y] || diag2[x - y + n - 1])continue;
col[x] = diag1[x + y] = diag2[x - y + n - 1] = 1;
search(y + 1);
col[x] = diag1[x + y] = diag2[x - y + n - 1] = 0;
}
}
int main()
{
search(0);
cout << ans << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBuID0gNDsKaW50IGNvbFtuXTsgaW50IGRpYWcxWzIqbisxXTsgaW50IGRpYWcyWzIqbisxXTsKaW50IGFucyA9IDA7CmludCBjb3VudCA9IDA7Cgp2b2lkIHNlYXJjaChpbnQgeSkKewogICAgaWYgKHkgPT0gbikKICAgIHsKICAgICAgICBhbnMrKzsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBmb3IgKGludCB4ID0gMDsgeCA8IG47IHgrKykKICAgIHsKICAgICAgICBpZiAoY29sW3hdIHx8IGRpYWcxW3ggKyB5XSB8fCBkaWFnMlt4IC0geSArIG4gLSAxXSljb250aW51ZTsKICAgICAgICBjb2xbeF0gPSBkaWFnMVt4ICsgeV0gPSBkaWFnMlt4IC0geSArIG4gLSAxXSA9IDE7CiAgICAgICAgc2VhcmNoKHkgKyAxKTsKICAgICAgICBjb2xbeF0gPSBkaWFnMVt4ICsgeV0gPSBkaWFnMlt4IC0geSArIG4gLSAxXSA9IDA7CiAgICB9Cn0KCgppbnQgbWFpbigpCnsKICAgIHNlYXJjaCgwKTsKICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7Cn0=