#abc271f. [abc271_f]XOR on Grid Path

[abc271_f]XOR on Grid Path

问题描述

有一个 NNNN 列的方格网。我们用 (i,j)(i, j) 表示从上往下数的第 ii(1iN)(1 \leq i \leq N)、从左往右数的第 jj(1jN)(1 \leq j \leq N) 的方格。
方格 (i,j)(i, j) 上有一个非负整数 ai,ja_{i, j}

当你在方格 (i,j)(i, j) 时,你可以移动到方格 (i+1,j)(i+1, j) 或者 (i,j+1)(i, j+1)。这里,你不能移出方格网。

找出从方格 (1,1)(1, 1) 到方格 (N,N)(N, N) 的路径数量,使得所经过的方格上的整数(包括 (1,1)(1, 1)(N,N)(N, N))的异或和为 00

什么是异或和?两个整数 aabb 的异或和 aba \oplus b 定义如下。

  • aba \oplus b 的二进制表示中,对于 2k2^k 位(k0k \geq 0),如果 aabb 的二进制表示中只有一个是 11,那么该位为 11,否则为 00

例如,35=63 \oplus 5 = 6(二进制表示:011101=110011 \oplus 101 = 110)。
一般地,kk 个整数 p1,,pkp_1, \dots, p_k 的异或和定义为 (((p1p2)p3)pk)(\cdots ((p_1 \oplus p_2) \oplus p_3) \oplus \cdots \oplus p_k)。我们可以证明它与 p1,,pkp_1, \dots, p_k 的顺序无关。

约束条件

  • 2N202 \leq N \leq 20
  • 0ai,j<230(1i,jN)0 \leq a_{i, j} < 2^{30} \, (1 \leq i, j \leq N)
  • 输入中的所有值都是整数。

输入

输入使用以下格式从标准输入给出:

NN a1,1a_{1, 1} \ldots a1,Na_{1, N} \vdots aN,1a_{N, 1} \ldots aN,Na_{N, N}

输出

输出答案。


示例输入 1

3
1 5 2
7 0 5
4 2 3

示例输出 1

满足条件的两条路径如下:

  • (1,1)(1,2)(1,3)(2,3)(3,3)(1, 1) \rightarrow (1, 2) \rightarrow (1, 3) \rightarrow (2, 3) \rightarrow (3, 3);
  • (1,1)(2,1)(2,2)(2,3)(3,3)(1, 1) \rightarrow (2, 1) \rightarrow (2, 2) \rightarrow (2, 3) \rightarrow (3, 3).

示例输入 2

2
1 2
2 1

示例输出 2


示例输入 3

10
1 0 1 0 0 1 0 0 0 1
0 0 0 1 0 1 0 1 1 0
1 0 0 0 1 0 1 0 0 0
0 1 0 0 0 1 1 0 0 1
0 0 1 1 0 1 1 0 1 0
1 0 0 0 1 0 0 1 1 0
1 1 1 0 0 0 1 1 0 0
0 1 1 0 0 1 1 0 1 0
1 0 1 1 0 0 0 0 0 0
1 0 1 1 0 0 1 1 1 0

示例输出 3

24307