시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 512 MB 65 16 12 63.158%

문제

값이 0으로 초기화되어 있고 인덱스는 0으로 시작하는 정수 배열 A에 대해 다음 세 함수가 주어진다.

  • 더하기 (key, value) : A[key]의 값을 value만큼 더한다. 리턴하는 값은 A[key]가 아니라, 배열 A 값 전체의 합이다.
  • 구간합 (key1, key2) : key1 ≤ i ≤ key2 인 모든 i에 대한 A[i]의 구간합을 리턴한다. (key1 ≤ key2)
  • 삭제 (key) : A[key]의 값을 0으로 만든다. 리턴하는 값은 역시 해당 연산 이후 배열 A 값 전체의 합이다.

연산을 수행할 때마다, 리턴값을 출력하는 프로그램을 작성하시오.

예를 들어 아래와 같은 12개의 연산을 순서대로 적용한다고 해보자. 화살표 이후에 나타나는 값이 바로 당신의 프로그램이 출력해야하는 값이다.

  • 더하기 (key=27, value=30) → 30
  • 더하기 (key=25, value= 40) → 70
  • 삭제 (key=17) → 70
  • 더하기 (key=17, value=20) → 90
  • 더하기 (key=5, value=50) → 140
  • 구간합 (key1=10, key2=20) → 20
  • 구간합 (key1=25, key2=30) → 70
  • 삭제 (key=25) → 100
  • 삭제 (key=17) → 80
  • 더하기 (key=27, value=20) → 100
  • 구간합 (key1=10, key2=20) → 0
  • 구간합 (key1=25, key2=30) → 50

총 n개의 연산이 주어졌을 때, 각 연산을 적용한 이후 올바른 값을 출력하는 프로그램을 작성하시오.

입력

첫 줄에 연산의 수 n이 주어진다.

각 연산은 종류에 따라 아래와 같은 형태로 한 줄에 하나씩 주어진다:

  • 더하기: 줄의 첫 입력으로 1이 주어지고 이후에 key과 value가 공백으로 구분되어 주어진다.
  • 구간합: 줄의 첫 입력으로 2이 주어지고 이후에 두 개의 key가 공백으로 구분되어 주어진다.
  • 삭제: 줄의 첫 입력으로 3가 주어지고 이후에 key가 주어진다.

출력

한 줄에 각 함수의 리턴값을 공백으로 구분해서 출력해야 한다.

서브태스크 1 (6점)

1 <= n <= 1,000 그리고 모든 key값의 범위는 0 이상 1,000-1 이하. value는 -10^9 이상 10^9 이하.

서브태스크 2 (26점)

1 <= n <= 100,000 그리고 모든 key값의 범위는 0 이상 (10^99)-1 이하. value는 -10^9 이상 10^9 이하.

예제 입력 1

12
1 27 30
1 25 40
3 17
1 17 20
1 5 50
2 10 20
2 25 30
3 25
3 17
1 27 20
2 10 20
2 25 30

예제 출력 1

30 70 70 90 140 20 70 100 80 100 0 50

예제 입력 2

8
1 2 10
1 4 10
1 15 10
2 2 15
2 3 14
3 4
3 10
2 4 15

예제 출력 2

10 20 30 30 10 20 20 10

힌트

입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다.

C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다.

Java를 사용하고 있다면, ScannerSystem.out.println 대신 BufferedReaderBufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.

Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.

