만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Mooball 팀 나누기 III

시간 제한2초메모리 제한1024 MB

요약
빨간 팀과 파란 팀이 모두 비어 있지 않고 서로 겹치지 않으며, 수평이나 수직 그물 하나로 나뉘는 경우의 수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
조합론, 수학, 구현
정답자
아직 제출이 없습니다

문제

Farmer John의 농장에는 NN마리의 소가 있다 (2≤N≤2⋅1052 \leq N \leq 2\cdot 10^5). 소에는 11부터 NN까지 번호가 매겨져 있다. ii번 소는 정수 좌표 (xi,yi)(x_i, y_i)에 있다 (1≤xi,yi≤N1\le x_i,y_i\le N). Farmer John은 mooball 경기를 위해 두 팀을 고르려고 한다.

한 팀은 "빨강" 팀, 다른 팀은 "파랑" 팀이다. 두 팀 모두 비어 있으면 안 되고, 각 소는 최대 한 팀에만 속한다(어느 팀에도 속하지 않을 수 있다). mooball에는 규칙이 하나 더 있다. 무한히 긴 그물을 x=0.5x = 0.5처럼 정수가 아닌 좌표에서 수평선 또는 수직선으로 쳐야 하며, 두 팀은 이 그물로 나뉘어야 한다. 소들은 이 조건을 만족시키려고 움직이지 않는다.

이 조건을 모두 만족하는 빨강 팀과 파랑 팀을 고르는 방법의 수를 109+710^9+7로 나눈 나머지를 구하라.

입력

첫째 줄에 정수 NN이 주어진다.

다음 NN개의 줄에는 공백으로 구분된 두 정수 xix_i와 yiy_i가 각각 주어진다. xix_i는 11부터 NN까지의 순열이고, yiy_i도 11부터 NN까지의 순열이다.

출력

조건을 모두 만족하는 빨강 팀과 파랑 팀을 고르는 방법의 수를 109+710^9+7로 나눈 나머지를 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    2
    1 2
    2 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    3
    1 1
    2 2
    3 3
    
    예상 출력
    10
    
  3. 예제 3

    입력
    3
    1 1
    2 3
    3 2
    
    예상 출력
    12
    
  4. 예제 4

    입력
    40
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    7 7
    8 8
    9 9
    10 10
    11 11
    12 12
    13 13
    14 14
    15 15
    16 16
    17 17
    18 18
    19 19
    20 20
    21 21
    22 22
    23 23
    24 24
    25 25
    26 26
    27 27
    28 28
    29 29
    30 30
    31 31
    32 32
    33 33
    34 34
    35 35
    36 36
    37 37
    38 38
    39 39
    40 40
    
    예상 출력
    441563023