#P11505. [NordicOI 2018] Mysterious Array

[NordicOI 2018] Mysterious Array

背景

译自 Nordic Olympiad in Informatics 2018 Mysterious Array。

题目描述

有一个数组,包含了 11 到 NN 的排列(即每个数字在数组中出现一次)。该数组的元素编号是 11 开始的。

然而,你并不知道数组的具体内容。你会得到 QQ 条信息,信息的形式是“在编号 aa 和 bb 之间的最小值是多少”。

你的任务是计算出符合这些查询的数组的数量。

输入格式

输入的第一行包含两个整数 NN 和 QQ(1≤N,Q1\leq N,Q):数组的大小和条件的数量。

接下来有 QQ 行描述信息。每行包含三个整数 aa、bb 和 xx(1≤a≤b≤N1 \leq a \leq b \leq N 且 1≤x≤N1 \leq x \leq N):表示在位置 aa 和 bb 之间的最小值为 xx。

注意,查询的结果可能不一致,并且有可能不存在符合这些查询的数组。

输出格式

输出一个整数:数组的数量对 109+710^9 + 7 取模的结果。

3 2
1 2 2
1 3 1
2
8 3
3 7 2
6 8 2
4 5 5
576

提示

在第一个样例中,数组的大小是 33,包含了数 11、22 和 33 的一个排列。此外,给定了以下信息:编号 11 到 22 之间的最小值是 22,编号 11 到 33 之间(即整个数组)的最小值是 11。只有两个数组符合这些条件:[2,3,1][2, 3, 1] 和 [3,2,1][3, 2, 1]。

在第二个样例中,有 576576 个数组符合给定的条件。


你的解法将在一组子任务上进行评分。每个子任务包含多个测试用例。要获得子任务的分数,你的解法必须通过子任务中的所有测试用例。

子任务 分数 限制条件
11 2323 1≤N,Q≤101\leq N,Q\leq 10
22 3535 1≤N,Q≤10001\leq N,Q\leq 1000
33 4242 1≤N,Q≤2⋅1051\leq N,Q\leq 2\cdot 10^5