가지밭길
시간 제한1초메모리 제한1024 MB
(0,0)에서 (R,C)까지 가는 단조 격자 경로가 나무 위치를 위쪽과 아래쪽 집합으로 나누는 서로 다른 방법의 수를 구합니다.
문제
세로 길이가 , 가로 길이가 인 직사각형 격자 모양의 가지밭이 있습니다. 거리가 인 두 격자점 사이에는 두 점을 잇는 선분 모양의 길이 있습니다. 밤고는 매일 출근을 위해 왼쪽 위의 점 에서 출발하여 정확히 개의 길을 따라 오른쪽 아래의 점 까지 이동합니다. 격자점 중 몇 곳에는 귀여운 가지가 심겨 있어서, 이 점들은 지나갈 수 없습니다.
매일 이 밭을 오가던 밤고는 밭을 가로지르는 경로 중 일부가 사실상 같다고 생각합니다. 밤고가 이동한 경로를 따라 격자를 두 영역으로 자르면, 일부 점은 위쪽 영역에, 나머지는 아래쪽 영역에 놓입니다. 두 경로에 대해 각 가지가 위쪽에 속하는지 아래쪽에 속하는지가 완전히 일치하면 두 경로는 같은 것입니다. 밤고의 생각에 서로 다른 경로는 몇 개가 있을까요?
잘라낸 두 영역에 대한 정확한 정의는 노트를 참고해 주세요.
입력
첫 번째 줄에 세 정수 , , 가 공백으로 구분되어 주어집니다. , 는 각각 직사각형 격자의 세로, 가로 길이이고, 는 심겨 있는 가지의 수입니다. ()
다음 개 줄 각각에 심겨 있는 가지의 위치 를 나타내는 정수 , 가 공백으로 구분되어 주어집니다. ()
가지의 좌표는 모두 다르며, 과 에는 가지가 심겨 있지 않습니다.
출력
첫 번째 줄에, 밤고의 생각에 서로 다른 경로의 수를 소수 로 나눈 나머지를 출력합니다.
힌트
격자를 나누는 두 영역이 어떻게 정의되는지 더 엄밀하게 적으면 다음과 같습니다.
- 밤고가 이동한 경로가 을 지나면, 위쪽 영역은 전체집합, 아래쪽 영역은 공집합입니다.
- 그렇지 않고 경로가 을 지나면, 아래쪽 영역은 전체집합, 위쪽 영역은 공집합입니다.
- 두 경우가 아니면, 을 포함하는 영역을 아래쪽 영역, 을 포함하는 영역을 위쪽 영역이라고 부릅니다.