#include <stdio.h>
#include <stdlib.h>
long sum = 0, upperlim = 1;
void test(long row, long ld, long rd)
{
if (row != upperlim)
{
long pos = upperlim & ~(row | ld | rd);
while (pos)
{
long p = pos & -pos;
pos -= p;
test(row + p, (ld + p) << 1, (rd + p) >> 1);
}
} else
sum++;
}
int main(int argc, char *argv[])
{
int n;
scanf("%d",&n);
if (argc != 1)
n = atoi(argv[1]);
upperlim = (upperlim << n) - 1;
test(0, 0, 0);
printf("%d", sum);
return 0;
}
#include <stdlib.h>
long sum = 0, upperlim = 1;
void test(long row, long ld, long rd)
{
if (row != upperlim)
{
long pos = upperlim & ~(row | ld | rd);
while (pos)
{
long p = pos & -pos;
pos -= p;
test(row + p, (ld + p) << 1, (rd + p) >> 1);
}
} else
sum++;
}
int main(int argc, char *argv[])
{
int n;
scanf("%d",&n);
if (argc != 1)
n = atoi(argv[1]);
upperlim = (upperlim << n) - 1;
test(0, 0, 0);
printf("%d", sum);
return 0;
}