새로운 인연
한국어
Language
Contribute a translation- Time limit
- 2000 ms
- Memory limit
- 1024 MB
- Submissions
- 0
- Correct
- 0
- Solved by
- 0
- AC rate
- —
Statement
$N$쌍의 이별한 커플이 새로운 인연을 찾기 위해 한자리에 모였다. 각 커플은 남자 $1$명과 여자 $1$명으로 구성되어 있으며, $N$쌍의 커플은 서로 다른 남자 $N$명과 서로 다른 여자 $N$명으로 구성되어 있다. 이들은 $1$번부터 $2N$번까지 번호가 붙은 $2N$개의 의자에 다음 조건을 만족하면서 앉아 있다.
- 같은 의자에 앉은 다른 사람이 존재하지 않는다. 즉, 의자 $1$개에는 정확히 $1$명만 앉아 있다.
- $i$번째 이별한 커플의 남자는 $L_i$번 의자, 여자는 $R_i$번 의자에 앉아 있다. $(1 \le i \le N)$
- $1 \le L_i < R_i \le 2N (1 \le i \le N)$
- $L_i < L_j < R_i < R_j$인 경우가 존재하지 않는다. $(1 \le i, j \le N)$
이들은 다음 조건을 만족하는 $N$쌍의 새로운 커플을 만들려고 한다.
- 새로운 커플은 남자 $1$명과 여자 $1$명으로 구성되어야 하며, 모든 사람은 정확히 $1$쌍의 새로운 커플에 속해야 한다.
- 모든 사람은 기존 이별한 상대가 아닌 사람과 짝지어져야 한다.
- 임의의 새로운 커플에 대해, 남자가 앉은 의자의 번호를 $l$, 여자가 앉은 의자의 번호를 $r$이라고 하면 $l < r$이다.
예를 들어, $N=3$이고 $L_1 = 1$, $R_1 = 6$, $L_2 = 2$, $R_2 = 3$, $L_3 = 4$, $R_3 = 5$인 경우를 생각해 보자. $1$번 의자에 앉은 남자와 $6$번 의자에 앉은 여자는 이별한 커플이므로, 새로운 커플이 될 수 없다. $4$번 의자에 앉은 남자와 $3$번 의자에 앉은 여자는 이별한 커플이 아니지만, 남자가 앉은 의자의 번호가 더 크기 때문에 새로운 커플이 될 수 없다.
반면, $1$번 의자에 앉은 남자와 $3$번 의자에 앉은 여자는 새로운 커플이 될 수 있다. $2$번 의자에 앉은 남자와 $5$번 의자에 앉은 여자, $4$번 의자에 앉은 남자와 $6$번 의자에 앉은 여자도 새로운 커플이 될 수 있다. 이러한 방식으로 조건을 만족하는 $3$쌍의 커플을 만들 수 있다.
여러분은 $N$쌍의 새로운 커플을 만드는 서로 다른 방법의 수를 계산해야 한다. $N$쌍의 새로운 커플을 만드는 두 방법이 다르다는 것은 둘 중 하나로만 만들어질 수 있는 새로운 커플이 존재한다는 것을 뜻한다.
위에서 든 예시의 경우, $3$쌍의 커플을 만드는 방법이 유일하다는 것을 증명할 수 있다. 따라서, 이 경우 답은 $1$이다.
방법의 수가 매우 클 수 있으므로, $10^9+7$로 나눈 나머지를 구하여라.
하나의 입력에서 $T$개의 테스트케이스를 해결해야 한다.
Constraints
- 주어지는 모든 수는 정수이다.
- $1 \le T \le 100$
- $1 \le N \le 3\,000$
- 각 테스트케이스의 모든 $N$의 합을 $S$라고 하면, $1 \le S \le 3\,000$
- $1 \le L_i < R_i \le 2N (1 \le i \le N)$
- $L_1, L_2, \cdots, L_N, R_1, R_2, \cdots, R_N$은 서로 다르다.
- $L_i < L_j < R_i < R_j$인 경우가 존재하지 않는다. $(1 \le i, j \le N)$
Subtasks
- (11점) $N \le 8$, $S \le 800$.
- (32점) $N \le 16$, $S \le 1\,600$.
- (20점) $N \le 100$, $S \le 2\,000$, $L_i < L_j < R_j < L_k < R_k < R_i$인 경우가 존재하지 않는다. $(1 \le i, j, k \le N)$
- (27점) $N \le 100$, $S \le 2\,000$.
- (10점) 추가 제약 조건 없음.
Input
첫 번째 줄에 테스트케이스의 개수 $T$가 주어진다.
두 번째 줄부터 $T$개의 테스트케이스가 주어진다. 각 테스트케이스는 $N+1$개의 줄로 구성되어 있다.
각 테스트케이스의 첫 번째 줄에 $N$이 주어진다.
각 테스트케이스의 $1+i$번째 줄에 $L_i$와 $R_i$가 공백으로 구분되어 주어진다.
Output
각 테스트케이스마다 한 줄에 하나씩 정답을 출력한다.
Examples
5 1 1 2 2 1 4 2 3 3 1 6 2 5 3 4 3 1 6 2 3 4 5 4 1 8 5 6 2 7 3 4
0 1 2 1 6
Tags
No tags yet