접은 자국으로 읽는 설문지

아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

대회가 끝나자 주최 측이 종이 평가지를 나눠 줬다. 모든 작업을 디지털로 하던 프로그래밍 대회 팀에게는 당황스러운 일이었다. 팀원 누구도 펜이나 연필을 가지고 있지 않았고, 빌릴 수 있는 상황도 아니었다. 그래도 평가는 제출하고 싶었다. 다행히 평가지는 객관식이라 문항마다 원하는 보기 하나를 표시하기만 하면 됐다. 팀은 종이를 접어서 평가지를 채우는 방법을 찾아냈다.

한 문항에 답할 때는 종이의 네 꼭짓점 중 하나를 골라 원하는 보기의 네모 칸 위로 접고, 접힌 자리를 따라 직선으로 자국을 냈다. 어느 꼭짓점을 고를지는 자유였다. 답을 표시한 뒤에는 종이를 다시 평평하게 폈다. 표시하려는 답마다 이 과정을 반복했고, 그래서 답 하나마다 접은 자국이 하나씩 남은 종이가 만들어졌다.

이렇게 표시한 답은 다시 접어 보고 어디를 가리키는지 확인하면 읽을 수 있다. 그런데 주최 측도 디지털을 좋아했다. 주최 측은 평가지를 모두 스캔한 다음 폐기했고, 그 스캔본을 분석했다. 다행히 스캔본에는 접은 자국이 그림자로 남아 있어서, 작업자가 접은 자국이 종이의 가장자리와 만나는 점을 기록할 수 있었다.

접은 자국의 끝점 목록과 문항, 보기, 네모 칸의 위치와 크기가 주어진다. 평가지를 해독하라.

접은 자국은 언제나 서로 이웃한 두 변 위의 점을 잇는다. 그 두 변이 만나는 꼭짓점이 접힌 꼭짓점이고, 이 꼭짓점을 접은 자국에 대해 대칭시킨 점이 그 접기가 가리키는 위치이다. 가리키는 점은 항상 어떤 네모 칸 안에 들어간다.

아래는 평가지의 예시이다. 오른쪽 그림에서는 오른쪽 위 꼭짓점을 접어서 첫 문항에 "Perfect"라고 답했다.

입력

첫 줄에 네 정수 WW, HH, QQ, FF가 주어진다. WWHH는 평가지의 가로와 세로 길이(mm)이고 (100W,H1000100 \le W, H \le 1000), QQ는 문항 수 (0<Q100 < Q \le 10), FF는 해독할 접은 자국의 수 (0<F1000 < F \le 100)이다.

이어서 QQ개의 문항 설명이 주어진다. 각 문항 설명의 첫 줄에는 정수 다섯 개 AA, xx, yy, ww, hh와 문항 텍스트가 차례로 주어진다. AA는 그 문항의 보기 수이다 (0<A100 < A \le 10). xxyy는 문항 텍스트를 감싸는 직사각형의 왼쪽 위 꼭짓점 좌표이고, wwhh는 그 직사각형의 가로와 세로 길이이다 (0<x+w<W0 < x + w < W, 0<y+h<H0 < y + h < H).

다음 AA개의 줄에는 보기 설명이 하나씩 주어진다. 각 줄에는 정수 여덟 개 x1x_1, y1y_1, w1w_1, h1h_1, x2x_2, y2y_2, w2w_2, h2h_2와 보기 텍스트가 차례로 주어진다. 앞의 네 값은 보기 텍스트를 감싸는 직사각형이고, 뒤의 네 값은 표시하는 네모 칸이다. (x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2)는 두 직사각형의 왼쪽 위 꼭짓점이고, w1w_1, h1h_1, w2w_2, h2h_2는 각각의 가로와 세로 길이이다. 모든 직사각형은 넓이가 양수이고 평가지 안에 들어간다. 서로 겹치는 직사각형은 없지만 맞닿을 수는 있다. 문항 텍스트와 보기 텍스트는 비어 있지 않고, 길이가 100자를 넘지 않는다.

문항 설명 다음에는 FF개의 줄이 온다. 각 줄에는 정수 네 개 x1x_1, y1y_1, x2x_2, y2y_2가 주어지며, 접은 자국이 종이의 가장자리와 만나는 두 점의 좌표이다.

좌표의 단위는 mm이고, (0,0)(0, 0)이 왼쪽 위, (W,H)(W, H)가 오른쪽 아래이다. 가장자리와 만나는 점은 한 좌표가 정확히 00(위쪽 또는 왼쪽), WW(오른쪽), HH(아래쪽)이다. 접은 자국은 서로 이웃한 두 변을 잇고, 꼭짓점을 지나지 않는다. 한 네모 칸을 두 번 이상 표시하는 접기는 없고, FF는 전체 네모 칸 수 이하이다. 모든 접기는 유효하다. 즉 가리키는 점이 어떤 네모 칸 안에 있고, 그 칸의 경계에서 적어도 0.10.1 mm 떨어져 있다.

한 줄 안의 값은 공백 하나로 구분된다. 입력에는 평가지 하나만 주어진다.

출력

문항마다 한 줄씩, 입력에 주어진 순서대로 출력한다. 각 줄은 문항 텍스트, 콜론, 공백 하나, 그리고 그 문항에서 표시된 보기의 텍스트를 세미콜론과 공백(; )으로 이어 붙인 목록이다. 보기는 입력에 주어진 순서대로 나열한다. 표시된 보기가 하나도 없는 문항은 문항 텍스트와 콜론만 출력한다. 표시된 보기가 둘 이상인 문항도 있다.