#1410. 入门数学

入门数学

入门数学

题目描述

我们有一个nnmm列的矩阵AA,第ii行第jj列的数记作Ai,jA_{i,j}。同时给定了一个长度为mm的序列xx

定义一个长度为kk1kn1 \leq k \leq n)的整数序列pp是"好"的,当且仅当其满足如下条件:

  • 序列中每个数均满足1pin1 \leq p_i \leq n
  • iji \neq j,则pipjp_i \neq p_j
  • 1im\forall 1 \leq i \leq m,$A_{p_1,i} \oplus A_{p_2,i} \oplus \cdots \oplus A_{p_k,i} = x_i$(其中\oplus为一种位运算:&\&是与,|是或,\wedge是异或)。

现在给定AAxx以及\oplus,请你求出有多少满足条件的序列pp

两个序列不同,当且仅当它们的长度不同,或者存在一个位置不同。

这个答案可能很大,请你求出对109+910^{9}+9取模的结果。

输入格式

11行一个字符\oplus和两个整数nnmm,如题目中描述。

22n+1n+1行每行mm个数表示AA

n+2n+2mm个数表示xx

输出格式

输出一行一个整数表示答案。

数据范围与提示

本题采用子任务捆绑测试。对于每个子任务,你只有通过了这个子任务的所有测试点,才能获得这个子任务的分数。

  • 子任务111010分):nnm7m \leq 7
  • 子任务221010分):nnm10m \leq 10
  • 子任务3355分):=&\oplus = \&
  • 子任务4455分):=\oplus = |
  • 子任务5555分):=\oplus = \wedge
  • 子任务662020分):nnm15m \leq 15
  • 子任务773030分):nnm20m \leq 20
  • 子任务881515分):无特殊限制。

对于100%100\%的数据,1n1 \leq nm25m \leq 25Ai,jA_{i,j}xi{0,1}x_i \in \{0,1\}

样例

& 5 4
1 0 1 0 
1 1 1 0 
0 1 1 1 
0 1 1 0 
1 0 1 1 
0 1 1 0 
13
| 5 4
1 0 0 0 
0 0 0 1 
0 1 1 0 
0 1 0 1 
0 0 0 1 
0 1 0 1  
11
^ 6 4
1 1 1 0 
1 0 1 1 
1 1 0 0 
1 1 0 1 
0 1 1 0 
1 1 0 0 
1 1 0 0 
50