시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB139876757756.569%

문제

정수좌표를 갖는 점을 격자점이라고 한다. 격자 다각형은 모든 꼭짓점이 격자점으로 이루어진 다각형이다.

만약, 다각형의 두 꼭짓점을 잇는 모든 선분이 다각형 내부(또는 경계)에 있다면, 이 다각형을 볼록 다각형이라고 한다. 즉, 다각형의 내부각이 모두 180도 보다 작은 것이다.

격자점으로 이루어진 집합 S가 주어졌을 때, S의 모든 격자점을 포함하는 가장 작은 볼록 (격자) 다각형을 컨벡스 헐이라고 한다. 컨벡스 헐의 꼭짓점은 모두 S에 포함된 격자점이어야 한다. 만약, 모든 점이 같은 일직선 상에 있다면, 컨벡스 헐은 선분이 될 것이다. (오른쪽 그림)

아래 그림에서 집합에 포함된 점은 굵은 점으로, 컨벡스 헐의 꼭짓점은 X로, 변은 선분으로 나타낸 그림이다.

격자 다각형의 꼭짓점의 일반적인 순서는 다음과 같다.

  1. 첫 번째 꼭짓점은 y좌표가 가장 큰 점이다. 만약, 그러한 점이 2개라면, x가 작은 점이 첫 번째 점이다.
  2. 그 다음 점부터는 시계방향 순서이다.

