항구 시설
시간 제한4.5초메모리 제한1024 MB
각 컨테이너를 두 구역 중 하나에 배정해서 같은 구역 안에서 후입선출 순서로 빠지는 경우의 수를 1,000,000,007로 나눈 나머지로 구합니다.
문제
매일 많은 컨테이너가 배로 JOI 항구에 운송된다. 이후 트럭으로 전국 각지에 운송된다.
JOI 항구는 매우 좁다. 컨테이너를 놓을 수 있는 곳은 두 구역뿐이다. 각 구역에서는 컨테이너를 세로로 원하는 만큼 쌓을 수 있다.
안전을 위해 배로 들어온 컨테이너는 두 구역 중 하나에 놓아야 한다. 이미 컨테이너가 있으면 그 위에 놓는다. 트럭으로 컨테이너를 내갈 때는 어느 한 구역에 쌓인 컨테이너의 맨 위에서 꺼내야 한다.
오늘 N개의 컨테이너가 JOI 항구에 들어온다. 모든 컨테이너는 트럭으로 나간다.
당신은 JOI 항구의 설비를 관리한다. 각 컨테이너마다 들어오는 시각과 나가는 시각을 알고 있다. 컨테이너를 놓고 꺼내는 방법의 수를 1 000 000 007로 나눈 나머지를 구하는 프로그램을 작성하라.
입력
첫째 줄에 항구에 운송되는 컨테이너의 개수 N이 주어진다.
이후 N개의 줄 중 i번째 줄에는 공백으로 구분된 두 정수 Ai, Bi가 주어진다. 이는 i번째 컨테이너가 시각 Ai에 항구에 들어오고, 시각 Bi에 트럭으로 떠난다는 뜻이다.
출력
컨테이너를 놓고 꺼내는 조건을 만족하는 방법의 수를 1 000 000 007로 나눈 나머지를 한 줄에 출력한다.
제한
- 1 ≤ N ≤ 1 000 000.
- 1 ≤ Ai ≤ 2N (1 ≤ i ≤ N).
- 1 ≤ Bi ≤ 2N (1 ≤ i ≤ N).
- Ai < Bi (1 ≤ i ≤ N).
- 2N개의 정수 A1, ..., AN, B1, ..., BN은 모두 서로 다르다.