신비한 배열

Q개의 구간 최솟값 조건을 모두 만족하는 1부터 N까지의 순열 개수를 10^9+7로 나눈 나머지로 구하고, 모순이면 0을 출력한다.

어려움8조합론정렬수학구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

길이가 NN인 배열이 있다. 배열은 1,2,,N1, 2, \dots, N의 순열을 담는다. 각 수는 배열에 정확히 한 번씩 나온다. 위치는 11부터 센다.

배열 내용은 알 수 없다. 대신 구간 최솟값을 묻는 질의 QQ개의 답이 주어진다. 각 질의는 aa번 위치부터 bb번 위치까지 최소값을 묻는다.

모든 질의에 맞는 배열이 몇 개인지 구하는 것이 과제이다.

입력

첫째 줄에 정수 NNQQ가 주어진다. NN은 배열 크기이고 QQ는 질의 개수이다.

다음 QQ개 줄에는 질의가 한 줄에 하나씩 주어진다. 각 줄에는 세 정수 aa, bb, xx가 주어진다 (1abN1 \le a \le b \le N이고 1xN1 \le x \le N). 이는 aa번 위치부터 bb번 위치까지 최소값이 xx라는 뜻이다.

질의는 서로 모순될 수 있다. 조건에 맞는 배열이 없을 수도 있다.

출력

조건에 맞는 배열 개수를 109+710^9+7로 나눈 나머지를 한 줄에 출력한다.

힌트

질의가 모순되면 답은 00이다. 값이 같은 질의는 교집합에 모두 들어가야 한다. 작은 값부터 위치를 정하면 각 단계에서 선택지가 서로 겹치지 않는다.