题目描述
Flokirie 有一个美丽的凸 n 边形,顶点编号为 1 到 n,每条边连接顶点 i 和 i+1。特别的,顶点 n 与顶点 1 相连
他想把每个顶点都染成某一种颜色 k(k≤c),且相邻顶点颜色不能相同。
他想知道所有可行方案共有多少。于是他在纸上算了算,5 分钟就解决了这题。
于是他觉得太 low 了,便定义了以下骚操作。
- 
1 x p:表示第 x 个顶点必须染颜色 p。
 
- 
2 x p:表示第 x 个顶点必须不染颜色 p。
 
- 
3 x y:表示更改第 x 个顶点与第 y 个顶点之间边的属性(保证 y=x±1,且 x,y=1,n),即第 x 个顶点必须与第 y 个顶点颜色相同。
 
现在,他想知道所有可行的方案共有多少种。由于结果可能过大,你只需输出它对 987654321 取模的结果即可。
输入格式
第一行,三个正整数 n,m,c,表示多边形边数、操作个数、颜色个数。
之后 m 行,每行三个正整数表示一个操作,具体意义见题目描述。
输出格式
一行一个整数,为所有可行操作和模上 987654321 的结果。
3 0 3
6
5 2 5
2 3 4
3 2 3
208
提示
| 测试点编号 | n | m | c | 
| 1∼2 | 3≤n≤10 | 0≤m≤10 | 1≤c≤5 | 
| 3∼4 | 3≤n≤100 | 0≤m≤30 | 1≤c≤8 | 
| 5 | 3≤n≤2×103 | m=0 | 1≤c≤10 | 
| 6 | 0≤m≤100 | 
| 7 | 3≤n≤5×104 | m=0 | 
| 8 | 0≤m≤500 | 
| 9∼10 | 0≤m≤103 | 
保证对于 100% 的数据,3≤n≤5×104,0≤m≤103,1≤c≤10。