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

문제

NTCIP(National Transportation Communications for ITS Protocol)는 고속 통신을 하기 위해 메시지를 MULTI(Markup Language for Transportation Information)을 사용한다. MULTI 문자열은 텍스트의 포맷 등을 묘사하는 내장된 태그와 함께 구성되어있다. 태그는 '[',']'로 열고 닫으며, 문자에 '['를 사용하기 위해서는 '[['를 이용하여 표시한다. (닫는 괄호도 마찬가지로 ']]') 각 문자는 배열의 한 칸씩 차지한다.

다음은 태그와 설명이다.

태그 설명
[nl] 새로운 행을 시작한다.
[sc<digit>] 각 문자마다 <digit>개의 공백을 추가한다.
[/sc] [sc0]과 같다. 공백을 추가하지 않는다.
[jl2] 왼쪽 정렬(left justified text), 첫 번째 문자가 줄의 제일 왼쪽에 등장한다.
[jl3] 가운데 정렬(center justified text), 양쪽 공백의 수가 같거나 뒤쪽 공백의 수가 하나 더 많도록 한다.
[jl4] 오른쪽 정렬(right justified text), 마지막 문자가 줄의 가장 마지막에 등장한다.
[jl5] 양쪽 정렬(줄에 가득차도록 각 문자 사이 공백을 일정하게 최대로 많이 추가한다. 가운데 정렬한다.)

한 줄에 24글자가 있을 때의 예이다. (□는 빈 칸을 나타낸다)

MULTI 문자열 출력
[jl2]MESSAGE MESSAGE□□□□□□□□□□□□□□□□□
[jl3]MESSAGE □□□□□□□□MESSAGE□□□□□□□□
[jl4]MESSAGE □□□□□□□□□□□□□□□□□MESSAGE
[jl2][sc2]MESSAGE M□□E□□S□□S□□A□□G□□E□□□□□
[jl5]MESSAGE □□M□□E□□S□□S□□A□□G□□E□□□
[jl2]THIS[jl3]IS A[jl4]MESSAGE THIS□□□□□□IS A□□□MESSAGE

태그는 대소문자를 구분하지 않는다. [nl]=[NL]=[Nl]=[nL]

기본은 왼쪽 정렬, 공백숫자는 0이다.

정렬과 공백추가 태그는 [nl]태그 다음에도 유지된다.

[jl2]와 [l5] 태그는 줄에 다른 문자가 출력되지 않았을 때만 사용할 수 있다. 그렇지 않으면 에러 (TAG CONFLICT)

[jl5]가 사용되면, 다른 정렬 태그는 사용할 수 없다. 그렇지 않으면 에러 (TAG CONFLICT)

[jl3] 태그는 [jl4] 태그 다음에 사용할 수 없다. (TAG CONFLICT)

[jl?] 태그는 같은 정렬을 또 사용하더라도 TAG CONFLICT가 일어나지 않는다.

양쪽 정렬에서는 [sc]태그가 무시된다.

한 줄에 너무 많은 문자가 필요하거나 메시지에 너무 많은 줄이 필요하면 TOO BIG 에러가 발생한다.

[nl]태그는 다음 문자가 출력되기 전까지 작동하지 않는다.

왼쪽 정렬과 가운데 정렬이 한 줄에 동시에 등장하면, 왼쪽 정렬된 문자의 맨 뒤에 적어도 하나의 공백이 있어야 한다. 그렇지 않을 경우 TOO BIG 에러가 발생한다.

가운데 정렬과 오른쪽 정렬이 한 줄에 동시에 등장하면, 가운데 정렬된 문자의 맨 뒤에 적어도 하나의 공백이 있어야 한다. 그렇지 않을 경우 TOO BIG 에러가 발생한다.

왼쪽 정렬과 오른쪽 정렬이 한 줄에 동시에 등장하면, 왼쪽 정렬된 문자의 맨 뒤에 적어도 하나의 공백이 있어야 한다. 그렇지 않을 경우 TOO BIG 에러가 발생한다.

허용되는 태그는 위의 7개만 가능하다. 그렇지 않으면 BAD TAG 에러가 발생한다.

잘못된 태그 사용이나 괄호 쌍이 맞지 않은 경우도 BAD TAG 에러가 발생한다.

MULTI 문자열을 입력받아서 올바른 메시지 또는 에러 메시지를 출력하는 프로그램을 작성하시오

입력

첫째 줄은 데이터 세트의 수 N(1 ≤ N ≤ 100)이 입력으로 들어온다.각 데이터 세트의 첫 줄은 R(1 ≤ R ≤ 25)과 C(1 ≤ C ≤ 80)가 공백으로 구분되어 들어온다. (R은 행 수, C는 열 수) 다음 R개의 줄에 MULTI 문자열이 들어온다.

출력

각 데이터 세트에 대해 데이터 세트 번호를 출력하고, 다음줄부터 R개의 줄에 에러 메시지 또는 메시지를 출력한다. (C개의 문자열을 정확히 출력해야 한다) 각 데이터 세트의 마지막 줄은 공백으로 구분한다. (채점의 편의를 위해, 에러가 있는 데이터 세트는 한 가지 타입의 에러만 가지고 있다)

예제 입력 1

7 
4 24 [jl2]MESSAGE[nl][jl3]MESSAGE[nl][jl4]MESSAGE 
2 24 This[jl3]is a[jl4]message 
2 24 This is a very long message which will not fit 
4 24 This[nl]message[nl]has[nl]too[nl]many[nl]lines 
2 32 [jl3]This message has a [[ and a ]] 
2 32 This is a bad tag[xy34] 
2 32 [jl3]This message [jl5] has a tag conflict.

예제 출력 1

1 
MESSAGE                 
        MESSAGE         
                 MESSAGE
                        

2
This      is a   message
                        

3
TOO BIG

4
TOO BIG

5
  This message has a [ and a ]  
                                

6
BAD TAG

