체스판

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

요약
두 말이 (1,1)에서 각각 오른쪽과 아래로 출발해 (N,M)까지 이동할 때, 금지된 칸을 피하면서 같은 칸에서 만나지 않는 경로쌍의 개수를 센다.
난이도

어려움10점 중 8점

유형
조합론, 동적 계획법, 구간, 수학
정답자
아직 제출이 없습니다

문제

크기가 N×MN \times M인 체스판이 있다. 체스판의 행 번호는 위에서부터 1,2,⋯ ,N1, 2, \cdots, N이고, 열 번호는 왼쪽에서부터 1,2,⋯ ,M1, 2, \cdots, M이다. 체스판의 각 칸은 (i,j)(i, j)로 표현한다. 여기서, ii는 행 번호, jj는 열 번호이다. 그리고, 체스판에는 KK개의 금지된 칸이 존재한다. 단, (1,1)(1,1)과 (N,M)(N,M)은 금지된 칸이 아니다.

말 AA, BB는 (1,1)(1,1)에서 시작하여 다음의 규칙에 따라 동시에 한 칸씩 이동하며 (N,M)(N,M)까지 가려고 한다.

  1. 어떤 말이 현재 (i,j)(i,j)에 있다면, 해당 말은 (i+1,j)(i+1,j) 또는 (i,j+1)(i,j+1)으로 이동할 수 있다. 이 때, 말이 체스판을 벗어나는 이동은 허용하지 않는다.
  2. 처음에 말 AA는 (1,1)(1,1)에서 (1,2)(1,2)로 이동하며, 말 BB는 (1,1)(1,1)에서 (2,1)(2,1)로 이동해야 한다.
  3. 이동하는 과정에서 두 말은 (1,1)(1,1)과 (N,M)(N,M)를 제외하고 어떤 칸에서도 만나서는 안된다.
  4. 어떤 말도 금지된 칸으로 이동할 수 없다.

이러한 규칙을 따르면서 말 AA, BB가 (1,1)(1,1)에서 동시에 출발하여 (N,M)(N,M)으로 도달할 수 있는 경로쌍의 개수를 구해보자. 말 AA가 이동한 경로를 aa, 말 BB가 이동한 경로를 bb라고 하면 조건을 만족하는 (a,b)(a,b)의 개수를 구하면 된다.

입력

첫 번째 줄에는 체스판의 행 크기 NN, 열 크기 MM, 금지된 칸의 개수 KK가 공백으로 구분되어 주어진다. (2≤N,M≤1,000,000;(2 \le N,M \le 1\\,000\\,000; 0≤K≤min(N×M−2,5,000))0 \le K \le min(N \times M-2,5\\,000))

두 번째 줄부터 K+1K + 1번째 줄까지는 금지된 칸의 행 번호 xx, 열 번호 yy가 공백으로 구분되어 주어지며, 같은 칸은 두 번 이상 주어지지 않는다. (1≤x≤N;(1 \le x \le N; 1≤y≤M;1 \le y \le M; (x,y)≠(1,1);(x,y) \neq (1,1); (x,y)≠(N,M))(x,y) \neq (N,M))

입력에서 주어지는 모든 수는 정수이다.

출력

말 AA, BB가 (1,1)(1,1)에서 동시에 출발하여 (N,M)(N,M)으로 도달할 수 있는 경로쌍의 개수를 109+710^9 + 7로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

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

    입력
    5 5 4
    3 1
    3 5
    1 3
    5 3
    
    예상 출력
    0