#YDRS005E. 将那朵云彩也跨越

将那朵云彩也跨越

题目名来自:晴る - ヨルシカ

题目描述

考虑 n×mn\times m 的网格,现在你需要给每个格子黑白染色。定义一种染色方案合法,当且仅当能够用 1×21\times 2 的纸条不重叠且不超出网格边界地恰好覆盖所有白色格子,恰好不覆盖所有黑色格子。

现在有 qq 个约束 (xi,yi,ci)(x_i,y_i,c_i)1iq1\le i\le q),其中 1xin,1yim,ci{0,1}1\le x_i\le n,1\le y_i\le m,c_i\in\{0,1\}。如果 ci=0c_i=0,表示格子 (xi,yi)(x_i,y_i) 必须染成白色;否则表示格子 (xi,yi)(x_i,y_i) 必须被染成黑色。

在此基础上,云浅想让你求出合法染色方案数对 998244353998244353 取模的值。

输入格式

第一行三个正整数 n,m,qn,m,q

接下来 qq 行,第 i+1i+1 三个非负整数 xi,yi,cix_i,y_i,c_i

输出格式

输出一行一个非负整数表示合法染色方案数对 998244353998244353 取模的值。

样例 11 输入

2 2 0

样例 11 输出

6

样例 11 解释

0 表示这个格子染白,1 表示染黑,则所有合法方案为:

00 10 01 11 00 11
00 10 01 00 11 11

样例 22 输入

2 2 1
1 1 1

样例 22 输出

3

样例 22 解释

0 表示这个格子染白,1 表示染黑,则所有合法方案为:

10 11 11
10 00 11

样例 33 输入

3 4 2
1 2 1
2 3 0

样例 33 输出

146

样例 44 输入

5 1145141919 0

样例 44 输出

200647880

测试点约束

对于所有数据:1n7,1m1018,0q3001\le n\le 7,1\le m\le 10^{18},0\le q\le 300。保证不存在 iji\neq j 使得 (xi,yi)=(xj,yj)(x_i,y_i)=(x_j,y_j)

子任务编号 nn mm qq 分值 依赖子任务
Subtask #1 4\le 4 5\le 5 1010
Subtask #2 100\le 100 =0=0 66
Subtask #3 100\le 100 1111 1,21,2
Subtask #4 5\le 5 105\le 10^5 1010 1,2,31,2,3
Subtask #5 109\le 10^9 =0=0 55 22
Subtask #6 300\le 300 1313 1,2,3,4,51,2,3,4,5
Subtask #7 6\le 6 1018\le 10^{18} =0=0 1010 2,52,5
Subtask #8 300\le 300 1515 1,2,3,4,5,6,71,2,3,4,5,6,7
Subtask #9 7\le 7 2020 1,2,3,4,5,6,7,81,2,3,4,5,6,7,8