小 Z 怎么又在打游戏
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

小 Z 又在玩游戏,有 n 块小地图,每块地图都是矩形,长度为 l_i 格,高度为 h_i 格,所有地图的底部高度相同,并且依次紧密连接,即第 i 个地图左下角的顶点与第 i-1 个地图右下角的顶点重合。
小 Z 可以从第一块地图最左侧任意高度出发,目标是从地图最右侧任意高度走出,每次他可以做以下两种操作之一:
1. 向右移动一格。
2. 沿着重力方向下落一格。
这个游戏原本非常简单,但小 Z 的电脑中病毒了,有一些地图的重力被反转了。现在小 Z 想知道,他有多少种本质不同的方案完成游戏。由于答案可能很大,你只需要输出答案对 998244353 取模后的结果。
对于两种方案,当且仅当存在一个格子被一种方案经过但不被另一种方案经过时,这两个方案本质不同。

输入描述:

第一行一个整数 T (1 \le T \le 100 ),表示数据组数。
对于每组数据,第一行一个整数 n (1\leq n\leq 100),表示一共有 n 块小地图。
接下来 n 行,第 i 行三个整数 l_i,h_i,op_i (1 \le l_i \le 10^8,1 \le h_i \le 100,0 \le op_i \le 1 ),表示第 i 块地图的长度,高度以及重力是否被反转(op_i=1 表示第 i 块地图重力被反转,op_i=0 表示第 i 块地图重力未被反转)。

输出描述:

对于每组数据,输出一行一个整数表示小 Z 完成游戏的本质不同方案数对 998244353 取模后的结果。
示例1

输入

复制
4
2
1 2 1
1 3 0
1
2 2 0
1
10 9 1
2
6 6 0
3 10 1

输出

复制
5
4
75582
149149

说明

样例解释请参考纸质题面。