问题描述
有一个 N 行 N 列的方格网。我们用 (i,j) 表示从上往下数的第 i 行 (1≤i≤N)、从左往右数的第 j 列 (1≤j≤N) 的方格。
方格 (i,j) 上有一个非负整数 ai,j。
当你在方格 (i,j) 时,你可以移动到方格 (i+1,j) 或者 (i,j+1)。这里,你不能移出方格网。
找出从方格 (1,1) 到方格 (N,N) 的路径数量,使得所经过的方格上的整数(包括 (1,1) 和 (N,N))的异或和为 0。
什么是异或和?两个整数 a 和 b 的异或和 a⊕b 定义如下。
- 在 a⊕b 的二进制表示中,对于 2k 位(k≥0),如果 a 和 b 的二进制表示中只有一个是 1,那么该位为 1,否则为 0。
例如,3⊕5=6(二进制表示:011⊕101=110)。
一般地,k 个整数 p1,…,pk 的异或和定义为 (⋯((p1⊕p2)⊕p3)⊕⋯⊕pk)。我们可以证明它与 p1,…,pk 的顺序无关。
约束条件
- 2≤N≤20
- 0≤ai,j<230(1≤i,j≤N)
- 输入中的所有值都是整数。
输入
输入使用以下格式从标准输入给出:
N
a1,1 … a1,N
⋮
aN,1 … aN,N
输出
输出答案。
示例输入 1
示例输出 1
满足条件的两条路径如下:
- (1,1)→(1,2)→(1,3)→(2,3)→(3,3);
- (1,1)→(2,1)→(2,2)→(2,3)→(3,3).
示例输入 2
示例输出 2
示例输入 3
示例输出 3