격자점의 집합이 주어졌을 때, 컨벡스 헐을 일반적인 순서로 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 P(1 ≤ P ≤ 1000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 집합에 포함된 격자점의 수 N(3 ≤ N ≤ 50)이 주어진다. 나머지 줄은 집합에 포함되어 있는 격자점의 좌표가 한 줄에 5개씩 주어진다. (마지막 줄은 이보다 적을 수 있다) 모든 점은 x와 y좌표가 순서대로 주어지며, 공백으로 구분되어 있다. 좌표는 절댓값이 20보다 작거나 같은 정수이다.

출력

각 테스트 케이스에 대해서, 첫째 줄에는 컨벡스 헐에 포함된 점의 수를 출력한다. 그 다음 줄부터 컨벡스헐에 포함된 격자점을 한 줄에 하나씩 일반적인 순서대로 출한다. x와 y를 공백으로 구분하여 출력한다.

예제 입력 1

4
25
2 1 7 1 1 2 9 2 1 3
10 3 1 4 10 4 1 5 10 5
2 6 10 6 2 7 9 7 3 8
8 8 4 9 7 9 6 2 3 3
5 4 7 5 8 6 4 6 3 7
30
3 9 6 9 3 8 9 8 3 7
12 7 2 6 12 6 2 5 12 5
2 4 12 4 1 3 11 3 1 2
11 2 1 1 11 1 1 0 10 0
4 -1 10 -1 7 -2 10 -2 5 0
7 3 4 5 6 8 3 1 2 6
3
3 1 2 2 1 3
6
1 3 19 1 4 2 2 1 11 2
10 1

예제 출력 1

10
4 9
7 9
10 6
10 3
9 2
7 1
2 1
1 2
1 5
2 7
8
3 9
6 9
12 7
12 4
10 -2
7 -2
1 0
1 3
2
1 3
3 1
4
1 3
11 2
19 1
2 1
W3sicHJvYmxlbV9pZCI6IjI2OTkiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWFjYTlcdWM3OTBcdWM4MTAgXHVjZWU4XHViY2ExXHVjMmE0XHVkNWQwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWM4MTVcdWMyMThcdWM4OGNcdWQ0NWNcdWI5N2MgXHVhYzE2XHViMjk0IFx1YzgxMFx1Yzc0NCBcdWFjYTlcdWM3OTBcdWM4MTBcdWM3NzRcdWI3N2NcdWFjZTAgXHVkNTVjXHViMmU0LiBcdWFjYTlcdWM3OTAgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzQwIFx1YmFhOFx1YjRlMCBcdWFmMmRcdWM5ZDNcdWM4MTBcdWM3NzQgXHVhY2E5XHVjNzkwXHVjODEwXHVjNzNjXHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzljNCBcdWIyZTRcdWFjMDFcdWQ2MTVcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjljY1x1YzU3ZCwgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzU4IFx1YjQ1MCBcdWFmMmRcdWM5ZDNcdWM4MTBcdWM3NDQgXHVjNzg3XHViMjk0IFx1YmFhOFx1YjRlMCBcdWMxMjBcdWJkODRcdWM3NzQgXHViMmU0XHVhYzAxXHVkNjE1IFx1YjBiNFx1YmQ4MChcdWI2MTBcdWIyOTQgXHVhY2JkXHVhY2M0KVx1YzVkMCBcdWM3ODhcdWIyZTRcdWJhNzQsIFx1Yzc3NCBcdWIyZTRcdWFjMDFcdWQ2MTVcdWM3NDQgXHViY2ZjXHViODVkIFx1YjJlNFx1YWMwMVx1ZDYxNVx1Yzc3NFx1Yjc3Y1x1YWNlMCBcdWQ1NWNcdWIyZTQuIFx1Yzk4OSwgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzU4IFx1YjBiNFx1YmQ4MFx1YWMwMVx1Yzc3NCBcdWJhYThcdWI0NTAgMTgwXHViM2M0IFx1YmNmNFx1YjJlNCBcdWM3OTFcdWM3NDAgXHVhYzgzXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFjYTlcdWM3OTBcdWM4MTBcdWM3M2NcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0IFx1YzlkMVx1ZDU2OSBTXHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFNcdWM3NTggXHViYWE4XHViNGUwIFx1YWNhOVx1Yzc5MFx1YzgxMFx1Yzc0NCBcdWQzZWNcdWQ1NjhcdWQ1NThcdWIyOTQgXHVhYzAwXHVjN2E1IFx1Yzc5MVx1Yzc0MCBcdWJjZmNcdWI4NWQgKFx1YWNhOVx1Yzc5MCkgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzQ0IFx1Y2VlOFx1YmNhMVx1YzJhNCBcdWQ1ZDBcdWM3NzRcdWI3N2NcdWFjZTAgXHVkNTVjXHViMmU0LiBcdWNlZThcdWJjYTFcdWMyYTQgXHVkNWQwXHVjNzU4IFx1YWYyZFx1YzlkM1x1YzgxMFx1Yzc0MCBcdWJhYThcdWI0NTAgU1x1YzVkMCBcdWQzZWNcdWQ1NjhcdWI0MWMgXHVhY2E5XHVjNzkwXHVjODEwXHVjNzc0XHVjNWI0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gXHViOWNjXHVjNTdkLCBcdWJhYThcdWI0ZTAgXHVjODEwXHVjNzc0IFx1YWMxOVx1Yzc0MCBcdWM3N2NcdWM5YzFcdWMxMjAgXHVjMGMxXHVjNWQwIFx1Yzc4OFx1YjJlNFx1YmE3NCwgXHVjZWU4XHViY2ExXHVjMmE0IFx1ZDVkMFx1Yzc0MCBcdWMxMjBcdWJkODRcdWM3NzQgXHViNDIwIFx1YWM4M1x1Yzc3NFx1YjJlNC4gKFx1YzYyNFx1Yjk3OFx1Y2FiZCBcdWFkZjhcdWI5YmMpPFwvcD5cclxuXHJcbjxwPlx1YzU0NFx1Yjc5OCBcdWFkZjhcdWI5YmNcdWM1ZDBcdWMxMWMgXHVjOWQxXHVkNTY5XHVjNWQwIFx1ZDNlY1x1ZDU2OFx1YjQxYyBcdWM4MTBcdWM3NDAgXHVhZDc1XHVjNzQwIFx1YzgxMFx1YzczY1x1Yjg1YywgXHVjZWU4XHViY2ExXHVjMmE0IFx1ZDVkMFx1Yzc1OCBcdWFmMmRcdWM5ZDNcdWM4MTBcdWM3NDAgWFx1Yjg1YywgXHViY2MwXHVjNzQwIFx1YzEyMFx1YmQ4NFx1YzczY1x1Yjg1YyBcdWIwOThcdWQwYzBcdWIwYjggXHVhZGY4XHViOWJjXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC9vbmxpbmVqdWRnZWltYWdlcy5zMy1hcC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tXC91cGxvYWRcL2ltYWdlc1wvbGF0aWNlLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjI0OXB4OyB3aWR0aDo1ODRweFwiIFwvPjxcL3A+XHJcblxyXG48cD5cdWFjYTlcdWM3OTAgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzU4IFx1YWYyZFx1YzlkM1x1YzgxMFx1Yzc1OCBcdWM3N2NcdWJjMThcdWM4MDFcdWM3NzggXHVjMjFjXHVjMTFjXHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjxvbD5cclxuXHQ8bGk+XHVjY2FiIFx1YmM4OFx1YzlmOCBcdWFmMmRcdWM5ZDNcdWM4MTBcdWM3NDAgeVx1Yzg4Y1x1ZDQ1Y1x1YWMwMCBcdWFjMDBcdWM3YTUgXHVkMDcwIFx1YzgxMFx1Yzc3NFx1YjJlNC4gXHViOWNjXHVjNTdkLCBcdWFkZjhcdWI3ZWNcdWQ1NWMgXHVjODEwXHVjNzc0IDJcdWFjMWNcdWI3N2NcdWJhNzQsIHhcdWFjMDAgXHVjNzkxXHVjNzQwIFx1YzgxMFx1Yzc3NCBcdWNjYWIgXHViYzg4XHVjOWY4IFx1YzgxMFx1Yzc3NFx1YjJlNC48XC9saT5cclxuXHQ8bGk+XHVhZGY4IFx1YjJlNFx1Yzc0YyBcdWM4MTBcdWJkODBcdWQxMzBcdWIyOTQgXHVjMmRjXHVhY2M0XHViYzI5XHVkNWE1IFx1YzIxY1x1YzExY1x1Yzc3NFx1YjJlNC48XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5cdWFjYTlcdWM3OTBcdWM4MTBcdWM3NTggXHVjOWQxXHVkNTY5XHVjNzc0IFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1Y2VlOFx1YmNhMVx1YzJhNCBcdWQ1ZDBcdWM3NDQgXHVjNzdjXHViYzE4XHVjODAxXHVjNzc4IFx1YzIxY1x1YzExY1x1Yjg1YyBcdWNkOWNcdWI4MjVcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1Yzc1OCBcdWFjMWNcdWMyMTggUCgxICZsZTsgUCAmbGU7IDEwMDApXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWM5ZDFcdWQ1NjlcdWM1ZDAgXHVkM2VjXHVkNTY4XHViNDFjIFx1YWNhOVx1Yzc5MFx1YzgxMFx1Yzc1OCBcdWMyMTggTigzICZsZTsgTiAmbGU7IDUwKVx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YjA5OFx1YmEzOFx1YzljMCBcdWM5MDRcdWM3NDAgXHVjOWQxXHVkNTY5XHVjNWQwIFx1ZDNlY1x1ZDU2OFx1YjQxOFx1YzViNCBcdWM3ODhcdWIyOTQgXHVhY2E5XHVjNzkwXHVjODEwXHVjNzU4IFx1Yzg4Y1x1ZDQ1Y1x1YWMwMCBcdWQ1NWMgXHVjOTA0XHVjNWQwIDVcdWFjMWNcdWM1MjkgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAoXHViOWM4XHVjOWMwXHViOWM5IFx1YzkwNFx1Yzc0MCBcdWM3NzRcdWJjZjRcdWIyZTQgXHVjODAxXHVjNzQ0IFx1YzIxOCBcdWM3ODhcdWIyZTQpIFx1YmFhOFx1YjRlMCBcdWM4MTBcdWM3NDAgeFx1YzY0MCB5XHVjODhjXHVkNDVjXHVhYzAwIFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM5YzBcdWJhNzAsIFx1YWNmNVx1YmMzMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWJkODRcdWI0MThcdWM1YjQgXHVjNzg4XHViMmU0LiBcdWM4OGNcdWQ0NWNcdWIyOTQgXHVjODA4XHViMzEzXHVhYzEyXHVjNzc0IDIwXHViY2Y0XHViMmU0IFx1Yzc5MVx1YWM3MFx1YjA5OCBcdWFjMTlcdWM3NDAgXHVjODE1XHVjMjE4XHVjNzc0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNWQwIFx1YjMwMFx1ZDU3NFx1YzExYywgXHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWNlZThcdWJjYTFcdWMyYTQgXHVkNWQwXHVjNWQwIFx1ZDNlY1x1ZDU2OFx1YjQxYyBcdWM4MTBcdWM3NTggXHVjMjE4XHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHVhZGY4IFx1YjJlNFx1Yzc0YyBcdWM5MDRcdWJkODBcdWQxMzAgXHVjZWU4XHViY2ExXHVjMmE0XHVkNWQwXHVjNWQwIFx1ZDNlY1x1ZDU2OFx1YjQxYyBcdWFjYTlcdWM3OTBcdWM4MTBcdWM3NDQgXHVkNTVjIFx1YzkwNFx1YzVkMCBcdWQ1NThcdWIwOThcdWM1MjkgXHVjNzdjXHViYzE4XHVjODAxXHVjNzc4IFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YyBcdWNkOWNcdWQ1NWNcdWIyZTQuIHhcdWM2NDAgeVx1Yjk3YyBcdWFjZjVcdWJjMzFcdWM3M2NcdWI4NWMgXHVhZDZjXHViZDg0XHVkNTU4XHVjNWVjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4ifSx7InByb2JsZW1faWQiOiIyNjk5IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiQ29udmV4IEh1bGwgb2YgTGF0dGljZSBQb2ludHMiLCJkZXNjcmlwdGlvbiI6IjxwPkEgbGF0dGljZSBwb2ludCBpcyBhIHBvaW50IHdpdGggaW50ZWdlciBjb29yZGluYXRlcy4gQSBsYXR0aWNlIHBvbHlnb24gaXMgYSBwb2x5Z29uIHdpdGggYWxsIHZlcnRpY2VzIGxhdHRpY2UgcG9pbnRzLiZuYnNwOzxcL3A+XHJcblxyXG48cD5BIHBvbHlnb24gaXMgY29udmV4IGlmIGFueSBsaW5lIHNlZ21lbnQgYmV0d2VlbiB0d28gcG9pbnRzIG9mIHRoZSBwb2x5Z29uIGlzIGluc2lkZSAob3Igb24gdGhlIGJvdW5kYXJ5IG9mKSB0aGUgcG9seWdvbi4gRXF1aXZhbGVudGx5LCB0aGUgaW50ZXJpb3IgYW5nbGUgYXQgZWFjaCBwb2x5Z29uIHZlcnRleCBpcyBsZXNzIHRoYW4gMTgwIGRlZ3JlZXMuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkZvciBhIHNldCBTLCBvZiBsYXR0aWNlIHBvaW50cywgdGhlIGNvbnZleCBodWxsIGlzIHRoZSBzbWFsbGVzdCBjb252ZXggKGxhdHRpY2UpIHBvbHlnb24gd2hpY2ggY29udGFpbnMgYWxsIHBvaW50cyBvZiB0aGUgc2V0LiAoVGhlIHZlcnRpY2VzIG9mIHRoZSBjb252ZXggaHVsbCBtdXN0IGJlIG1lbWJlcnMgb2YgdGhlIHNldCBvZiBsYXR0aWNlIHBvaW50cykuIElmIGFsbCB0aGUgcG9pbnRzIGFyZSBvbiBhIHNpbmdsZSBzdHJhaWdodCBsaW5lLCB0aGUgY29udmV4IGh1bGwgd2lsbCBiZSBhIGxpbmUgc2VnbWVudCAoYSBkZWdlbmVyYXRlcG9seWdvbiAmbmRhc2g7IHNlZSByaWdodG1vc3QgZGlhZ3JhbSBiZWxvdykuIEluIHRoZSBkaWFncmFtcyBiZWxvdywgdGhlIHBvaW50cyBvZiB0aGUgc2V0IGFyZSBpbmRpY2F0ZWQgYnkgc29saWQgZG90cywgdGhlIHZlcnRpY2VzIG9mIHRoZSBjb252ZXggaHVsbCBieSBYJnJzcXVvO3MgYW5kIHRoZSBjb252ZXggaHVsbCBpcyBkcmF3biBjb25uZWN0aW5nIHRoZSB2ZXJ0aWNlcy4mbmJzcDs8XC9wPlxyXG5cclxuPHA+Tm90ZSB0aGF0IG5vdCBhbGwgcG9pbnRzIG9uIHRoZSBjb252ZXggaHVsbCBwb2x5Z29uIGFyZSB2ZXJ0aWNlcy48XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9sYXRpY2UucG5nXCIgc3R5bGU9XCJoZWlnaHQ6MjQ5cHg7IHdpZHRoOjU4NHB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPlRoZSB2ZXJ0aWNlcyBvZiBhIGxhdHRpY2UgcG9seWdvbiBhcmUgaW4gc3RhbmRhcmQgb3JkZXIgaWY6Jm5ic3A7PFwvcD5cclxuXHJcbjxvbD5cclxuXHQ8bGk+VGhlIGZpcnN0IHZlcnRleCBpcyB0aGUgb25lIHdpdGggdGhlIGxhcmdlc3QgeSB2YWx1ZS4gSWYgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgeSB2YWx1ZSwgdGhlIG9uZSB3aXRoIHRoZSBzbWFsbGVyIHggdmFsdWUgaXMgdGhlIGZpcnN0LiZuYnNwOzxcL2xpPlxyXG5cdDxsaT5WZXJ0aWNlcyBhcmUgZ2l2ZW4gaW4gY2xvY2t3aXNlIG9yZGVyIGFyb3VuZCB0aGUgcG9seWdvbi4mbmJzcDs8XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5Xcml0ZSBhIHByb2dyYW0gdGhhdCByZWFkcyBhIHNldCBvZiBsYXR0aWNlIHBvaW50cyBhbmQgb3V0cHV0cyB0aGUgdmVydGljZXMgb2YgdGhlIGNvbnZleCBodWxsIG9mIHRoZSBwb2ludHMgaW4gc3RhbmRhcmQgb3JkZXIuJm5ic3A7PFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiBpbnB1dCBjb250YWlucyBhIHNpbmdsZSBpbnRlZ2VyIFAsICgxICZsZTsgUCAmbGU7IDEwMDApLCB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGRhdGEgc2V0cyB0aGF0IGZvbGxvdy4gVGhlIGZpcnN0IGxpbmUgb2YgZWFjaCBkYXRhIHNldCBjb250YWlucyBhIGRlY2ltYWwgaW50ZWdlciBnaXZpbmcgdGhlIG51bWJlciBvZiBwb2ludHMgTiwgKDMgJmxlOyBOICZsZTsgNTApLCBpbiB0aGUgc2V0LiBUaGUgcmVtYWluaW5nIGxpbmVzIGluIHRoZSBkYXRhIHNldCBjb250YWluIHRoZSBwb2ludHMgaW4gdGhlIHNldCwgYXQgbW9zdCA1IHBvaW50cyBwZXIgbGluZSAodGhlIGxhc3QgbGluZSBtYXkgaGF2ZSBmZXdlcikuIEVhY2ggcG9pbnQgY29uc2lzdHMgb2YgMiBzcGFjZSBzZXBhcmF0ZWQgZGVjaW1hbCBpbnRlZ2VyIHZhbHVlcyByZXByZXNlbnRpbmcgdGhlIHggYW5kIHkgY29vcmRpbmF0ZXMgcmVzcGVjdGl2ZWx5LiZuYnNwOzxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIGRhdGEgc2V0IHRoZXJlIGFyZSBtdWx0aXBsZSBsaW5lcyBvZiBvdXRwdXQuIFRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zIGEgZGVjaW1hbCBpbnRlZ2VyIGdpdmluZyBhIGRlY2ltYWwgaW50ZWdlciBnaXZpbmcgdGhlIHRvdGFsIG51bWJlciBvZiB2ZXJ0aWNlcyBvZiB0aGUgY29udmV4IGh1bGwuIFRoZSB2ZXJ0aWNlcyBvZiB0aGUgY29udmV4IGh1bGwgZm9sbG93LCBvbmUgcGVyIGxpbmUgaW4gc3RhbmRhcmQgb3JkZXIuIEVhY2ggbGluZSBjb250YWlucyB0aGUgZGVjaW1hbCBpbnRlZ2VyIHggY29vcmRpbmF0ZSwgYSBzaW5nbGUgc3BhY2UgYW5kIHRoZSBkZWNpbWFsIGludGVnZXIgeSBjb29yZGluYXRlLiZuYnNwOzxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2gifV0=

출처

ICPC > Regionals > North America > Greater New York Region > 2009 Greater New York Programming Contest G번