7
TAG CONFLICT
W3sicHJvYmxlbV9pZCI6IjI3MjQiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWJhNTRcdWMyZGNcdWM5YzAgXHViY2MwXHVkNjU4XHVhZTMwIiwiZGVzY3JpcHRpb24iOiI8cD5OVENJUChOYXRpb25hbCBUcmFuc3BvcnRhdGlvbiBDb21tdW5pY2F0aW9ucyBmb3IgSVRTIFByb3RvY29sKVx1YjI5NCBcdWFjZTBcdWMxOGQgXHVkMWI1XHVjMmUwXHVjNzQ0IFx1ZDU1OFx1YWUzMCBcdWM3MDRcdWQ1NzQgXHViYTU0XHVjMmRjXHVjOWMwXHViOTdjIE1VTFRJKE1hcmt1cCBMYW5ndWFnZSBmb3IgVHJhbnNwb3J0YXRpb24gSW5mb3JtYXRpb24pXHVjNzQ0IFx1YzBhY1x1YzZhOVx1ZDU1Y1x1YjJlNC4gTVVMVEkgXHViYjM4XHVjNzkwXHVjNWY0XHVjNzQwIFx1ZDE0ZFx1YzJhNFx1ZDJiOFx1Yzc1OCBcdWQzZWNcdWI5ZjcgXHViNGYxXHVjNzQ0IFx1YmIxOFx1YzBhY1x1ZDU1OFx1YjI5NCBcdWIwYjRcdWM3YTVcdWI0MWMgXHVkMGRjXHVhZGY4XHVjNjQwIFx1ZDU2OFx1YWVkOCBcdWFkNmNcdWMxMzFcdWI0MThcdWM1YjRcdWM3ODhcdWIyZTQuIFx1ZDBkY1x1YWRmOFx1YjI5NCAmIzM5O1smIzM5OywmIzM5O10mIzM5O1x1Yjg1YyBcdWM1ZjRcdWFjZTAgXHViMmViXHVjNzNjXHViYTcwLCBcdWJiMzhcdWM3OTBcdWM1ZDAgJiMzOTtbJiMzOTtcdWI5N2MgXHVjMGFjXHVjNmE5XHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NFx1YzExY1x1YjI5NCAmIzM5O1tbJiMzOTtcdWI5N2MgXHVjNzc0XHVjNmE5XHVkNTU4XHVjNWVjIFx1ZDQ1Y1x1YzJkY1x1ZDU1Y1x1YjJlNC4gKFx1YjJlYlx1YjI5NCBcdWFkMDRcdWQ2MzhcdWIzYzQgXHViOWM4XHVjYzJjXHVhYzAwXHVjOWMwXHViODVjICYjMzk7XV0mIzM5OykgXHVhYzAxIFx1YmIzOFx1Yzc5MFx1YjI5NCBcdWJjMzBcdWM1ZjRcdWM3NTggXHVkNTVjIFx1Y2U3OFx1YzUyOSBcdWNjMjhcdWM5YzBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjJlNFx1Yzc0Y1x1Yzc0MCBcdWQwZGNcdWFkZjhcdWM2NDAgXHVjMTI0XHViYTg1XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6NzAlO1wiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6MTAlO1wiPlx1ZDBkY1x1YWRmODxcL3RoPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ3aWR0aDo2MCU7XCI+XHVjMTI0XHViYTg1PFwvdGg+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90aGVhZD5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bbmxdPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWMwYzhcdWI4NWNcdWM2YjQgXHVkNTg5XHVjNzQ0IFx1YzJkY1x1Yzc5MVx1ZDU1Y1x1YjJlNC48XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+W3NjJmx0O2RpZ2l0Jmd0O108XC90ZD5cclxuXHRcdFx0PHRkPlx1YWMwMSBcdWJiMzhcdWM3OTBcdWI5YzhcdWIyZTQgJmx0O2RpZ2l0Jmd0O1x1YWMxY1x1Yzc1OCBcdWFjZjVcdWJjMzFcdWM3NDQgXHVjZDk0XHVhYzAwXHVkNTVjXHViMmU0LjxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bXC9zY108XC90ZD5cclxuXHRcdFx0PHRkPltzYzBdXHVhY2ZjIFx1YWMxOVx1YjJlNC4gXHVhY2Y1XHViYzMxXHVjNzQ0IFx1Y2Q5NFx1YWMwMFx1ZDU1OFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltqbDJdPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWM2N2NcdWNhYmQgXHVjODE1XHViODJjKGxlZnQganVzdGlmaWVkIHRleHQpLCBcdWNjYWIgXHViYzg4XHVjOWY4IFx1YmIzOFx1Yzc5MFx1YWMwMCBcdWM5MDRcdWM3NTggXHVjODFjXHVjNzdjIFx1YzY3Y1x1Y2FiZFx1YzVkMCBcdWI0ZjFcdWM3YTVcdWQ1NWNcdWIyZTQuPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltqbDNdPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWFjMDBcdWM2YjRcdWIzNzAgXHVjODE1XHViODJjKGNlbnRlciBqdXN0aWZpZWQgdGV4dCksIFx1YzU5MVx1Y2FiZCBcdWFjZjVcdWJjMzFcdWM3NTggXHVjMjE4XHVhYzAwIFx1YWMxOVx1YWM3MFx1YjA5OCBcdWI0YTRcdWNhYmQgXHVhY2Y1XHViYzMxXHVjNzU4IFx1YzIxOFx1YWMwMCBcdWQ1NThcdWIwOTggXHViMzU0IFx1YjljZVx1YjNjNFx1Yjg1ZCBcdWQ1NWNcdWIyZTQuPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltqbDRdPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWM2MjRcdWI5NzhcdWNhYmQgXHVjODE1XHViODJjKHJpZ2h0IGp1c3RpZmllZCB0ZXh0KSwgXHViOWM4XHVjOWMwXHViOWM5IFx1YmIzOFx1Yzc5MFx1YWMwMCBcdWM5MDRcdWM3NTggXHVhYzAwXHVjN2E1IFx1YjljOFx1YzljMFx1YjljOVx1YzVkMCBcdWI0ZjFcdWM3YTVcdWQ1NWNcdWIyZTQuPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltqbDVdPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWM1OTFcdWNhYmQgXHVjODE1XHViODJjKFx1YzkwNFx1YzVkMCBcdWFjMDBcdWI0ZGRcdWNjMjhcdWIzYzRcdWI4NWQgXHVhYzAxIFx1YmIzOFx1Yzc5MCBcdWMwYWNcdWM3NzQgXHVhY2Y1XHViYzMxXHVjNzQ0IFx1Yzc3Y1x1YzgxNVx1ZDU1OFx1YWM4YyBcdWNkNWNcdWIzMDBcdWI4NWMgXHViOWNlXHVjNzc0IFx1Y2Q5NFx1YWMwMFx1ZDU1Y1x1YjJlNC4gXHVhYzAwXHVjNmI0XHViMzcwIFx1YzgxNVx1YjgyY1x1ZDU1Y1x1YjJlNC4pPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5cdWQ1NWMgXHVjOTA0XHVjNWQwIDI0XHVhZTAwXHVjNzkwXHVhYzAwIFx1Yzc4OFx1Yzc0NCBcdWI1NGNcdWM3NTggXHVjNjA4XHVjNzc0XHViMmU0LiAoXHUyNWExXHViMjk0IFx1YmU0OCBcdWNlNzhcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0KTxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6NzAlO1wiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6IDI1JTtcIj5NVUxUSSBcdWJiMzhcdWM3OTBcdWM1ZjQ8XC90aD5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6IDQ1JTtcIj5cdWNkOWNcdWI4MjU8XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltqbDJdTUVTU0FHRTxcL3RkPlxyXG5cdFx0XHQ8dGQ+TUVTU0FHRVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bamwzXU1FU1NBR0U8XC90ZD5cclxuXHRcdFx0PHRkPlx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMU1FU1NBR0VcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+W2psNF1NRVNTQUdFPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFNRVNTQUdFPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltqbDJdW3NjMl1NRVNTQUdFPFwvdGQ+XHJcblx0XHRcdDx0ZD5NXHUyNWExXHUyNWExRVx1MjVhMVx1MjVhMVNcdTI1YTFcdTI1YTFTXHUyNWExXHUyNWExQVx1MjVhMVx1MjVhMUdcdTI1YTFcdTI1YTFFXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltqbDVdTUVTU0FHRTxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHUyNWExXHUyNWExTVx1MjVhMVx1MjVhMUVcdTI1YTFcdTI1YTFTXHUyNWExXHUyNWExU1x1MjVhMVx1MjVhMUFcdTI1YTFcdTI1YTFHXHUyNWExXHUyNWExRVx1MjVhMVx1MjVhMVx1MjVhMTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bamwyXVRISVNbamwzXUlTIEFbamw0XU1FU1NBR0U8XC90ZD5cclxuXHRcdFx0PHRkPlRISVNcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFJUyBBXHUyNWExXHUyNWExXHUyNWExTUVTU0FHRTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG5cclxuPHA+XHVkMGRjXHVhZGY4XHViMjk0IFx1YjMwMFx1YzE4Y1x1YmIzOFx1Yzc5MFx1Yjk3YyBcdWFkNmNcdWJkODRcdWQ1NThcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LiBbbmxdPVtOTF09W05sXT1bbkxdPFwvcD5cclxuXHJcbjxwPlx1YWUzMFx1YmNmOFx1Yzc0MCBcdWM2N2NcdWNhYmQgXHVjODE1XHViODJjLCBcdWFjZjVcdWJjMzFcdWMyMmJcdWM3OTBcdWIyOTQgMFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjODE1XHViODJjXHVhY2ZjIFx1YWNmNVx1YmMzMVx1Y2Q5NFx1YWMwMCBcdWQwZGNcdWFkZjhcdWIyOTQgW25sXVx1ZDBkY1x1YWRmOCBcdWIyZTRcdWM3NGNcdWM1ZDBcdWIzYzQgXHVjNzIwXHVjOWMwXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cD5bamwyXVx1YzY0MCBbbDVdIFx1ZDBkY1x1YWRmOFx1YjI5NCBcdWM5MDRcdWM1ZDAgXHViMmU0XHViOTc4IFx1YmIzOFx1Yzc5MFx1YWMwMCBcdWNkOWNcdWI4MjVcdWI0MThcdWM5YzAgXHVjNTRhXHVjNTU4XHVjNzQ0IFx1YjU0Y1x1YjljYyBcdWMwYWNcdWM2YTlcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVhZGY4XHViODA3XHVjOWMwIFx1YzU0YVx1YzczY1x1YmE3NCBcdWM1ZDBcdWI3ZWMgKFRBRyBDT05GTElDVCk8XC9wPlxyXG5cclxuPHA+W2psNV1cdWFjMDAgXHVjMGFjXHVjNmE5XHViNDE4XHViYTc0LCBcdWIyZTRcdWI5NzggXHVjODE1XHViODJjIFx1ZDBkY1x1YWRmOFx1YjI5NCBcdWMwYWNcdWM2YTlcdWQ1NjAgXHVjMjE4IFx1YzVjNlx1YjJlNC4gXHVhZGY4XHViODA3XHVjOWMwIFx1YzU0YVx1YzczY1x1YmE3NCBcdWM1ZDBcdWI3ZWMgKFRBRyBDT05GTElDVCk8XC9wPlxyXG5cclxuPHA+W2psM10gXHVkMGRjXHVhZGY4XHViMjk0IFtqbDRdIFx1ZDBkY1x1YWRmOCBcdWIyZTRcdWM3NGNcdWM1ZDAgXHVjMGFjXHVjNmE5XHVkNTYwIFx1YzIxOCBcdWM1YzZcdWIyZTQuIChUQUcgQ09ORkxJQ1QpPFwvcD5cclxuXHJcbjxwPltqbD9dIFx1ZDBkY1x1YWRmOFx1YjI5NCBcdWFjMTlcdWM3NDAgXHVjODE1XHViODJjXHVjNzQ0IFx1YjYxMCBcdWMwYWNcdWM2YTlcdWQ1NThcdWIzNTRcdWI3N2NcdWIzYzQgVEFHIENPTkZMSUNUXHVhYzAwIFx1Yzc3Y1x1YzViNFx1YjA5OFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzU5MVx1Y2FiZCBcdWM4MTVcdWI4MmNcdWM1ZDBcdWMxMWNcdWIyOTQgW3NjXVx1ZDBkY1x1YWRmOFx1YWMwMCBcdWJiMzRcdWMyZGNcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1ZDU1YyBcdWM5MDRcdWM1ZDAgXHViMTA4XHViYjM0IFx1YjljZVx1Yzc0MCBcdWJiMzhcdWM3OTBcdWFjMDAgXHVkNTQ0XHVjNjk0XHVkNTU4XHVhYzcwXHViMDk4IFx1YmE1NFx1YzJkY1x1YzljMFx1YzVkMCBcdWIxMDhcdWJiMzQgXHViOWNlXHVjNzQwIFx1YzkwNFx1Yzc3NCBcdWQ1NDRcdWM2OTRcdWQ1NThcdWJhNzQgVE9PIEJJRyBcdWM1ZDBcdWI3ZWNcdWFjMDAgXHViYzFjXHVjMGRkXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5bbmxdXHVkMGRjXHVhZGY4XHViMjk0IFx1YjJlNFx1Yzc0YyBcdWJiMzhcdWM3OTBcdWFjMDAgXHVjZDljXHViODI1XHViNDE4XHVhZTMwIFx1YzgwNFx1YWU0Y1x1YzljMCBcdWM3OTFcdWIzZDlcdWQ1NThcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2N2NcdWNhYmQgXHVjODE1XHViODJjXHVhY2ZjIFx1YWMwMFx1YzZiNFx1YjM3MCBcdWM4MTVcdWI4MmNcdWM3NzQgXHVkNTVjIFx1YzkwNFx1YzVkMCBcdWIzZDlcdWMyZGNcdWM1ZDAgXHViNGYxXHVjN2E1XHVkNTU4XHViYTc0LCBcdWM2N2NcdWNhYmQgXHVjODE1XHViODJjXHViNDFjIFx1YmIzOFx1Yzc5MFx1Yzc1OCBcdWI5ZTggXHViNGE0XHVjNWQwIFx1YzgwMVx1YzViNFx1YjNjNCBcdWQ1NThcdWIwOThcdWM3NTggXHVhY2Y1XHViYzMxXHVjNzc0IFx1Yzc4OFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuIFx1YWRmOFx1YjgwN1x1YzljMCBcdWM1NGFcdWM3NDQgXHVhY2JkXHVjNmIwIFRPTyBCSUcgXHVjNWQwXHViN2VjXHVhYzAwIFx1YmMxY1x1YzBkZFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzAwXHVjNmI0XHViMzcwIFx1YzgxNVx1YjgyY1x1YWNmYyBcdWM2MjRcdWI5NzhcdWNhYmQgXHVjODE1XHViODJjXHVjNzc0IFx1ZDU1YyBcdWM5MDRcdWM1ZDAgXHViM2Q5XHVjMmRjXHVjNWQwIFx1YjRmMVx1YzdhNVx1ZDU1OFx1YmE3NCwgXHVhYzAwXHVjNmI0XHViMzcwIFx1YzgxNVx1YjgyY1x1YjQxYyBcdWJiMzhcdWM3OTBcdWM3NTggXHViOWU4IFx1YjRhNFx1YzVkMCBcdWM4MDFcdWM1YjRcdWIzYzQgXHVkNTU4XHViMDk4XHVjNzU4IFx1YWNmNVx1YmMzMVx1Yzc3NCBcdWM3ODhcdWM1YjRcdWM1N2MgXHVkNTVjXHViMmU0LiBcdWFkZjhcdWI4MDdcdWM5YzAgXHVjNTRhXHVjNzQ0IFx1YWNiZFx1YzZiMCBUT08gQklHIFx1YzVkMFx1YjdlY1x1YWMwMCBcdWJjMWNcdWMwZGRcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzY3Y1x1Y2FiZCBcdWM4MTVcdWI4MmNcdWFjZmMgXHVjNjI0XHViOTc4XHVjYWJkIFx1YzgxNVx1YjgyY1x1Yzc3NCBcdWQ1NWMgXHVjOTA0XHVjNWQwIFx1YjNkOVx1YzJkY1x1YzVkMCBcdWI0ZjFcdWM3YTVcdWQ1NThcdWJhNzQsIFx1YzY3Y1x1Y2FiZCBcdWM4MTVcdWI4MmNcdWI0MWMgXHViYjM4XHVjNzkwXHVjNzU4IFx1YjllOCBcdWI0YTRcdWM1ZDAgXHVjODAxXHVjNWI0XHViM2M0IFx1ZDU1OFx1YjA5OFx1Yzc1OCBcdWFjZjVcdWJjMzFcdWM3NzQgXHVjNzg4XHVjNWI0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gXHVhZGY4XHViODA3XHVjOWMwIFx1YzU0YVx1Yzc0NCBcdWFjYmRcdWM2YjAgVE9PIEJJRyBcdWM1ZDBcdWI3ZWNcdWFjMDAgXHViYzFjXHVjMGRkXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWQ1YzhcdWM2YTlcdWI0MThcdWIyOTQgXHVkMGRjXHVhZGY4XHViMjk0IFx1YzcwNFx1Yzc1OCA3XHVhYzFjXHViOWNjIFx1YWMwMFx1YjJhNVx1ZDU1OFx1YjJlNC4gXHVhZGY4XHViODA3XHVjOWMwIFx1YzU0YVx1YzczY1x1YmE3NCBCQUQgVEFHIFx1YzVkMFx1YjdlY1x1YWMwMCBcdWJjMWNcdWMwZGRcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc5OFx1YmFiYlx1YjQxYyBcdWQwZGNcdWFkZjggXHVjMGFjXHVjNmE5XHVjNzc0XHViMDk4IFx1YWQwNFx1ZDYzOCBcdWMzMGRcdWM3NzQgXHViOWRlXHVjOWMwIFx1YzU0YVx1Yzc0MCBcdWFjYmRcdWM2YjBcdWIzYzQgQkFEIFRBRyBcdWM1ZDBcdWI3ZWNcdWFjMDAgXHViYzFjXHVjMGRkXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5NVUxUSSBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NDQgXHVjNzg1XHViODI1XHViYzFiXHVjNTQ0XHVjMTFjIFx1YzYyY1x1YmMxNFx1Yjk3OCBcdWJhNTRcdWMyZGNcdWM5YzAgXHViNjEwXHViMjk0IFx1YzVkMFx1YjdlYyBcdWJhNTRcdWMyZGNcdWM5YzBcdWI5N2MgXHVjZDljXHViODI1XHVkNTU4XHViMjk0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWM3OTFcdWMxMzFcdWQ1NThcdWMyZGNcdWM2MjQ8XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM3NDAgXHViMzcwXHVjNzc0XHVkMTMwIFx1YzEzOFx1ZDJiOFx1Yzc1OCBcdWMyMTggTigxICZsZTsgTiAmbGU7IDEwMClcdWM3NzQgXHVjNzg1XHViODI1XHVjNzNjXHViODVjIFx1YjRlNFx1YzViNFx1YzYyOFx1YjJlNC5cdWFjMDEgXHViMzcwXHVjNzc0XHVkMTMwIFx1YzEzOFx1ZDJiOFx1Yzc1OCBcdWNjYWIgXHVjOTA0XHVjNzQwIFIoMSAmbGU7IFIgJmxlOyAyNSlcdWFjZmMgQygxICZsZTsgQyAmbGU7IDgwKVx1YWMwMCBcdWFjZjVcdWJjMzFcdWM3M2NcdWI4NWMgXHVhZDZjXHViZDg0XHViNDE4XHVjNWI0IFx1YjRlNFx1YzViNFx1YzYyOFx1YjJlNC4gKFJcdWM3NDAgXHVkNTg5IFx1YzIxOCwgQ1x1YjI5NCBcdWM1ZjQgXHVjMjE4KSBcdWIyZTRcdWM3NGMgUlx1YWMxY1x1Yzc1OCBcdWM5MDRcdWM1ZDAgTVVMVEkgXHViYjM4XHVjNzkwXHVjNWY0XHVjNzc0IFx1YjRlNFx1YzViNFx1YzYyOFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDEgXHViMzcwXHVjNzc0XHVkMTMwIFx1YzEzOFx1ZDJiOFx1YzVkMCBcdWIzMDBcdWQ1NzQgXHViMzcwXHVjNzc0XHVkMTMwIFx1YzEzOFx1ZDJiOCBcdWJjODhcdWQ2MzhcdWI5N2MgXHVjZDljXHViODI1XHVkNTU4XHVhY2UwLCBcdWIyZTRcdWM3NGNcdWM5MDRcdWJkODBcdWQxMzAmbmJzcDtSXHVhYzFjXHVjNzU4IFx1YzkwNFx1YzVkMCBcdWM1ZDBcdWI3ZWMgXHViYTU0XHVjMmRjXHVjOWMwIFx1YjYxMFx1YjI5NCBcdWJhNTRcdWMyZGNcdWM5YzBcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiAoQ1x1YWMxY1x1Yzc1OCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NDQgXHVjODE1XHVkNjU1XHVkNzg4IFx1Y2Q5Y1x1YjgyNVx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQpIFx1YWMwMSBcdWIzNzBcdWM3NzRcdWQxMzAgXHVjMTM4XHVkMmI4XHVjNzU4IFx1YjljOFx1YzljMFx1YjljOSBcdWM5MDRcdWM3NDAgXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjIFx1YWQ2Y1x1YmQ4NFx1ZDU1Y1x1YjJlNC4gKFx1Y2M0NFx1YzgxMFx1Yzc1OCBcdWQzYjhcdWM3NThcdWI5N2MgXHVjNzA0XHVkNTc0LCBcdWM1ZDBcdWI3ZWNcdWFjMDAgXHVjNzg4XHViMjk0IFx1YjM3MFx1Yzc3NFx1ZDEzMCBcdWMxMzhcdWQyYjhcdWIyOTQgXHVkNTVjIFx1YWMwMFx1YzljMCBcdWQwYzBcdWM3ODVcdWM3NTggXHVjNWQwXHViN2VjXHViOWNjIFx1YWMwMFx1YzljMFx1YWNlMCBcdWM3ODhcdWIyZTQpPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiS29yZWFuIn0seyJwcm9ibGVtX2lkIjoiMjcyNCIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IlNpZ24gTWVzc2FnZSBGb3JtYXR0aW5nIiwiZGVzY3JpcHRpb24iOiI8cD5UaGUgTmF0aW9uYWwgVHJhbnNwb3J0YXRpb24gQ29tbXVuaWNhdGlvbnMgZm9yIElUUyBQcm90b2NvbCAoTlRDSVApIGZvciBjb21tdW5pY2F0aW5nIHdpdGggaGlnaHdheSBzaWducyB3aXRoIGR5bmFtaWMgbWVzc2FnZXMgZGVzY3JpYmVzIHRoZSBtZXNzYWdlcyB1c2luZyBNYXJrdXAgTGFuZ3VhZ2UgZm9yIFRyYW5zcG9ydGF0aW9uIEluZm9ybWF0aW9uIChNVUxUSSkuIEEgTVVMVEkgc3RyaW5nIGNvbnNpc3RzIG9mIHRleHQgdG8gYmUgZGlzcGxheWVkIHRvZ2V0aGVyIHdpdGggZW1iZWRkZWQgdGFncyB3aGljaCBkZXNjcmliZSBmb3JtYXR0aW5nIG9mIHRoZSB0ZXh0IGFuZCBpbmNsdWRlZCBkeW5hbWljIGVsZW1lbnRzLiBUYWdzIGJlZ2luIHdpdGggdGhlIG9wZW4gYnJhY2tldCAoJmxzcXVvO1smbHNxdW87KSBjaGFyYWN0ZXIgYW5kIGVuZCB3aXRoIHRoZSBjbG9zZSBicmFja2V0ICgmbHNxdW87XSZyc3F1bzspIGNoYXJhY3Rlci4gSWYgYW4gb3BlbiBicmFja2V0IGNoYXJhY3RlciBpcyB0byBhcHBlYXIgaW4gdGhlIHRleHQsIGl0IGlzIHJlcHJlc2VudGVkIGFzIHR3byBvcGVuIGJyYWNrZXQgY2hhcmFjdGVycy4gU2ltaWxhcmx5LCBpZiBhIGNsb3NlIGJyYWNrZXQgY2hhcmFjdGVyIGlzIHRvIGFwcGVhciBpbiB0aGUgdGV4dCwgaXQgaXMgcmVwcmVzZW50ZWQgYXMgdHdvIGNsb3NlIGJyYWNrZXQgY2hhcmFjdGVycy4gVGhpcyBwcm9ibGVtIGlzIGNvbmNlcm5lZCB3aXRoIGZvcm1hdHRpbmcgZm9yIGNoYXJhY3RlciBjZWxsIGRpc3BsYXlzLCB3aGljaCBhcmUgcmVjdGFuZ3VsYXIgYXJyYXlzIG9mIGNoYXJhY3RlciBjZWxscyBlYWNoIG9mIHdoaWNoIGNhbiBkaXNwbGF5IGEgc2luZ2xlIGNoYXJhY3Rlci4mbmJzcDs8XC9wPlxyXG5cclxuPHA+VGhlIHRhZ3MgdG8gYmUgc3VwcG9ydGVkIGZvciB0aGlzIHByb2JsZW0gYXJlOiZuYnNwOzxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6NzAlXCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj5UYWc8XC90aD5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6NjAlXCI+RGVzY3JpcHRpb248XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltubF08XC90ZD5cclxuXHRcdFx0PHRkPlN0YXJ0IGEgbmV3IHJvdyBvZiB0aGUgYXJyYXk8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+W3NjJmx0O2RpZ2l0Jmd0O108XC90ZD5cclxuXHRcdFx0PHRkPkluc2VydCAmbHQ7ZGlnaXQmZ3Q7IGJsYW5rIGNoYXJhY3RlciBjZWxscyBiZXR3ZWVuIGVhY2ggcGFpciBvZiB0ZXh0IGNoYXJhY3RlcnMgaW4gdGhlIGZvbGxvd2luZyBzdHJpbmcgdW50aWwgY2hhbmdlZC4gPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltcL3NjXTxcL3RkPlxyXG5cdFx0XHQ8dGQ+U2V0IGludGVyLWNoYXJhY3RlciBzcGFjaW5nIHRvIHplcm8gKGVxdWl2YWxlbnQgdG8gW3NjMF0pLjxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bamwyXTxcL3RkPlxyXG5cdFx0XHQ8dGQ+U2V0IGxlZnQganVzdGlmaWVkIHRleHQgKHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHRleHQgaXMgdGhlIGxlZnRtb3N0IGNoYXJhY3RlciBvZiB0aGUgbGluZSkuPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltqbDNdPFwvdGQ+XHJcblx0XHRcdDx0ZD5TZXQgY2VudGVyIGp1c3RpZmllZCB0ZXh0ICh0aGUgbnVtYmVyIG9mIGNoYXJhY3RlciBwb3NpdGlvbnMgYmVmb3JlIGFuZCBhZnRlciB0aGUgdGV4dCBvbiB0aGUgbGluZSBpcyB0aGUgc2FtZSBvciB0aGUgbnVtYmVyIGFmdGVyIGlzIG9uZSBtb3JlIHRoYW4gdGhlIG51bWJlciBiZWZvcmUpLjxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bamw0XTxcL3RkPlxyXG5cdFx0XHQ8dGQ+U2V0IHJpZ2h0IGp1c3RpZmllZCB0ZXh0ICh0aGUgZmluYWwgY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcgaXMgdGhlIHJpZ2h0bW9zdCBjaGFyYWN0ZXIgb24gdGhlIGxpbmUpLjxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bamw1XTxcL3RkPlxyXG5cdFx0XHQ8dGQ+U2V0IGZ1bGx5IGp1c3RpZmllZCB0ZXh0IChhbiBlcXVhbCBudW1iZXIgb2YgYmxhbmsgY2hhcmFjdGVyIHNwYWNlcywgYXMgbGFyZ2UgYXMgcG9zc2libGUgZm9yIHRoZSBsaW5lIGxlbmd0aCwgaXMgcGxhY2VkIGJldHdlZW4gZWFjaCBwYWlyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQ7IHRoZSByZXN1bHRpbmcgc3RyaW5nIGlzIGNlbnRlcmVkIGluIHRoZSBsaW5lIGFzIGZvciBjZW50ZXJlZCB0ZXh0KS4gPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5Gb3IgZXhhbXBsZSwgb24gYSAyNCBjaGFyYWN0ZXIgbGluZSAoXHUyNWExIGluZGljYXRlcyBhIGJsYW5rIGNoYXJhY3RlciBjZWxsKTombmJzcDs8XC9wPlxyXG5cclxuPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWRcIiBzdHlsZT1cIndpZHRoOjcwJVwiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6MjUlXCI+Rm9ybWF0IFN0cmluZzxcL3RoPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ3aWR0aDo0NSVcIj5HZW5lcmF0ZWQgT3V0cHV0PFwvdGg+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90aGVhZD5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bamwyXU1FU1NBR0U8XC90ZD5cclxuXHRcdFx0PHRkPk1FU1NBR0VcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+W2psM11NRVNTQUdFPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFcdTI1YTFNRVNTQUdFXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPltqbDRdTUVTU0FHRTxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExTUVTU0FHRTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bamwyXVtzYzJdTUVTU0FHRTxcL3RkPlxyXG5cdFx0XHQ8dGQ+TVx1MjVhMVx1MjVhMUVcdTI1YTFcdTI1YTFTXHUyNWExXHUyNWExU1x1MjVhMVx1MjVhMUFcdTI1YTFcdTI1YTFHXHUyNWExXHUyNWExRVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMVx1MjVhMTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5bamw1XU1FU1NBR0U8XC90ZD5cclxuXHRcdFx0PHRkPlx1MjVhMVx1MjVhMU1cdTI1YTFcdTI1YTFFXHUyNWExXHUyNWExU1x1MjVhMVx1MjVhMVNcdTI1YTFcdTI1YTFBXHUyNWExXHUyNWExR1x1MjVhMVx1MjVhMUVcdTI1YTFcdTI1YTFcdTI1YTE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+W2psMl1USElTW2psM11JUyBBW2psNF1NRVNTQUdFPFwvdGQ+XHJcblx0XHRcdDx0ZD5USElTXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExXHUyNWExSVMgQVx1MjVhMVx1MjVhMVx1MjVhMU1FU1NBR0U8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPkxldHRlcnMgd2l0aGluIHRhZ3MgYXJlIGNhc2UtaW5zZW5zaXRpdmUuIFRoYXQgaXMgW25sXSA9IFtOTF0gPSBbTmxdID0gW25MXS4mbmJzcDs8XC9wPlxyXG5cclxuPHA+VGhlIGRlZmF1bHQganVzdGlmaWNhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbWVzc2FnZSBpcyBsZWZ0IGp1c3RpZmljYXRpb24gYW5kIHRoZSBkZWZhdWx0IGNoYXJhY3RlciBzcGFjaW5nIGlzIDAuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkp1c3RpZmljYXRpb24gYW5kIGNoYXJhY3RlciBzcGFjaW5nIGFyZSBtYWludGFpbmVkIGFjcm9zcyBbbmxdIHRhZ3MuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZSBbamwyXSBhbmQgW2psNV0gdGFncyBtYXkgb25seSBiZSB1c2VkIGJlZm9yZSBhbnkgdGV4dCBoYXMgYmVlbiBvdXRwdXQgb24gYSBsaW5lLiBPdGhlcndpc2UgaXQgaXMgYW4gZXJyb3IgKFRBRyBDT05GTElDVCkuJm5ic3A7PFwvcD5cclxuXHJcbjxwPk9uY2UgW2psNV0gdGV4dCBoYXMgYmVlbiBvdXRwdXQgb24gYSBsaW5lLCBubyBvdGhlciBqdXN0aWZpY2F0aW9uIHRhZyBtYXkgYmUgc2V0IG9uIHRoYXQgbGluZS4gT3RoZXJ3aXNlIGl0IGlzIGFuIGVycm9yIChUQUcgQ09ORkxJQ1QpLiZuYnNwOzxcL3A+XHJcblxyXG48cD5UaGUgW2psM10gdGFnIG1heSBub3QgYmUgdXNlZCBhZnRlciByaWdodCBqdXN0aWZpZWQgdGV4dCAoW2psNF0pIGhhcyBiZWVuIG91dHB1dCBvbiBhIGxpbmUuIE90aGVyd2lzZSBpdCBpcyBhbiBlcnJvciAoVEFHIENPTkZMSUNUKS4mbmJzcDs8XC9wPlxyXG5cclxuPHA+QSBqdXN0aWZpY2F0aW9uIHRhZyBbamw/XSB3aXRoIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBjdXJyZW50IHZhbHVlIGRvZXMgbm90IGNhdXNlIGEgVEFHIENPTkZMSUNUIGVycm9yLiZuYnNwOzxcL3A+XHJcblxyXG48cD5FeHRyYSBjaGFyYWN0ZXIgc3BhY2luZyBzcGVjaWZpZWQgYnkgdGhlIFtzYz9dIHRhZyBpcyBpZ25vcmVkIG9uIGxpbmVzIHdpdGggZnVsbHkganVzdGlmaWVkIHRleHQuIFRoZSBmdWxsIGp1c3RpZmljYXRpb24gcnVsZXMgZGV0ZXJtaW5lIHRoZSBleHRyYSBzcGFjZXMuJm5ic3A7PFwvcD5cclxuXHJcbjxwPklmIHRvbyBtYW55IGNoYXJhY3RlcnMgYXJlIHJlcXVpcmVkIG9uIGEgbGluZSBvciB0b28gbWFueSBsaW5lcyBhcmUgcmVxdWlyZWQgaW4gYSBtZXNzYWdlLCBpdCBpcyBhbiBlcnJvciAoVE9PIEJJRykuIEEgW25sXSB0YWcgZG9lcyBub3QgYmVnaW4gYSBuZXcgbGluZSB1bmxlc3MgZm9sbG93ZWQgYnkgdGV4dCBvdXRwdXQuJm5ic3A7PFwvcD5cclxuXHJcbjxwPklmIGxlZnQganVzdGlmaWVkIHRleHQgYW5kIGNlbnRlciBqdXN0aWZpZWQgdGV4dCBhcHBlYXIgb24gdGhlIHNhbWUgbGluZSwgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgYmxhbmsgY2hhcmFjdGVyIGNlbGwgYmV0d2VlbiB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgbGVmdCBqdXN0aWZpZWQgdGV4dCBhbmQgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBjZW50ZXIganVzdGlmaWVkIHRleHQuIE90aGVyd2lzZSBpdCBpcyBhbiBlcnJvciAoVE9PIEJJRykuJm5ic3A7PFwvcD5cclxuXHJcbjxwPklmIGNlbnRlciBqdXN0aWZpZWQgdGV4dCBhbmQgcmlnaHQganVzdGlmaWVkIHRleHQgYXBwZWFyIG9uIHRoZSBzYW1lIGxpbmUsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGJsYW5rIGNoYXJhY3RlciBjZWxsIGJldHdlZW4gdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGNlbnRlciBqdXN0aWZpZWQgdGV4dCBhbmQgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiByaWdodCBqdXN0aWZpZWQgdGV4dC4gT3RoZXJ3aXNlIGl0IGlzIGFuIGVycm9yIChUT08gQklHKS4mbmJzcDs8XC9wPlxyXG5cclxuPHA+SWYgbGVmdCBqdXN0aWZpZWQgdGV4dCBhbmQgcmlnaHQganVzdGlmaWVkIHRleHQgYXBwZWFyIG9uIHRoZSBzYW1lIGxpbmUsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGJsYW5rIGNoYXJhY3RlciBjZWxsIGJldHdlZW4gdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGxlZnQganVzdGlmaWVkIHRleHQgYW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgcmlnaHQganVzdGlmaWVkIHRleHQuIE90aGVyd2lzZSBpdCBpcyBhbiBlcnJvciAoVE9PIEJJRykuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZSBvbmx5IHRhZ3MgYWxsb3dlZCBpbiBhIG1lc3NhZ2UgYXJlIHRoZSBzZXZlbiB0YWdzIGxpc3RlZCBhYm92ZSBvdGhlcndpc2UgaXQgaXMgYW4gZXJyb3IgKEJBRCBUQUcpLiBBIG1hbGZvcm1lZCB0YWcgb3IgYW4gdW5tYXRjaGVkIHNpbmdsZSBvcGVuIG9yIGNsb3NlZCBicmFja2V0IGlzIGEgQkFEIFRBRyBlcnJvci4mbmJzcDs8XC9wPlxyXG5cclxuPHA+Rm9yIHRoaXMgcHJvYmxlbSB5b3Ugd2lsbCB3cml0ZSBhIHByb2dyYW0gd2hpY2ggdGFrZXMgYXMgaW5wdXQgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGNoYXJhY3RlciBjZWxsIGFycmF5IGFuZCBhIE1VTFRJIHN0cmluZyBhbmQgZWl0aGVyIG91dHB1dHMgYW4gZXJyb3Igc3RyaW5nIG9yIGEgY29ycmVjdGx5IGZvcm1hdHRlZCBtZXNzYWdlPFwvcD4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIG9mIGlucHV0IGNvbnRhaW5zIGEgc2luZ2xlIGludGVnZXIgTiwgKDEgJmxlOyBOICZsZTsgMTAwKSwgd2hpY2ggaXMgdGhlIG51bWJlciBvZiBkYXRhc2V0cyB0aGF0IGZvbGxvdy4gRWFjaCBkYXRhc2V0IGNvbnNpc3RzIG9mIGEgc2luZ2xlIGxpbmUgY29udGFpbmluZyBhbiBpbnRlZ2VyIFIsICgxICZsZTsgUiAmbGU7IDI1KSwgYSBibGFuaywgYW4gaW50ZWdlciBDLCAoMSAmbGU7IEMgJmxlOyA4MCksIGEgYmxhbmssIGFuZCB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lIGlzIGEgTVVMVEktVGV4dCBzdHJpbmcuIFIgaXMgdGhlIG51bWJlciBvZiByb3dzIGluIHRoZSBjaGFyYWN0ZXIgY2VsbCBhcnJheSwgQyBpcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGNoYXJhY3RlciBjZWxsIGFycmF5LCBhbmQgdGhlIE1VTFRJLVRleHQgaXMgdGhlIHRleHQgdG8gYmUgZm9ybWF0dGVkLiZuYnNwOzxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIGRhdGFzZXQsIG91dHB1dCB0aGUgZGF0YXNldCBudW1iZXIgb24gYSBsaW5lIGJ5IGl0c2VsZiwgZm9sbG93ZWQgYnkgb25lIG9mIHRoZSBlcnJvciBzdHJpbmdzIChUQUcgQ09ORkxJQ1QsIFRPTyBCSUcsIEJBRCBUQUcpIG9uIGEgbGluZSBieSBpdHNlbGYgaW4gdGhlIGNhc2Ugb2YgYW4gZXJyb3IsIG9yLCBSIGxpbmVzIGVhY2ggb2Ygd2hpY2ggaGFzIGV4YWN0bHkgQyBjaGFyYWN0ZXJzIChvdGhlciB0aGFuIHRlcm1pbmF0aW5nIG5ld2xpbmVzKSByZXByZXNlbnRpbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlIHVzaW5nIHNwYWNlIGNoYXJhY3RlcnMgZm9yIGVtcHR5IGNoYXJhY3RlciBjZWxscy4gVGhlIGxhc3QgbGluZSBvZiBvdXRwdXQgZm9yIGEgZGF0YXNldCByZXN1bHQgc2hvdWxkIGJlIGEgc2luZ2xlIGJsYW5rIGxpbmUuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkZvciBlYXNlIGluIGdyYWRpbmcsIGEgZGF0YXNldCB0aGF0IGNvbnRhaW5zIGFuIGVycm9yIHdpbGwgb25seSBjb250YWluIG9uZSB0eXBlIG9mIGVycm9yLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2gifV0=

출처

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