데스매치 결과표

일부 값이 지워진 n명의 킬/데스 표가 점수순으로 주어질 때, 종료된 데스매치 게임이 만들 수 있는 완성된 표의 수를 센다.

보통7조합론완전 탐색동적 계획법수학아직 제출이 없습니다시간 제한10초메모리 제한512 MB

문제

인기 있는 컴퓨터 게임의 데스매치 모드에서 n명의 선수가 가상 세계에서 서로 싸운다. 선수 x의 점수는 두 정수 fxf_xdxd_x로 이루어진다. fxf_x는 x가 다른 선수를 죽인 횟수이고, dxd_x는 x가 다른 선수에게 죽은 횟수이다.

선수 x가 선수 y를 죽이면 fxf_xdyd_y가 각각 1씩 늘어난다. 죽은 선수는 곧바로 다시 나타나 게임을 이어 간다. 자기 자신을 죽일 수는 없고, 두 죽음이 같은 순간에 일어나지도 않는다. 어떤 선수의 킬 수가 n이 되는 순간 게임이 끝난다. 따라서 끝난 게임에서 킬 수가 n인 선수는 정확히 한 명이고, 나머지 선수의 킬 수는 모두 n보다 작다.

끝난 게임의 결과는 n개의 행과 2개의 열로 이루어진 표이다. 각 행은 선수 한 명의 점수를 fxf_x, dxd_x 순서로 담는다. 선수는 점수에 따라 내림차순으로 놓인다. fxf_x가 큰 선수가 앞에 오고, fxf_x가 같은 선수끼리는 dxd_x가 작은 선수가 앞에 온다.

부분 결과는 끝난 게임의 결과에서 값 몇 개를 지운 표이다. 부분 결과 하나가 주어진다. 이 부분 결과가 나올 수 있는 올바른 결과의 개수를 m이라고 하자. m을 109+710^9 + 7로 나눈 나머지를 구하라.

입력

첫째 줄에 선수의 수 n이 주어진다 (2n102 \le n \le 10).

다음 n개 줄 중 k번째 줄에는 부분 결과의 k번째 행에 해당하는 두 정수 fkf_kdkd_k가 주어진다 (1fkn-1 \le f_k \le n, 1dkn2-1 \le d_k \le n^2). 지워진 값은 -1로 나타낸다.

주어진 부분 결과는 끝난 게임의 어떤 결과에서 위 방법으로 얻은 것이다.

출력

가능한 원래 결과의 개수를 109+710^9 + 7로 나눈 나머지를 출력한다.

힌트

첫 번째 예제에서 가능한 원래 결과는 (2 0, 0 2)와 (2 1, 1 2)이다.