스프링클러

순열을 이루는 N개의 살수기가 주어질 때, 어떤 살수기의 북동쪽이면서 다른 살수기의 남서쪽인 모든 정수 격자 직사각형의 개수를 10^9+7로 나눈 나머지를 구한다.

어려움8조합론분할 정복세그먼트 트리수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

농부 존의 밭은 (N1)×(N1)(N-1) \times (N-1) 크기의 정사각형이다. 남서쪽 모서리의 좌표는 (0,0)(0,0)이고, 북동쪽 모서리의 좌표는 (N1,N1)(N-1,N-1)이다. 존은 이 밭의 일부에 옥수수를 심으려고 한다.

밭의 몇몇 정수 좌표에는 양방향 스프링클러가 설치되어 있고, 스프링클러 하나가 물과 비료를 함께 뿌린다. 좌표 (i,j)(i,j)에 있는 스프링클러는 자기보다 북쪽이면서 동쪽인 부분에 물을 주고, 남쪽이면서 서쪽인 부분에 비료를 준다. 정확히 말하면 xix \geq i이고 yjy \geq j인 모든 실수 좌표 (x,y)(x,y)에 물을 주고, xix \leq i이고 yjy \leq j인 모든 실수 좌표 (x,y)(x,y)에 비료를 준다.

존은 밭 안에서 네 꼭짓점의 좌표가 모두 정수인, 축에 평행한 직사각형을 하나 골라 그 안에 옥수수를 심는다. 옥수수가 자라려면 직사각형에 속한 모든 점이 물과 비료를 둘 다 받아야 한다. 또 옥수수를 심을 자리가 있어야 하므로 직사각형의 넓이는 00보다 커야 한다.

옥수수를 심을 수 있는 직사각형이 몇 개인지 세어 존을 도와주자. 이 수가 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 구한다.

입력

첫째 줄에 밭의 크기를 나타내는 정수 NN이 주어진다 (1N1051 \leq N \leq 10^5).

다음 NN개의 줄에는 공백으로 구분된 두 정수 iijj가 주어진다 (0i,jN10 \leq i, j \leq N-1). 좌표 (i,j)(i,j)에 스프링클러가 하나 있다는 뜻이다.

모든 열에 스프링클러가 정확히 하나씩 있고, 모든 행에도 정확히 하나씩 있다. 즉 xx좌표가 같은 스프링클러는 없고, yy좌표가 같은 스프링클러도 없다.

출력

전체가 물을 받고 전체가 비료를 받는, 넓이가 00보다 큰 직사각형의 개수를 109+710^9 + 7로 나눈 나머지를 한 줄에 출력한다.