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

문제

Brainfuck은 Urban Müller가 1993년에 만든 프로그래밍 언어이다. 그의 목적은 역사상 가장 작은 튜링 완전 언어(Turing -complete language)의 컴파일러를 만드는 것이었다.위키백과에는 다음과 같은 설명이 적혀져 있다. (designed to challenge and amuse programmers, and was not made to be suitable for practical use)

이 언어는 0으로 초기화 된 크기가 32768바이트인 바이트 배열, 배열의 맨 첫 바이트를 가리키는 포인터를 가지고 있다.

다음과 같이 7가지 명령어를 가지고 있으며, 각 명령어는 문자 1글자이다. (원래 8가지 명령어를 가지고 있지만, 문제를 위해 하나를 지웠다)

  • >: 포인터를 증가시킨다. 만약, 포인터 값이 32767이면 0이된다.
  • <: 포인터를 감소시킨다. 만약, 포인터 값이 0이면 32767이 된다.
  • +: 포인터가 가리키는 값을 증가시킨다. 255를 증가시키면 0이 된다.
  • -: 포인터가 가리키는 값을 감소시킨다. 0을 감소시키면 255가 된다.
  • .: 포인터가 가리키는 값을 ASCII문자로 출력한다.
  • [: 포인터가 가리키는 값이 0이면, 짝이 되는 뒤쪽의 ]로 이동한다.
  • ]: 포인터가 가리키는 값이 0이 아니면, 짝이되는 앞쪽의 [로 이동한다.

Brainfuck 프로그램이 주어졌을 때, 이 프로그램의 출력을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 프로그램의 개수 T(1 ≤ T ≤ 100)가 주어진다. 각 프로그램은 한줄 또는 그 이상으로 구성되어 있으며, end만 적혀있는 줄로 끝난다. 프로그램에 올바르지 않은 문자 (<>+-.[])가 있다면, 이는 무시하고 넘어가야 한다. %는 주석을 의미하며, %가 나온 뒤에 나오는 해당 줄의 문자는 모두 무시한다. 프로그램의 최대 명령어 개수는 128,000이다.

출력

각 프로그램의 결과를 다음과 같이 출력한다. 첫째 줄에 PROGRAM #n을 출력한다. n은 프로그램 번호이다. (첫 번째 프로그램부터 차례대로 1이고, 1 ≤ n ≤ N이다). 둘째 줄에는 프로그램의 결과를 출력한다. 만약 []가 짝이 맞지 않을 대는 COMPILE ERROR를 출력하면 된다. 출력에서 여러 줄을 출력할 수도 있다.

예제 입력 1

3
++++++++[>+++++++++ % hello-world.
<-]>.<+++++[>++++++<-]>-.+++++++..
+++.<++++++++[>>++++<<-]>>.<<++++[>
------<-]>.<++++[>++++++<-]>.+++.
------.--------.>+.
end
+++[>+++++++[.
end
%% Print alphabet, A-Z.
+ + + + + +++++++++++++++++++++>
++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++
+< [ >.+<- ]
end

예제 출력 1

PROGRAM #1:
Hello World!
PROGRAM #2:
COMPILE ERROR
PROGRAM #3:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
W3sicHJvYmxlbV9pZCI6IjI3MzMiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJCcmFpbmYqY2siLCJkZXNjcmlwdGlvbiI6IjxwPkJyYWluZnVja1x1Yzc0MCBVcmJhbiBNJnV1bWw7bGxlclx1YWMwMCAxOTkzXHViMTQ0XHVjNWQwIFx1YjljY1x1YjRlMCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3OThcdWJjMGQgXHVjNWI4XHVjNWI0XHVjNzc0XHViMmU0LiBcdWFkZjhcdWM3NTggXHViYWE5XHVjODAxXHVjNzQwIFx1YzVlZFx1YzBhY1x1YzBjMSBcdWFjMDBcdWM3YTUgXHVjNzkxXHVjNzQwIFx1ZDI5Y1x1YjljMSBcdWM2NDRcdWM4MDQgXHVjNWI4XHVjNWI0KFR1cmluZyAtY29tcGxldGUgbGFuZ3VhZ2UpXHVjNzU4IFx1Y2VmNFx1ZDMwY1x1Yzc3Y1x1YjdlY1x1Yjk3YyBcdWI5Y2NcdWI0ZGNcdWIyOTQgXHVhYzgzXHVjNzc0XHVjNWM4XHViMmU0LjxhIGhyZWY9XCJodHRwczpcL1wvZW4ud2lraXBlZGlhLm9yZ1wvd2lraVwvQnJhaW5mdWNrXCI+XHVjNzA0XHVkMGE0XHViYzMxXHVhY2ZjPFwvYT5cdWM1ZDBcdWIyOTQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1Yzc0MCBcdWMxMjRcdWJhODVcdWM3NzQgXHVjODAxXHVkNjAwXHVjODM4IFx1Yzc4OFx1YjJlNC4gKGRlc2lnbmVkIHRvIGNoYWxsZW5nZSBhbmQgYW11c2UgcHJvZ3JhbW1lcnMsIGFuZCB3YXMgbm90IG1hZGUgdG8gYmUgc3VpdGFibGUgZm9yIHByYWN0aWNhbCB1c2UpPFwvcD5cclxuXHJcbjxwPlx1Yzc3NCBcdWM1YjhcdWM1YjRcdWIyOTQgMFx1YzczY1x1Yjg1YyBcdWNkMDhcdWFlMzBcdWQ2NTQgXHViNDFjIFx1ZDA2Y1x1YWUzMFx1YWMwMCAzMjc2OFx1YmMxNFx1Yzc3NFx1ZDJiOFx1Yzc3OCBcdWJjMTRcdWM3NzRcdWQyYjggXHViYzMwXHVjNWY0LCBcdWJjMzBcdWM1ZjRcdWM3NTggXHViOWU4IFx1Y2NhYiBcdWJjMTRcdWM3NzRcdWQyYjhcdWI5N2MgXHVhYzAwXHViOWFjXHVkMGE0XHViMjk0IFx1ZDNlY1x1Yzc3OFx1ZDEzMFx1Yjk3YyBcdWFjMDBcdWM5YzBcdWFjZTAgXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHVjNzc0IDdcdWFjMDBcdWM5YzAgXHViYTg1XHViODM5XHVjNWI0XHViOTdjIFx1YWMwMFx1YzljMFx1YWNlMCBcdWM3ODhcdWM3M2NcdWJhNzAsIFx1YWMwMSBcdWJhODVcdWI4MzlcdWM1YjRcdWIyOTQgXHViYjM4XHVjNzkwIDFcdWFlMDBcdWM3OTBcdWM3NzRcdWIyZTQuIChcdWM2ZDBcdWI3OTggOFx1YWMwMFx1YzljMCBcdWJhODVcdWI4MzlcdWM1YjRcdWI5N2MgXHVhYzAwXHVjOWMwXHVhY2UwIFx1Yzc4OFx1YzljMFx1YjljYywgXHViYjM4XHVjODFjXHViOTdjIFx1YzcwNFx1ZDU3NCBcdWQ1NThcdWIwOThcdWI5N2MgXHVjOWMwXHVjNmUwXHViMmU0KTxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPjxjb2RlPiZndDs8XC9jb2RlPjogXHVkM2VjXHVjNzc4XHVkMTMwXHViOTdjIFx1Yzk5ZFx1YWMwMFx1YzJkY1x1ZDBhOFx1YjJlNC4gXHViOWNjXHVjNTdkLCBcdWQzZWNcdWM3NzhcdWQxMzAgXHVhYzEyXHVjNzc0IDMyNzY3XHVjNzc0XHViYTc0IDBcdWM3NzRcdWI0MWNcdWIyZTQuPFwvbGk+XHJcblx0PGxpPjxjb2RlPiZsdDs8XC9jb2RlPjogXHVkM2VjXHVjNzc4XHVkMTMwXHViOTdjIFx1YWMxMFx1YzE4Y1x1YzJkY1x1ZDBhOFx1YjJlNC4gXHViOWNjXHVjNTdkLCBcdWQzZWNcdWM3NzhcdWQxMzAgXHVhYzEyXHVjNzc0IDBcdWM3NzRcdWJhNzQgMzI3NjdcdWM3NzQgXHViNDFjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT48Y29kZT4rPFwvY29kZT46IFx1ZDNlY1x1Yzc3OFx1ZDEzMFx1YWMwMCBcdWFjMDBcdWI5YWNcdWQwYTRcdWIyOTQgXHVhYzEyXHVjNzQ0IFx1Yzk5ZFx1YWMwMFx1YzJkY1x1ZDBhOFx1YjJlNC4gMjU1XHViOTdjIFx1Yzk5ZFx1YWMwMFx1YzJkY1x1ZDBhNFx1YmE3NCAwXHVjNzc0IFx1YjQxY1x1YjJlNC48XC9saT5cclxuXHQ8bGk+PGNvZGU+LTxcL2NvZGU+OiBcdWQzZWNcdWM3NzhcdWQxMzBcdWFjMDAgXHVhYzAwXHViOWFjXHVkMGE0XHViMjk0IFx1YWMxMlx1Yzc0NCBcdWFjMTBcdWMxOGNcdWMyZGNcdWQwYThcdWIyZTQuIDBcdWM3NDQgXHVhYzEwXHVjMThjXHVjMmRjXHVkMGE0XHViYTc0IDI1NVx1YWMwMCBcdWI0MWNcdWIyZTQuPFwvbGk+XHJcblx0PGxpPjxjb2RlPi48XC9jb2RlPjogXHVkM2VjXHVjNzc4XHVkMTMwXHVhYzAwIFx1YWMwMFx1YjlhY1x1ZDBhNFx1YjI5NCBcdWFjMTJcdWM3NDQgQVNDSUlcdWJiMzhcdWM3OTBcdWI4NWMgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT48Y29kZT5bPFwvY29kZT46IFx1ZDNlY1x1Yzc3OFx1ZDEzMFx1YWMwMCBcdWFjMDBcdWI5YWNcdWQwYTRcdWIyOTQgXHVhYzEyXHVjNzc0IDBcdWM3NzRcdWJhNzQsIFx1YzlkZFx1Yzc3NCBcdWI0MThcdWIyOTQgXHViNGE0XHVjYWJkXHVjNzU4IF1cdWI4NWMgXHVjNzc0XHViM2Q5XHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT48Y29kZT5dPFwvY29kZT46IFx1ZDNlY1x1Yzc3OFx1ZDEzMFx1YWMwMCBcdWFjMDBcdWI5YWNcdWQwYTRcdWIyOTQgXHVhYzEyXHVjNzc0IDBcdWM3NzQgXHVjNTQ0XHViMmM4XHViYTc0LCBcdWM5ZGRcdWM3NzRcdWI0MThcdWIyOTQgXHVjNTVlXHVjYWJkXHVjNzU4IFtcdWI4NWMgXHVjNzc0XHViM2Q5XHVkNTVjXHViMmU0LjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPkJyYWluZnVjayBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NzQgXHVjOGZjXHVjNWI0XHVjODRjXHVjNzQ0IFx1YjU0YywgXHVjNzc0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc1OCBcdWNkOWNcdWI4MjVcdWM3NDQgXHVjZDljXHViODI1XHVkNTU4XHViMjk0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWM3OTFcdWMxMzFcdWQ1NThcdWMyZGNcdWM2MjQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWNjYWJcdWM5ZjggXHVjOTA0XHVjNWQwIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc1OCBcdWFjMWNcdWMyMTggVCgxICZsZTsgVCAmbGU7IDEwMClcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWFjMDEgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQwIFx1ZDU1Y1x1YzkwNCBcdWI2MTBcdWIyOTQgXHVhZGY4IFx1Yzc3NFx1YzBjMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWMxMzFcdWI0MThcdWM1YjQgXHVjNzg4XHVjNzNjXHViYTcwLCA8Y29kZT5lbmQ8XC9jb2RlPlx1YjljYyBcdWM4MDFcdWQ2MDBcdWM3ODhcdWIyOTQgXHVjOTA0XHViODVjIFx1YjA1ZFx1YjA5Y1x1YjJlNC4gXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNWQwIFx1YzYyY1x1YmMxNFx1Yjk3NFx1YzljMCBcdWM1NGFcdWM3NDAgXHViYjM4XHVjNzkwICg8Y29kZT4mbHQ7Jmd0OystLltdPFwvY29kZT4pXHVhYzAwIFx1Yzc4OFx1YjJlNFx1YmE3NCwgXHVjNzc0XHViMjk0IFx1YmIzNFx1YzJkY1x1ZDU1OFx1YWNlMCBcdWIxMThcdWM1YjRcdWFjMDBcdWM1N2MgXHVkNTVjXHViMmU0LiA8Y29kZT4lPFwvY29kZT5cdWIyOTQgXHVjOGZjXHVjMTFkXHVjNzQ0IFx1Yzc1OFx1YmJmOFx1ZDU1OFx1YmE3MCwgPGNvZGU+JTxcL2NvZGU+XHVhYzAwIFx1YjA5OFx1YzYyOCBcdWI0YTRcdWM1ZDAgXHViMDk4XHVjNjI0XHViMjk0IFx1ZDU3NFx1YjJmOSBcdWM5MDRcdWM3NTggXHViYjM4XHVjNzkwXHViMjk0IFx1YmFhOFx1YjQ1MCBcdWJiMzRcdWMyZGNcdWQ1NWNcdWIyZTQuIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc1OCBcdWNkNWNcdWIzMDAgXHViYTg1XHViODM5XHVjNWI0IFx1YWMxY1x1YzIxOFx1YjI5NCAxMjgsMDAwXHVjNzc0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YWMwMSBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NTggXHVhY2IwXHVhY2ZjXHViOTdjIFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NzQgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiBcdWNjYWJcdWM5ZjggXHVjOTA0XHVjNWQwIDxjb2RlPlBST0dSQU0gI248XC9jb2RlPlx1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIDxjb2RlPm48XC9jb2RlPlx1Yzc0MCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YTggXHViYzg4XHVkNjM4XHVjNzc0XHViMmU0LiAoXHVjY2FiIFx1YmM4OFx1YzlmOCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWJkODBcdWQxMzAgXHVjYzI4XHViODQwXHViMzAwXHViODVjIDFcdWM3NzRcdWFjZTAsIDEgJmxlOyA8Y29kZT5uPFwvY29kZT4gJmxlOyBOXHVjNzc0XHViMmU0KS4gXHViNDU4XHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NTggXHVhY2IwXHVhY2ZjXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHViOWNjXHVjNTdkIDxjb2RlPls8XC9jb2RlPlx1YjA5OCA8Y29kZT5dPFwvY29kZT5cdWFjMDAgXHVjOWRkXHVjNzc0IFx1YjlkZVx1YzljMCBcdWM1NGFcdWM3NDQgXHViMzAwXHViMjk0IDxjb2RlPkNPTVBJTEUgRVJST1I8XC9jb2RlPlx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NThcdWJhNzQgXHViNDFjXHViMmU0LiBcdWNkOWNcdWI4MjVcdWM1ZDBcdWMxMWMgXHVjNWVjXHViN2VjIFx1YzkwNFx1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NjAgXHVjMjE4XHViM2M0IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4ifSx7InByb2JsZW1faWQiOiIyNzMzIiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiYnJhaW5mKmNrIiwiZGVzY3JpcHRpb24iOiI8cD5icmFpbmYqY2sgaXMgdGhlIHVuZ29kbHkgY3JlYXRpb24gb2YgVXJiYW4gTSZ1dW1sO2xsZXIsIHdob3NlIGdvYWwgd2FzIGFwcGFyZW50bHkgdG8gY3JlYXRlIGEgVHVyaW5nLWNvbXBsZXRlIGxhbmd1YWdlIGZvciB3aGljaCBoZSBjb3VsZCB3cml0ZSB0aGUgc21hbGxlc3QgY29tcGlsZXIgZXZlci4gaHR0cDpcL1wvZW4ud2lraXBlZGlhLm9yZyBkZWZpbmVzIGl0IGFzICZsZHF1bzthIGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlIGRlc2lnbmVkIHRvIGNoYWxsZW5nZSBhbmQgYW11c2UgcHJvZ3JhbW1lcnMsIGFuZCBpcyBub3Qgc3VpdGFibGUgZm9yIHByYWN0aWNhbCB1c2UuIEl0cyBuYW1lIGhhcyBiZWVuIHZhcmlvdXNseSBldXBoZW1pemVkLCBhcyBpbiBicmFpbmYqY2suJnJkcXVvOyZuYnNwOzxcL3A+XHJcblxyXG48cD5BIGJyYWluZipjayBwcm9ncmFtIGhhcyBhbiBpbXBsaWNpdCBieXRlIHBvaW50ZXIsIGNhbGxlZCAmbGRxdW87dGhlIHBvaW50ZXImcmRxdW87LCB3aGljaCBpcyBmcmVlIHRvIG1vdmUgYXJvdW5kIHdpdGhpbiBhbiBhcnJheSBvZiAzMjc2OCBieXRlcywgaW5pdGlhbGx5IGFsbCBzZXQgdG8gemVyby4gVGhlIHBvaW50ZXIgaXRzZWxmIGlzIGluaXRpYWxpemVkIHRvIHBvaW50IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBhcnJheS4mbmJzcDs8XC9wPlxyXG5cclxuPHA+VGhlIGJyYWluZipjayBwcm9ncmFtbWluZyBsYW5ndWFnZSBjb25zaXN0cyBvZiBzZXZlbiBjb21tYW5kcywgZWFjaCBvZiB3aGljaCBpcyByZXByZXNlbnRlZCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuIE5vdGU6ICZsZHF1bztJbmR1c3RyeSBzdGFuZGFyZCZyZHF1bzsgYnJhaW5mKmNrIGFjdHVhbGx5IGhhcyBlaWdodCBjb21tYW5kcywgYnV0IGZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBwcm9ibGVtIG9uZSBjb21tYW5kIHdhcyBpbnRlbnRpb25hbGx5IG9taXR0ZWQuJm5ic3A7PFwvcD5cclxuXHJcbjx0YWJsZSBjbGFzcyA9IFwidGFibGUgdGFibGUtYm9yZGVyZWRcIj5cclxuPHRoZWFkPjx0cj48dGg+Q09NTUFORDxcL3RoPjx0aD5PUEVSQVRJT048XC90aD48XC90cj48XC90aGVhZD5cclxuPHRib2R5PlxyXG48dHI+PHRkPiZndDs8XC90ZD48dGQ+SW5jcmVtZW50IHRoZSBwb2ludGVyLiBJbmNyZW1lbnRpbmcgYSBwb2ludGVyIHZhbHVlIG9mIDMyNzY3IHJlc3VsdHMgaW4gYSBwb2ludGVyIHZhbHVlIG9mIDAuPFwvdGQ+PFwvdHI+XHJcbjx0cj48dGQ+Jmx0OzxcL3RkPjx0ZD5EZWNyZW1lbnQgdGhlIHBvaW50ZXIuIERlY3JlbWVudGluZyBhIHBvaW50ZXIgdmFsdWUgb2YgMCByZXN1bHRzIGluIGEgcG9pbnRlciB2YWx1ZSBvZiAzMjc2Ny48XC90ZD48XC90cj5cclxuPHRyPjx0ZD4rPFwvdGQ+PHRkPkluY3JlbWVudCB0aGUgYnl0ZSBhdCB0aGUgcG9pbnRlci4gSW5jcmVtZW50aW5nIHRoZSBieXRlIHZhbHVlIDI1NSByZXN1bHRzIGluIHRoZSBieXRlIHZhbHVlIDAuPFwvdGQ+PFwvdHI+XHJcbjx0cj48dGQ+LTxcL3RkPjx0ZD5EZWNyZW1lbnQgdGhlIGJ5dGUgYXQgdGhlIHBvaW50ZXIuIERlY3JlbWVudGluZyB0aGUgYnl0ZSB2YWx1ZSAwIHJlc3VsdHMgaW4gdGhlIGJ5dGUgdmFsdWUgMjU1LjxcL3RkPjxcL3RyPlxyXG48dHI+PHRkPi48XC90ZD48dGQ+T3V0cHV0IHRoZSBjaGFyYWN0ZXIgd2hvc2UgQVNDSUkgdmFsdWUgaXMgdGhlIGJ5dGUgYXQgdGhlIHBvaW50ZXI8XC90ZD48XC90cj5cclxuPHRyPjx0ZD5bPFwvdGQ+PHRkPkp1bXAgZm9yd2FyZCBwYXN0IHRoZSBtYXRjaGluZyBdIGlmIHRoZSBieXRlIGF0IHRoZSBwb2ludGVyIGlzIHplcm8uIDxcL3RkPjxcL3RyPlxyXG48dHI+PHRkPl08XC90ZD48dGQ+SnVtcCBiYWNrd2FyZCB0byB0aGUgbWF0Y2hpbmcgWyB1bmxlc3MgdGhlIGJ5dGUgYXQgdGhlIHBvaW50ZXIgaXMgemVyby48XC90ZD48XC90cj5cclxuPFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG5cclxuPHA+Rm9yIHRoaXMgcHJvYmxlbSwgeW91IHdpbGwgd3JpdGUgYSBwcm9ncmFtIHRoYXQgcmVhZHMgaW4sIHBhcnNlcyBhbmQgZXhlY3V0ZXMgYSBicmFpbmYqY2sgcHJvZ3JhbS4mbmJzcDs8XC9wPiIsImlucHV0IjoiPHA+VGhlIGZpcnN0IGxpbmUgb2YgaW5wdXQgY29udGFpbnMgYW4gaW50ZWdlciBOLCgxICZsdDs9IE4gJmx0Oz0gMTAwKSwgd2hpY2ggaXMgdGhlIG51bWJlciBvZiBicmFpbmYqY2sgcHJvZ3JhbXMgdGhhdCBmb2xsb3cuIEVhY2ggcHJvZ3JhbSBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBsaW5lcyBvZiBicmFpbmYqY2sgY29tbWFuZHMgZW5kaW5nIHdpdGggYSBsaW5lIHRoYXQgY29uc2lzdHMgb2YgdGhlIHdvcmQgJmxkcXVvO2VuZCZyZHF1bzsuIFlvdXIgcHJvZ3JhbSBzaG91bGQgaWdub3JlIGFueSBpbGxlZ2FsIGNoYXJhY3RlcnMgKEkuRS4gYW55IGNoYXJhY3RlciBub3QgaW4gdGhlIHNldDogJmx0OyZndDsrPS5bXSksIElmIGEgcGVyY2VudCBzaWduICglKSBpcyBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZywgdGhlIHJlbWFpbmRlciBvZiB0aGUgbGluZSBzaG91bGQgYmUgZGlzY2FyZGVkLiBUaGlzIGNvbnN0aXR1dGVzIGEgY29tbWVudC4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbW1hbmRzIGluIGEgYnJhaW5mKmNrIHByb2dyYW0gaXMgMTI4MDAwLiZuYnNwOzxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIGJyYWluZipjayBwcm9ncmFtLCB5b3VyIHByb2dyYW0gc2hvdWxkIG91dHB1dCB0aGUgdGV4dCAmbGRxdW87UFJPR1JBTSAjbjomcmRxdW87IG9uIGEgc2luZ2xlIGxpbmUgKHdoZXJlIG4gaXMgdGhlIHByb2dyYW0gbnVtYmVyOiAxICZsdDs9IG4gJmx0Oz0gTiksIGZvbGxvd2VkIGJ5IHRoZSBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZSBicmFpbmYqY2sgcHJvZ3JhbSwgZm9sbG93ZWQgYnkgYSBzaW5nbGUgbmV3bGluZSBjaGFyYWN0ZXIuIFRoZSBvbmx5IHBvc3NpYmxlIHBhcnNpbmcgZXJyb3IgdGhhdCBjYW4gb2NjdXIgaXMgaWYgdGhlcmUgaXMgYW4gdW5tYXRjaGVkIFsgb3IgXSBpbiB0aGUgYnJhaW5mKmNrIHByb2dyYW0uIElmIHlvdXIgcHJvZ3JhbSBlbmNvdW50ZXJzIHN1Y2ggYW4gZXJyb3IsIGl0IHNob3VsZCBzaW1wbHkgcHJpbnQgQ09NUElMRSBFUlJPUiBpbnN0ZWFkIG9mIGV4ZWN1dGluZyB0aGUgcHJvZ3JhbS4gQWxsIGJyYWluZipjayBwcm9ncmFtcyB3aWxsIHVzZSBubyBtb3JlIHRoYW4gdGhlIHNwZWNpZmllZCAzMjc2OCBieXRlcyBvZiBtZW1vcnkuJm5ic3A7PFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCJ9XQ==

출처

ICPC > Regionals > North America > Greater New York Region > 2005 Greater New York Programming Contest E번