#CF2146F. 气泡排序

气泡排序

F. 气泡排序

每次测试时间限制:22
每次测试内存限制:512512 兆字节

你刚刚学会了泡泡排序算法,它可以按非降序排序数组。让我们定义函数 sort(a)\text{sort}(a) 如下伪代码所示:

function sort(array a):
    rounds := 0
    n := length of a
    while a is not non-decreasing:
        rounds := rounds + 1
        for i from 1 to n - 1:
            if a[i] > a[i + 1]:
                swap(a[i], a[i + 1])
    return rounds

如图所示,返回值 sort(a)\text{sort}(a) 表示使用泡泡排序将数组 aa 按非降序排序所需的轮数。

你会得到一个整数 nn,以及 mm 个整数元组 (ki,li,ri)(k_i, l_i, r_i)1im1 \le i \le m)。
计算长度为 nn 的排列 pp 的数量(模 998244353998244353),使其满足以下限制:

  • 对于每个 1in1 \le i \le n,设 bi=sort([p1,p2,,pi])b_i = \text{sort}([p_1, p_2, \dots, p_i]),则
  • 对于每个 1jm1 \le j \le m,设 xx 为满足 bykjb_y \le k_j 的索引 yy1yn1 \le y \le n)的数量,
    ljxrjl_j \le x \le r_j 成立。

排列的定义
长度为 nn 的排列是由 nn 个来自 11nn 的不同整数按任意顺序组成的数组。
例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是(22 出现两次),[1,3,4][1,3,4] 也不是(n=3n=3 但数组中有 44)。


输入

每个测试包含多个测试用例。
第一行包含测试用例的数量 tt1t1041 \le t \le 10^4)。
以下是每个测试用例的描述:

  • 每个测试用例的第一行包含两个整数 nnmm2n1062 \le n \le 10^60m10000 \le m \le 1000)。
  • 接下来 mm 行,第 ii 行包含三个整数 ki,li,rik_i, l_i, r_i0kin10 \le k_i \le n-11lirin1 \le l_i \le r_i \le n)—— 限制条件。

保证所有测试用例的 mm 之和不超过 10610^6


输出

对于每个测试用例,输出一个整数 —— 满足条件的排列数量,模 998244353998244353


示例

输入

6
4 3
0 1 1
1 3 3
2 4 4
3 2
0 3 3
1 2 3
4 3
1 2 2
2 3 4
0 1 2
5 3
1 1 4
3 5 5
4 5 5
10 5
1 2 3
2 3 4
3 4 5
4 5 6
5 6 7
1000000 0

输出

2
1
8
80
192600
373341033

注释

第一个测试案例
只有排列 [3,1,4,2][3,1,4,2][4,1,3,2][4,1,3,2] 满足这些限制。
[3,1,4,2][3,1,4,2] 为例,计算数组 bb

  • sort([3])=0\text{sort}([3]) = 0
  • sort([3,1])=1\text{sort}([3,1]) = 1
  • sort([3,1,4])=1\text{sort}([3,1,4]) = 1
  • sort([3,1,4,2])=2\text{sort}([3,1,4,2]) = 2

因此 b=[0,1,1,2]b = [0,1,1,2],容易验证它满足所有限制。

第二个测试案例
只有排列 [1,2,3][1,2,3] 满足限制。

第三个测试案例
以下 88 个排列满足限制:

  • [2,3,1,4][2,3,1,4]
  • [2,4,1,3][2,4,1,3]
  • [3,2,1,4][3,2,1,4]
  • [3,4,1,2][3,4,1,2]
  • [3,4,2,1][3,4,2,1]
  • [4,2,1,3][4,2,1,3]
  • [4,3,1,2][4,3,1,2]
  • [4,3,2,1][4,3,2,1]