케이크 자르기

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

문제

오늘은 세계 최고의 파티시에 중 한 명으로 손꼽히는 봉 비방(Bon Vivant) 씨의 생일입니다. 파티에 초대된 손님들은 전 세계에서 모인 미식가들로, 그의 대단히 창의적인 케이크를 보고 맛보기를 손꼽아 기다립니다. 이제 커다란 상자 모양의 케이크가 파티장으로 들어옵니다. 겉모습은 수수하고 장식도 단순하지만, 상상 이상으로 맛있을 것이 분명합니다. 이 케이크를 칼로 여러 조각으로 잘라 손님들에게 나누어 줍시다.

위에서 내려다보면 케이크는 직사각형입니다. 케이크는 여러 번에 걸쳐 잘리며, 한 번 자를 때마다 정확히 하나의 조각이 두 개의 더 작은 조각으로 나뉩니다. 모든 절단면은 밑면과 수직(연직)이며, 옆면과는 수직이거나 평행합니다. 따라서 모든 조각은 위에서 볼 때 항상 직사각형이고, 모든 옆면은 연직을 유지합니다.

잘린 조각들의 크기는 크게 차이가 나서 불공평해 보일 수 있지만 걱정할 필요는 없습니다. 되도록 여러 종류의 케이크를 맛보고 싶은 손님은 작은 조각을 선호하고, 큰 조각을 좋아하는 손님도 있기 때문입니다.

여러분의 임무는 케이크를 자르는 과정을 시뮬레이션하여 각 조각의 크기를 보고하는 프로그램을 작성하는 것입니다.

입력

입력은 여러 개의 데이터셋으로 이루어집니다. 각 데이터셋의 형식은 다음과 같습니다.

n w d
p1 s1
...
pn sn

첫 줄에는 수행할 자르기 횟수인 정수 n (0 ≤ n ≤ 100)과, 케이크의 가로 w, 세로 d (1 ≤ w, d ≤ 100)가 주어집니다. 케이크는 w가 동서 방향, d가 남북 방향이 되도록 놓여 있습니다.

이어지는 n개의 줄은 각각 하나의 자르기를 나타내며, 정확히 한 조각을 두 조각으로 나눕니다. i번째 자르기 직전에는 정확히 i개의 조각이 존재하고, 각 조각은 다음 규칙에 따라 1부터 i까지의 서로 다른 식별 번호를 가집니다.

  • 먼저 만들어진 조각일수록 식별 번호가 작습니다.
  • 한 번의 자르기로 동시에 만들어진 두 조각 중에서는, 위에서 본 넓이가 더 작은 쪽이 더 작은 번호를 가집니다. 두 넓이가 같다면 순서는 어느 쪽으로 정해도 되며, 그 선택은 최종 답에 영향을 주지 않습니다.

식별 번호는 매 자르기 이후 다시 매겨집니다. pi (1 ≤ pi ≤ i)는 i번째 자르기로 나눌 조각의 식별 번호입니다.

si (1 ≤ si ≤ 1000)는 i번째 자르기의 시작점을 나타냅니다. 조각 pi의 북서쪽 모서리에서 출발하여 둘레를 따라 시계 방향으로 거리 si만큼(필요하면 둘레를 여러 바퀴 돌면서) 이동하면 시작점에 도달합니다. 이 시작점은 조각의 네 모서리 중 어느 것도 되지 않음이 보장됩니다. i번째 절단면은 이 시작점이 놓인 옆면과 수직입니다.

입력의 끝은 세 개의 0으로 이루어진 줄로 표시됩니다.

출력

각 데이터셋에 대해, 해당 데이터셋의 n번의 자르기를 모두 수행한 뒤 존재하는 모든 조각의 위에서 본 넓이를 한 줄에 출력합니다. 넓이는 오름차순으로 공백 하나로 구분하여 출력합니다. 넓이가 같은 조각이 여러 개일 때는 그 개수만큼 해당 넓이를 반복하여 출력합니다.