맨해튼에서의 조깅
시간 제한2초메모리 제한1024 MB
t분마다 맨해튼 거리 d 이내의 위치를 알려주는 내비게이터 기록이 주어질 때, 마지막 시각에 미샤가 있을 수 있는 모든 격자점을 구한다.
문제
뉴맨해튼의 도로는 다음과 같이 배치되어 있다. 남쪽에서 북쪽으로 100미터마다 애비뉴가 지나가고, 서쪽에서 동쪽으로 100미터마다 스트리트가 지나간다. 애비뉴와 스트리트에는 정수가 번호로 붙는다. 번호가 작을수록 서쪽 애비뉴와 남쪽 스트리트에 해당한다. 따라서 점 가 번 애비뉴와 번 스트리트의 교차점에 오도록 직교좌표계를 세울 수 있다. 뉴맨해튼에서 에서 까지 가려면 개의 블록을 지나야 한다는 사실은 쉽게 알 수 있다. 이 값을 두 점 과 사이의 맨해튼 거리라고 부른다.
미샤는 뉴맨해튼에 살면서 매일 아침 도시를 달린다. 그는 에 있는 자기 집에서 나와 임의의 경로로 달린다. 매분 미샤는 1분 전과 같은 교차점에 그대로 머무르거나, 어느 방향으로든 한 블록 이동한다. 길을 잃지 않으려고 미샤는 내비게이터를 들고 나가는데, 내비게이터는 분마다 미샤가 어느 점에 있는지 알려 준다. 아쉽게도 내비게이터는 미샤의 정확한 위치를 보여 주지 않고, 미샤로부터 맨해튼 거리가 를 넘지 않는 점 중 아무 점이나 보여 줄 수 있다.
달리기를 시작한 지 분이 지나고 내비게이터로부터 번째 메시지를 받은 미샤는 이제 집으로 달려갈 때라고 생각했다. 그러기 위해 그는 자신이 어느 점에 있을 수 있는지 알고 싶어 한다. 미샤를 도와주자.
입력
첫째 줄에 , , 이 주어진다 (, , ).
다음 개 줄은 내비게이터에서 받은 데이터를 나타낸다. 번째 줄에는 달리기를 시작한 지 분이 지났을 때 내비게이터에서 받은 데이터 , 가 주어진다.
출력
첫째 줄에 미샤가 있을 수 있는 점의 개수 을 출력한다. 다음 개 줄에 점의 좌표를 나타내는 두 수를 출력한다. 점은 임의의 순서로 출력해도 된다.
내비게이터는 정상이며 미샤가 있을 수 있는 점이 적어도 하나 존재함이 보장된다.