젠가 붐

젠가 형태의 탑에서 블록을 순서대로 빼면서, 지지하는 층 블록들의 볼록 껍질 밖으로 무게 중심이 나가는 순간 탑이 무너지는지와 몇 번째 제거에서 무너지는지를 구한다.

어려움8기하시뮬레이션누적 합구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

제인은 게임 디자이너이고 젠가 붐의 다음 버전을 설계하고 있다. 이 버전의 블록은 보통의 1×2×61 \times 2 \times 6이 아니라 1×w×nw1 \times w \times nw 크기이다. 게임을 시작할 때 타워를 쌓는다. 한 층은 블록 nn개를 긴 변끼리 맞대어 나란히 놓아 만들고, 각 층은 바로 아래 층과 직각이 되게 얹는다. 플레이어는 차례대로 블록을 하나씩 빼내고, 타워가 무너지면 게임이 끝난다.


처음 타워


무너지기 직전의 타워

제인은 nnww를 고르는 데 쓸 시뮬레이터를 만들려고 한다. 시뮬레이터는 정해진 순서대로 블록을 뺐을 때 타워가 언제 무너지는지 계산한다.

좌표는 다음과 같이 정한다. 바닥은 xyxy 평면이고, ll번째 층은 l1zll-1 \le z \le l인 부분을 차지한다. 한 층의 밑면은 한 변이 nwnw인 정사각형 [0,nw]×[0,nw][0, nw] \times [0, nw]이다. 홀수 번째 층에서는 블록의 긴 변이 yy축과 나란하고, kk번째 블록이 [(k1)w,kw]×[0,nw][(k-1)w, kw] \times [0, nw]를 차지한다. 짝수 번째 층에서는 블록의 긴 변이 xx축과 나란하고, kk번째 블록이 [0,nw]×[(k1)w,kw][0, nw] \times [(k-1)w, kw]를 차지한다. 블록은 모두 재질이 같고 무게도 같다.

ii번째 층과 i+1i+1번째 층 사이의 단면을 보자. i+1i+1번째 층부터 hh번째 층까지 남은 블록이 하나라도 있으면, 그 블록 전체의 질량 중심을 xyxy 평면에 내린 점을 CC, ii번째 층에 남은 블록을 xyxy 평면에 내린 도형의 볼록 껍질을 HH라고 하자. CCHH 바깥에 있거나 HH의 경계 위에 있으면 타워가 무너진다. ii번째 층이 비어 있으면 HH도 비어 있으므로, 그 위에 블록이 남아 있는 한 타워가 무너진다. 1ih11 \le i \le h-1인 단면 가운데 하나라도 이 조건에 걸리면, 타워는 그 블록을 빼낸 직후에 무너진다.

입력

첫째 줄에 블록의 크기를 정하는 두 정수 nnww가 주어진다 (1n,w100001 \le n, w \le 10000). 둘째 줄에 타워의 층 수 hh와 빼내는 블록의 개수 mm이 주어진다 (1h,m50001 \le h, m \le 5000).

다음 mm개 줄에는 빼내는 블록이 순서대로 주어진다. 각 줄에는 정수 lil_ikik_i가 주어지고, lil_i는 아래에서 센 층 번호, kik_i는 그 층 안에서 블록의 위치이다 (1lih1 \le l_i \le h, 1kin1 \le k_i \le n). 같은 블록을 두 번 빼내지는 않는다.

출력

타워가 무너지면 첫째 줄에 yes를, 무너지지 않으면 no를 출력한다. 무너지는 경우 둘째 줄에 타워를 무너뜨린 블록이 몇 번째로 빼낸 블록인지 출력한다. 번호는 1부터 센다. 타워가 무너진 뒤에 남은 입력은 무시한다.