W3sicHJvYmxlbV9pZCI6IjE3MTI2IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVjNWYwXHVjMGIwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWFjMTJcdWM3NzQgMFx1YzczY1x1Yjg1YyBcdWNkMDhcdWFlMzBcdWQ2NTRcdWI0MThcdWM1YjQgXHVjNzg4XHVhY2UwIFx1Yzc3OFx1YjM3MVx1YzJhNFx1YjI5NCAwXHVjNzNjXHViODVjIFx1YzJkY1x1Yzc5MVx1ZDU1OFx1YjI5NCBcdWM4MTVcdWMyMTggXHViYzMwXHVjNWY0IEFcdWM1ZDAgXHViMzAwXHVkNTc0IFx1YjJlNFx1Yzc0YyBcdWMxMzggXHVkNTY4XHVjMjE4XHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5cdWIzNTRcdWQ1NThcdWFlMzAgKGtleSwgdmFsdWUpIDogQVtrZXldXHVjNzU4IFx1YWMxMlx1Yzc0NCB2YWx1ZVx1YjljY1x1ZDA3YyBcdWIzNTRcdWQ1NWNcdWIyZTQuIFx1YjlhY1x1ZDEzNFx1ZDU1OFx1YjI5NCBcdWFjMTJcdWM3NDAgQVtrZXldXHVhYzAwIFx1YzU0NFx1YjJjOFx1Yjc3YywgXHViYzMwXHVjNWY0IEEgXHVhYzEyIFx1YzgwNFx1Y2NiNFx1Yzc1OCBcdWQ1NjlcdWM3NzRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlx1YWQ2Y1x1YWMwNFx1ZDU2OSAoa2V5MSwga2V5MikgOiBrZXkxICZsZTsgaSAmbGU7IGtleTIgXHVjNzc4IFx1YmFhOFx1YjRlMCBpXHVjNWQwIFx1YjMwMFx1ZDU1YyBBW2ldXHVjNzU4IFx1YWQ2Y1x1YWMwNFx1ZDU2OVx1Yzc0NCBcdWI5YWNcdWQxMzRcdWQ1NWNcdWIyZTQuIChrZXkxICZsZTsga2V5Mik8XC9saT5cclxuXHQ8bGk+XHVjMGFkXHVjODFjIChrZXkpIDogQVtrZXldXHVjNzU4IFx1YWMxMlx1Yzc0NCAwXHVjNzNjXHViODVjIFx1YjljY1x1YjRlMFx1YjJlNC4gXHViOWFjXHVkMTM0XHVkNTU4XHViMjk0IFx1YWMxMlx1Yzc0MCBcdWM1ZWRcdWMyZGMgXHVkNTc0XHViMmY5IFx1YzVmMFx1YzBiMCBcdWM3NzRcdWQ2YzQgXHViYzMwXHVjNWY0IEEgXHVhYzEyIFx1YzgwNFx1Y2NiNFx1Yzc1OCBcdWQ1NjlcdWM3NzRcdWIyZTQuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+XHVjNWYwXHVjMGIwXHVjNzQ0IFx1YzIxOFx1ZDU4OVx1ZDU2MCBcdWI1NGNcdWI5YzhcdWIyZTQsIFx1YjlhY1x1ZDEzNFx1YWMxMlx1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHViOTdjIFx1YjRlNFx1YzViNCBcdWM1NDRcdWI3OThcdWM2NDAgXHVhYzE5XHVjNzQwIDEyXHVhYzFjXHVjNzU4IFx1YzVmMFx1YzBiMFx1Yzc0NCBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHVjODAxXHVjNmE5XHVkNTVjXHViMmU0XHVhY2UwIFx1ZDU3NFx1YmNmNFx1Yzc5MC4gXHVkNjU0XHVjMGI0XHVkNDVjIFx1Yzc3NFx1ZDZjNFx1YzVkMCBcdWIwOThcdWQwYzBcdWIwOThcdWIyOTQgXHVhYzEyXHVjNzc0IFx1YmMxNFx1Yjg1YyBcdWIyZjlcdWMyZTBcdWM3NTggXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzc0IFx1Y2Q5Y1x1YjgyNVx1ZDU3NFx1YzU3Y1x1ZDU1OFx1YjI5NCBcdWFjMTJcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+XHViMzU0XHVkNTU4XHVhZTMwIChrZXk9MjcsIHZhbHVlPTMwKSAmcmFycjsgMzA8XC9saT5cclxuXHQ8bGk+XHViMzU0XHVkNTU4XHVhZTMwIChrZXk9MjUsIHZhbHVlPSA0MCkgJnJhcnI7IDcwPFwvbGk+XHJcblx0PGxpPlx1YzBhZFx1YzgxYyAoa2V5PTE3KSAmcmFycjsgNzA8XC9saT5cclxuXHQ8bGk+XHViMzU0XHVkNTU4XHVhZTMwIChrZXk9MTcsIHZhbHVlPTIwKSAmcmFycjsgOTA8XC9saT5cclxuXHQ8bGk+XHViMzU0XHVkNTU4XHVhZTMwIChrZXk9NSwgdmFsdWU9NTApICZyYXJyOyAxNDA8XC9saT5cclxuXHQ8bGk+XHVhZDZjXHVhYzA0XHVkNTY5IChrZXkxPTEwLCBrZXkyPTIwKSAmcmFycjsgMjA8XC9saT5cclxuXHQ8bGk+XHVhZDZjXHVhYzA0XHVkNTY5IChrZXkxPTI1LCBrZXkyPTMwKSAmcmFycjsgNzA8XC9saT5cclxuXHQ8bGk+XHVjMGFkXHVjODFjIChrZXk9MjUpICZyYXJyOyAxMDA8XC9saT5cclxuXHQ8bGk+XHVjMGFkXHVjODFjIChrZXk9MTcpICZyYXJyOyA4MDxcL2xpPlxyXG5cdDxsaT5cdWIzNTRcdWQ1NThcdWFlMzAgKGtleT0yNywgdmFsdWU9MjApICZyYXJyOyAxMDA8XC9saT5cclxuXHQ8bGk+XHVhZDZjXHVhYzA0XHVkNTY5IChrZXkxPTEwLCBrZXkyPTIwKSAmcmFycjsgMDxcL2xpPlxyXG5cdDxsaT5cdWFkNmNcdWFjMDRcdWQ1NjkgKGtleTE9MjUsIGtleTI9MzApICZyYXJyOyA1MDxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1Y2QxZCBuXHVhYzFjXHVjNzU4IFx1YzVmMFx1YzBiMFx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM4NGNcdWM3NDQgXHViNTRjLCBcdWFjMDEgXHVjNWYwXHVjMGIwXHVjNzQ0IFx1YzgwMVx1YzZhOVx1ZDU1YyBcdWM3NzRcdWQ2YzQgXHVjNjJjXHViYzE0XHViOTc4IFx1YWMxMlx1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYiBcdWM5MDRcdWM1ZDAgXHVjNWYwXHVjMGIwXHVjNzU4IFx1YzIxOCBuXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzAxIFx1YzVmMFx1YzBiMFx1Yzc0MCBcdWM4ODVcdWI5NThcdWM1ZDAgXHViNTMwXHViNzdjIFx1YzU0NFx1Yjc5OFx1YzY0MCBcdWFjMTlcdWM3NDAgXHVkNjE1XHVkMGRjXHViODVjIFx1ZDU1YyBcdWM5MDRcdWM1ZDAgXHVkNTU4XHViMDk4XHVjNTI5IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNDo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5cdWIzNTRcdWQ1NThcdWFlMzA6IFx1YzkwNFx1Yzc1OCBcdWNjYWIgXHVjNzg1XHViODI1XHVjNzNjXHViODVjIDFcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWMwXHVhY2UwIFx1Yzc3NFx1ZDZjNFx1YzVkMCBrZXlcdWFjZmMgdmFsdWVcdWFjMDAgXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjIFx1YWQ2Y1x1YmQ4NFx1YjQxOFx1YzViNCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlx1YWQ2Y1x1YWMwNFx1ZDU2OTogXHVjOTA0XHVjNzU4IFx1Y2NhYiBcdWM3ODVcdWI4MjVcdWM3M2NcdWI4NWMgMlx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzBcdWFjZTAgXHVjNzc0XHVkNmM0XHVjNWQwIFx1YjQ1MCBcdWFjMWNcdWM3NTgga2V5XHVhYzAwIFx1YWNmNVx1YmMzMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWJkODRcdWI0MThcdWM1YjQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWMwYWRcdWM4MWM6IFx1YzkwNFx1Yzc1OCBcdWNjYWIgXHVjNzg1XHViODI1XHVjNzNjXHViODVjIDNcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWMwXHVhY2UwIFx1Yzc3NFx1ZDZjNFx1YzVkMCBrZXlcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL2xpPlxyXG48XC91bD5cclxuIiwib3V0cHV0IjoiPHA+XHVkNTVjIFx1YzkwNFx1YzVkMCBcdWFjMDEgXHVkNTY4XHVjMjE4XHVjNzU4IFx1YjlhY1x1ZDEzNFx1YWMxMlx1Yzc0NCBcdWFjZjVcdWJjMzFcdWM3M2NcdWI4NWMgXHVhZDZjXHViZDg0XHVkNTc0XHVjMTFjIFx1Y2Q5Y1x1YjgyNVx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IjxwPlx1Yzc4NVx1Y2Q5Y1x1YjgyNSBcdWJjMjlcdWMyZGRcdWM3NzQgXHViMjkwXHViOWFjXHViYTc0IFx1YzVlY1x1YjdlYyBcdWM5MDRcdWM3NDQgXHVjNzg1XHViODI1XHViYzFiXHVhYzcwXHViMDk4IFx1Y2Q5Y1x1YjgyNVx1ZDU2MCBcdWI1NGMgXHVjMmRjXHVhYzA0XHVjZDA4XHVhY2ZjXHVhYzAwIFx1YjBhMCBcdWMyMTggXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48cD5DKytcdWM3NDQgXHVjMGFjXHVjNmE5XHVkNTU4XHVhY2UwIFx1Yzc4OFx1YWNlMCA8Y29kZT5jaW48XC9jb2RlPlwvPGNvZGU+Y291dDxcL2NvZGU+XHVjNzQ0IFx1YzBhY1x1YzZhOVx1ZDU1OFx1YWNlMFx1Yzc5MCBcdWQ1NWNcdWIyZTRcdWJhNzQsIDxjb2RlPmNpbi50aWUoTlVMTCk8XC9jb2RlPlx1YWNmYyA8Y29kZT5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpPFwvY29kZT5cdWI5N2MgXHViNDU4IFx1YjJlNCZuYnNwO1x1YzgwMVx1YzZhOVx1ZDU3NCBcdWM4ZmNcdWFjZTAsIDxjb2RlPmVuZGw8XC9jb2RlPiBcdWIzMDBcdWMyZTAgXHVhYzFjXHVkNTg5XHViYjM4XHVjNzkwKDxjb2RlPlxcbjxcL2NvZGU+KVx1Yjk3YyBcdWM0ZjBcdWM3OTAuJm5ic3A7XHViMmU4LCBcdWM3NzRcdWI4MDdcdWFjOGMgXHVkNTU4XHViYTc0IFx1YjM1NCBcdWM3NzRcdWMwYzEgPGNvZGU+c2NhbmY8XC9jb2RlPlwvPGNvZGU+cHJpbnRmPFwvY29kZT5cLzxjb2RlPnB1dHM8XC9jb2RlPlwvPGNvZGU+Z2V0Y2hhcjxcL2NvZGU+XC88Y29kZT5wdXRjaGFyPFwvY29kZT4mbmJzcDtcdWI0ZjEgQ1x1Yzc1OCBcdWM3ODVcdWNkOWNcdWI4MjUgXHViYzI5XHVjMmRkXHVjNzQ0IFx1YzBhY1x1YzZhOVx1ZDU1OFx1YmE3NCBcdWM1NDggXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cD5KYXZhXHViOTdjIFx1YzBhY1x1YzZhOVx1ZDU1OFx1YWNlMCBcdWM3ODhcdWIyZTRcdWJhNzQsIDxjb2RlPlNjYW5uZXI8XC9jb2RlPlx1YzY0MCA8Y29kZT5TeXN0ZW0ub3V0LnByaW50bG48XC9jb2RlPiBcdWIzMDBcdWMyZTAgPGNvZGU+QnVmZmVyZWRSZWFkZXI8XC9jb2RlPlx1YzY0MCA8Y29kZT5CdWZmZXJlZFdyaXRlcjxcL2NvZGU+XHViOTdjIFx1YzBhY1x1YzZhOVx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMmU0LiZuYnNwOzxjb2RlPkJ1ZmZlcmVkV3JpdGVyLmZsdXNoPFwvY29kZT5cdWIyOTQgXHViOWU4IFx1YjljOFx1YzljMFx1YjljOVx1YzVkMCBcdWQ1NWMgXHViYzg4XHViOWNjIFx1ZDU1OFx1YmE3NCBcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlB5dGhvblx1Yzc0NCBcdWMwYWNcdWM2YTlcdWQ1NThcdWFjZTAgXHVjNzg4XHViMmU0XHViYTc0LCA8Y29kZT5pbnB1dDxcL2NvZGU+Jm5ic3A7XHViMzAwXHVjMmUwIDxjb2RlPnN5cy5zdGRpbi5yZWFkbGluZTxcL2NvZGU+XHVjNzQ0IFx1YzBhY1x1YzZhOVx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMmU0LiBcdWIyZTgsIFx1Yzc3NFx1YjU0Y1x1YjI5NCBcdWI5ZTggXHViMDVkXHVjNzU4IFx1YWMxY1x1ZDU4OVx1YmIzOFx1Yzc5MFx1YWU0Y1x1YzljMCBcdWFjMTlcdWM3NzQgXHVjNzg1XHViODI1XHViYzFiXHVhZTMwIFx1YjU0Y1x1YmIzOFx1YzVkMCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NDQgXHVjODAwXHVjN2E1XHVkNTU4XHVhY2UwIFx1YzJmNlx1Yzc0NCBcdWFjYmRcdWM2YjAgPGNvZGU+LnJzdHJpcCgpPFwvY29kZT5cdWM3NDQgXHVjZDk0XHVhYzAwXHViODVjIFx1ZDU3NCBcdWM4ZmNcdWIyOTQgXHVhYzgzXHVjNzc0IFx1Yzg4Ylx1YjJlNC48XC9wPlxyXG4iLCJvcmlnaW5hbCI6IjEiLCJwcm9ibGVtX2xhbmdfY29kZSI6Ilx1ZDU1Y1x1YWQ2ZFx1YzViNCIsInN1YnRhc2sxIjoiPHA+MSAmbHQ7PSBuICZsdDs9IDEsMDAwIFx1YWRmOFx1YjlhY1x1YWNlMCBcdWJhYThcdWI0ZTAga2V5XHVhYzEyXHVjNzU4IFx1YmM5NFx1YzcwNFx1YjI5NCAwIFx1Yzc3NFx1YzBjMSAxLDAwMC0xIFx1Yzc3NFx1ZDU1OC4gdmFsdWVcdWIyOTQgLTEwXjkgXHVjNzc0XHVjMGMxIDEwXjkgXHVjNzc0XHVkNTU4LjxcL3A+XHJcbiIsInN1YnRhc2syIjoiPHA+MSAmbHQ7PSBuICZsdDs9IDEwMCwwMDAgXHVhZGY4XHViOWFjXHVhY2UwIFx1YmFhOFx1YjRlMCBrZXlcdWFjMTJcdWM3NTggXHViYzk0XHVjNzA0XHViMjk0IDAgXHVjNzc0XHVjMGMxICgxMF45OSktMSBcdWM3NzRcdWQ1NTguIHZhbHVlXHViMjk0IC0xMF45IFx1Yzc3NFx1YzBjMSAxMF45IFx1Yzc3NFx1ZDU1OC48XC9wPlxyXG4ifSx7InByb2JsZW1faWQiOiIxNzEyNiIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6Ik9wZXJhdGlvbiIsImRlc2NyaXB0aW9uIjoiPHA+Q29uc2lkZXIgYW4gYXJyYXkgd2l0aCAwLWJhc2VkIGluZGV4LiBMZXQgdXMgd3JpdGUgQVsgaSBdIHRvIHJlZmVyIHRvIHRoZSB2YWx1ZSBvZiB0aGlzIGFycmF5IGF0IGluZGV4IGkuIEluaXRpYWxseSwgQVsgaSBdID0gMCBmb3IgYWxsIHZhbGlkIGkuPFwvcD5cclxuXHJcbjxwPlRoZXJlIGFyZSB0aHJlZSBvcGVyYXRpb25zIGdpdmVuIGFzIGZvbGxvd3M6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+QWRkaXRpb24gKGtleSwgdmFsdWUpOiBhZGRzIEFba2V5XSBieSB2YWx1ZSwgcmV0dXJucyB0aGUgc3VtIG9mIGFsbCBlbGVtZW50cyBvZiBBIGFmdGVyd2FyZHMuPFwvbGk+XHJcblx0PGxpPlB1cmdlIChrZXkpOiBhc3NpZ25zIDAgdG8gQVtrZXldLCBhZ2FpbiwgcmV0dXJucyB0aGUgc3VtIG9mIGFsbCBlbGVtZW50cyBvZiBBIGFmdGVyd2FyZHMuPFwvbGk+XHJcblx0PGxpPlN1bSAoa2V5MSwga2V5Mik6IFJldHVybnMgdGhlIHN1bSBvZiBlbGVtZW50cyBvZiBBIGJldHdlZW4gaW5kaWNlcyBtaW4oa2V5MSwga2V5MikgYW5kICZuYnNwO21heChrZXkxLCBrZXkyKSwgaW5jbHVzaXZlLiBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gZG9lcyBub3QgbXV0YXRlIHRoZSBhcnJheS48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5FeGFtcGxlOjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPkFkZGl0aW9uIChrZXk9MjcsIHZhbHVlPTMwKSAmcmFycjsgMzA8XC9saT5cclxuXHQ8bGk+QWRkaXRpb24gKGtleT0yNSwgdmFsdWU9IDQwKSAmcmFycjsgNzA8XC9saT5cclxuXHQ8bGk+UHVyZ2UgKGtleT0xNykgJnJhcnI7IDcwPFwvbGk+XHJcblx0PGxpPkFkZGl0aW9uIChrZXk9MTcsIHZhbHVlPTIwKSAmcmFycjsgOTA8XC9saT5cclxuXHQ8bGk+QWRkaXRpb24gKGtleT01LCB2YWx1ZT01MCkgJnJhcnI7IDE0MDxcL2xpPlxyXG5cdDxsaT5TdW0gKGtleTE9MTAsIGtleTI9MjApICZyYXJyOyAyMDxcL2xpPlxyXG5cdDxsaT5TdW0gKGtleTE9MjUsIGtleTI9MzApICZyYXJyOyA3MDxcL2xpPlxyXG5cdDxsaT5QdXJnZSAoa2V5PTI1KSAmcmFycjsgMTAwPFwvbGk+XHJcblx0PGxpPlB1cmdlIChrZXk9MTcpICZyYXJyOyA4MDxcL2xpPlxyXG5cdDxsaT5BZGRpdGlvbiAoa2V5PTI3LCB2YWx1ZT0yMCkgJnJhcnI7IDEwMDxcL2xpPlxyXG5cdDxsaT5TdW0gKGtleTE9MTAsIGtleTI9MjApICZyYXJyOyAwPFwvbGk+XHJcblx0PGxpPlN1bSAoa2V5MT0yNSwga2V5Mj0zMCkgJnJhcnI7IDUwPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+R2l2ZW4gbiBvcGVyYXRpb25zLCBvdXRwdXQgcmV0dXJuZWQgdmFsdWVzIGZvciBlYWNoIG9wZXJhdGlvbi48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zIG4mbmJzcDtudW1iZXIgb2Ygb3BlcmF0aW9ucy48XC9wPlxyXG5cclxuPHA+RWFjaCBvZiB0aGUgZm9sbG93aW5nIG4gbGluZXMgd2lsbCBkZXNjcmliZSBhIHNpbmdsZSBvcGVyYXRpb24uPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+QSBsaW5lIGJlZ2lucyB3aXRoIDEgZGVub3RlcyBhbiBhZGRpdGlvbiBvcGVyYXRpb24sIGZvbGxvd2VkIGJ5IGEga2V5IGFuZCBhIHZhbHVlLCBkZWxpbWl0ZWQgYnkgYSB3aGl0ZXNwYWNlLjxcL2xpPlxyXG5cdDxsaT5BIGxpbmUgYmVnaW5zIHdpdGggMiBkZW5vdGVzIGEgc3VtIG9wZXJhdGlvbiwgZm9sbG93ZWQgYnkgdHdvIGtleXMsIGRlbGltaXRlZCBieSBhIHdoaXRlc3BhY2UuPFwvbGk+XHJcblx0PGxpPkEgbGluZSBiZWdpbnMgd2l0aCAzIGRlbm90ZXMgYSBwdXJnZSBvcGVyYXRpb24sIGZvbGxvd2VkIGJ5IGEga2V5LjxcL2xpPlxyXG48XC91bD5cclxuIiwib3V0cHV0IjoiPHA+T3V0cHV0IHJldHVybmVkIHZhbHVlcyBvZiBlYWNoIG9wZXJhdGlvbi48XC9wPlxyXG4iLCJoaW50IjoiPHA+WW91ciBzdWJtaXNzaW9uIG1heSByZWNlaXZlIFRpbWUgTGltaXQgRXhjZWVkZWQgKFRMRSkgZXJyb3IgaWYgaW5wdXQgYW5kXC9vciBvdXRwdXQgaXMgbGFyZ2UuPFwvcD5cclxuXHJcbjxwPkMrKzogSWYgeW91IHdhbnQgdG8gdXNlIDxjb2RlPmNpblwvY291dDxcL2NvZGU+LCB0aGVuIHlvdSBzaG91bGQgdXNlIGJvdGggPGNvZGU+Y2luLnRpZShOVUxMKTxcL2NvZGU+IGFuZCA8Y29kZT5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpPFwvY29kZT4sIGFuZCBtdXN0IHVzZSAmbGRxdW87PGNvZGU+XFxuPFwvY29kZT4mcmRxdW87IChuZXdsaW5lIGNoYXJhY3RlcikgaW5zdGVhZCBvZiA8Y29kZT5lbmRsPFwvY29kZT4uIElmIHlvdSBkbyBzbywgeW91IHNob3VsZCBub3QgdXNlIDxjb2RlPnNjYW5mPFwvY29kZT5cLzxjb2RlPnByaW50ZjxcL2NvZGU+XC88Y29kZT5wdXRzPFwvY29kZT5cLzxjb2RlPmdldGNoYXI8XC9jb2RlPlwvPGNvZGU+cHV0Y2hhcjxcL2NvZGU+IChJXC9PIG1ldGhvZHMgZm9yIEMpLiZuYnNwOzxcL3A+XHJcblxyXG48cD5KYXZhOiBZb3Ugc2hvdWxkIHVzZSA8Y29kZT5CdWZmZXJlZFJlYWRlcjxcL2NvZGU+IGFuZCA8Y29kZT5CdWZmZXJlZFdyaXRlcjxcL2NvZGU+IGluc3RlYWQgb2YgPGNvZGU+U2Nhbm5lcjxcL2NvZGU+IGFuZCA8Y29kZT5TeXN0ZW0ub3V0PFwvY29kZT4uIFlvdSBvbmx5IG5lZWQgdG8gY2FsbCA8Y29kZT5CdWZmZXJlZFdyaXRlci5mbHVzaDxcL2NvZGU+IG9uY2UgYXQgdGhlIGVuZCBvZiB5b3VyIHByb2dyYW0uPFwvcD5cclxuXHJcbjxwPlB5dGhvbjogWW91IHNob3VsZCB1c2UgPGNvZGU+c3lzLnN0ZGluLnJlYWRsaW5lPFwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT5pbnB1dDxcL2NvZGU+LiBUaGlzIHdpbGwgYWxzbyByZWFkIHRoZSBuZXdsaW5lIGNoYXJhY3RlciAoJmxkcXVvOzxjb2RlPlxcbjxcL2NvZGU+JnJkcXVvOykgZnJvbSBlYWNoIGxpbmUsIHNvIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGFkZCA8Y29kZT4ucnN0cmlwKCk8XC9jb2RlPiBhdCB0aGUgZW5kIDxjb2RlPnN5cy5zdGRpbi5yZWFkbGluZTxcL2NvZGU+LjxcL3A+XHJcbiIsIm9yaWdpbmFsIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0Iiwic3VidGFzazEiOiI8cD4xICZsdDs9IG4gJmx0Oz0gMSwwMDAgYW5kIGFsbCBrZXlzIHdpbGwgYmUgYmV0d2VlbiAwIGFuZCAxLDAwMC0xLCBpbmNsdXNpdmUuIEFsbCB2YWx1ZXMgd2lsbCBiZSBiZXR3ZWVuIC0xMF45IGFuZCAxMF45LCBpbmNsdXNpdmUuPFwvcD5cclxuIiwic3VidGFzazIiOiI8cD4xICZsdDs9IG4gJmx0Oz0gMTAwLDAwMCBhbmQgYWxsIGtleXMgd2lsbCBiZSBiZXR3ZWVuIDAgYW5kICgxMF45OSktMSwgaW5jbHVzaXZlLiBBbGwgdmFsdWVzIHdpbGwgYmUgYmV0d2VlbiAtMTBeOSBhbmQgMTBeOSwgaW5jbHVzaXZlLjxcL3A+XHJcbiJ9XQ==

채점

  • 예제는 채점하지 않는다.