#P9490. ZHY 的矩阵

ZHY 的矩阵

题目背景

温馨提示:本题不允许套取数据。

题目描述

ZHY 的记忆中有一个 kknn 列的 01 矩阵 AA,满足下列条件:

  • 每一列都至多有一个 11
  • 每行相邻的两个 11 所在的两列夹出的 kk 行的矩形(包括这两列)内至少有三个 11

突然,ZHY 想起来了矩阵中 xx 个位置的值。请你计算有多少种填充 AA 的剩余位置的方案,使得 AA 满足条件。


形式化的讲,设 AAii 行第 jj 列的数为 Ai,jA_{i,j},则 AA 满足下列条件:

  • 对于 i[1,k],j[1,n]\forall i \in [1,k],\kern{2pt}j \in [1,n]Ai,j{0,1}A_{i,j} \in \{0,1\}

  • 对于 i[1,n]\forall i \in [1,n]j=1kAj,i1\displaystyle\sum_{j=1}^{k} A_{j,i}\le 1

  • 对于 i,j[1,n],p[1,k]\forall i,j \in [1,n],\kern{2pt}p \in [1,k]j>ij>i,若有 $A_{p,i}=A_{p,j}=1,\displaystyle \sum_{x=i}^{j}A_{p,x}=2$,则有 $\Big(\displaystyle \sum_{x=1}^{k} \sum_{y=i}^{j} A_{x,y}\Big) \ge 3$。

  • 对于 i[1,x]\forall i\in[1,x],有 Aai,bi=ciA_{a_{i},b_{i}}=c_{i}

由于答案可能很大,你只需告诉 ZHY 答案对 109+710^{9}+7 取模的结果。定义两个矩阵 A,AA,A' 不同,当且仅当存在 i[1,k]i\in[1,k]j[1,n]j\in[1,n] 满足 Ai,jAi,jA_{i,j}\ne A'_{i,j}

输入格式

第一行三个整数,表示 n,k,xn,k,x

接下来 xx 行,每行三个整数 ai,bi,cia_{i},b_{i},c_{i}

输出格式

一行一个整数,表示答案。

3 2 2
1 1 1
2 2 0

2

提示

样例解释

满足条件的矩阵只有以下 22 种:

{100000}\begin{Bmatrix} 1&0&0\\ 0&0&0 \end{Bmatrix} {100001}\begin{Bmatrix} 1&0&0\\ 0&0&1 \end{Bmatrix}

本题采用捆绑测试。

Subtaskid\mathrm{Subtask} \kern{2pt} \mathrm{id} nn xx 特殊性质 分值
00 8\le 8 k=2k=2 1212
11 2×105\le 2 \times 10^{5} 2×105\le 2\times 10^{5} 2626
22 109\le 10^{9} =0=0 2323
33 2×105\le 2\times 10^{5} ci=1c_{i}=1 1515
44 2424

对于所有数据,1n1091 \le n \le 10^{9}0x2×1050 \le x \le 2\times 10^{5}2k1002\le k \le 1001aik1 \le a_{i} \le k1bin1 \le b_{i} \le nci{0,1}c_{i} \in \{0,1\}。保证不存在一对 i,j[1,x],iji,j \in [1,x],\kern{2pt}i\neq j,满足 ai=aj,bi=bja_{i}=a_{j},\kern{2pt}b_{i}=b_{j}