#include <cstdio>
#include <bitset>
using namespace std;
const int n = 20;
bitset < n > bit[n][n], invbit[n][n];
int id[n][n], idx[n * n], idy[n * n];
int main() {
for (int i = 0; i < n; i++) {
bit[0][i][i] = 1;
}
for (int i = 1; i < n; i++) {
for (int j = 0; j < n - i; j++) {
bit[i][j] = bit[i - 1][j] ^ bit[i - 1][j + 1];
}
}
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++) {
invbit[i][j] = ~bit[i][j];
id[i][j] = cnt;
idx[cnt] = i;
idy[cnt] = j;
cnt++;
}
}
long long ans = 0;
for (int p1 = 0; p1 < cnt; p1++) {
for (int p2 = p1 + 1; p2 < cnt; p2++) {
for (int p3 = p2 + 1; p3 < cnt; p3++) {
for (int p4 = p3 + 1; p4 < cnt; p4++) {
bitset < n > & bp1 = bit[idx[p1]][idy[p1]];
bitset < n > & bp2 = bit[idx[p2]][idy[p2]];
bitset < n > & bp3 = bit[idx[p3]][idy[p3]];
bitset < n > & bp4 = bit[idx[p4]][idy[p4]];
bitset < n > & ibp1 = invbit[idx[p1]][idy[p1]];
bitset < n > & ibp2 = invbit[idx[p2]][idy[p2]];
bitset < n > & ibp3 = invbit[idx[p3]][idy[p3]];
bitset < n > & ibp4 = invbit[idx[p4]][idy[p4]];
if ((bp1 & bp2 & bp3 & ibp4).count() != 0) {
continue;
}
if ((bp1 & bp2 & ibp3 & bp4).count() != 0) {
continue;
}
if ((bp1 & ibp2 & bp3 & bp4).count() != 0) {
continue;
}
if ((ibp1 & bp2 & bp3 & bp4).count() != 0) {
continue;
}
if ((ibp1 & ibp2 & ibp3 & bp4).count() != 0) {
continue;
}
if ((ibp1 & ibp2 & bp3 & ibp4).count() != 0) {
continue;
}
if ((ibp1 & bp2 & ibp3 & ibp4).count() != 0) {
continue;
}
if ((bp1 & ibp2 & ibp3 & ibp4).count() != 0) {
continue;
}
ans++;
}
}
}
}
printf("%lld", ans);
return 0;
}