#include <bits/stdc++.h>
using namespace std;
int n;
int t[20][20];
map<int, int> cnt[20][20];
long long ans = 0;
void dfs_first(int i, int j, int x) {
if (i + j == n - 1) {
cnt[i][j][x]++;
return;
}
if (i + 1 < n) dfs_first(i + 1, j, x ^ t[i][j]);
if (j + 1 < n) dfs_first(i, j + 1, x ^ t[i][j]);
}
void dfs_second(int i, int j, int x) {
if (i + j == n - 1) {
if (cnt[i][j].count(x ^ t[i][j]))
ans += cnt[i][j][x ^ t[i][j]];
return;
}
if (i - 1 >= 0) dfs_second(i - 1, j, x ^ t[i][j]);
if (j - 1 >= 0) dfs_second(i, j - 1, x ^ t[i][j]);
}
int main() {
cin >> n;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
cin >> t[i][j];
dfs_first(0, 0, 0);
dfs_second(n - 1, n - 1, 0);
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuOwppbnQgdFsyMF1bMjBdOwptYXA8aW50LCBpbnQ+IGNudFsyMF1bMjBdOwpsb25nIGxvbmcgYW5zID0gMDsKdm9pZCBkZnNfZmlyc3QoaW50IGksIGludCBqLCBpbnQgeCkgewogICAgaWYgKGkgKyBqID09IG4gLSAxKSB7CiAgICAgICAgY250W2ldW2pdW3hdKys7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKGkgKyAxIDwgbikgZGZzX2ZpcnN0KGkgKyAxLCBqLCB4IF4gdFtpXVtqXSk7CiAgICBpZiAoaiArIDEgPCBuKSBkZnNfZmlyc3QoaSwgaiArIDEsIHggXiB0W2ldW2pdKTsKfQp2b2lkIGRmc19zZWNvbmQoaW50IGksIGludCBqLCBpbnQgeCkgewogICAgaWYgKGkgKyBqID09IG4gLSAxKSB7CiAgICAgICAgaWYgKGNudFtpXVtqXS5jb3VudCh4IF4gdFtpXVtqXSkpCiAgICAgICAgICAgIGFucyArPSBjbnRbaV1bal1beCBeIHRbaV1bal1dOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChpIC0gMSA+PSAwKSBkZnNfc2Vjb25kKGkgLSAxLCBqLCB4IF4gdFtpXVtqXSk7CiAgICBpZiAoaiAtIDEgPj0gMCkgZGZzX3NlY29uZChpLCBqIC0gMSwgeCBeIHRbaV1bal0pOwp9CmludCBtYWluKCkgewogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47ICsraikKICAgICAgICAgICAgY2luID4+IHRbaV1bal07CiAgICBkZnNfZmlyc3QoMCwgMCwgMCk7CiAgICBkZnNfc2Vjb25kKG4gLSAxLCBuIC0gMSwgMCk7IAogICBjb3V0IDw8IGFucyA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0=