기운찬 거북이

아래쪽과 오른쪽으로만 이동해 (0,0)에서 (N,M)까지 가며 함정이 든 칸을 최대 T개까지 밟는 경로 수를 Z로 나눈 나머지를 구합니다.

보통7조합론동적 계획법정수론아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

(N+1)×(M+1)(N+1) \times (M+1) 크기의 격자가 있다. 행에는 00부터 NN까지, 열에는 00부터 MM까지 번호가 붙어 있고, xxyy열 칸을 (x,y)(x, y)로 나타낸다. 거북이는 (0,0)(0, 0)에서 출발해 (N,M)(N, M)으로 가려고 한다. 거북이는 한 번에 (x,y)(x, y)에서 (x+1,y)(x+1, y) 또는 (x,y+1)(x, y+1)로만 이동한다.

격자에는 함정이 KK개 있다. 함정이 있는 칸을 밟으면 거북이는 뒤집히고, 다시 일어나야 한다. 거북이가 일어날 힘은 최대 TT번 분량이므로, 거북이가 지나갈 수 있는 경로에 있는 함정은 TT개 이하다.

거북이가 (0,0)(0, 0)에서 (N,M)(N, M)까지 갈 수 있는 서로 다른 경로의 수를 구하여라. 이 수가 매우 클 수 있으므로 ZZ로 나눈 나머지를 출력한다.

입력

첫째 줄에 정수 NN, MM, KK, TT, ZZ가 주어진다 (1N,M3000001 \le N, M \le 300000, 0K,T200 \le K, T \le 20, 1Z10000000001 \le Z \le 1000000000).

다음 KK개 줄에는 함정이 있는 칸의 좌표 XXYY가 주어진다 (0XN0 \le X \le N, 0YM0 \le Y \le M). 함정은 모두 서로 다른 칸에 있고, (0,0)(0, 0)(N,M)(N, M)에는 함정이 없다.

출력

첫째 줄에 경로의 수를 ZZ로 나눈 나머지를 출력한다.