시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 (하단 참고)512 MB113483350.769%

문제

Albert는 길이가 $n$인 길다란 케이크를 구웠다. 이 케익은 $n$등분 할 수 있도록 총 $n$개의 칸으로 미리 나눠져있고, 일부 칸에는 과일 토핑이 올려져있다.

예를 들어 아래 그림은 $n = 8$인 케이크이고 $0$은 토핑이 없는 칸, $1$은 과일 토핑이 있는 칸을 나타낸다. 이를 정수 배열로 나타내면 $A = [0, 1, 1, 0, 0, 1, 1, 0]$로 표현할 수 있다. 구체적으로, $A[i]$는 $i$번째 칸에 토핑이 있으면 $1$, 없으면 $0$이다.

Albert는 이 케이크를 정확히 $k-1$번 잘라 $k$개의 조각으로 나누고 싶은데, 아래 조건을 만족하도록 자르고 싶다:

  • 조건 1: 각 케이크 조각에 포함된 토핑이 올라간 칸의 개수가 모두 동일해야한다.
  • 조건 2: 버려지는 칸이나 조각이 생겨서는 안된다.

예를 들어 $k = 2$ 인 경우 버려지는 칸이나 조각 없이 위 케이크를 자를 수 있는 방법은 총 $7$가지 존재한다. 그 중 조건 1을 만족하는 경우는 아래와 같이 세 가지 방법이다. 각 케이크 조각에는 토핑이 올라간 칸이 두 개씩 있다.

다른 예로, 아래 그림은 $n = 5$, $A = [0, 1, 0, 1, 0]$, $k = 2$인 경우 위 조건들을 만족하면서 케이크를 자를 수 있는 두 가지 방법을 나타낸다.

입력으로 $n$, $k$, 그리고 토핑의 유무를 나타내는 배열 $A$가 주어졌을 때, 조건을 만족하며 케이크를 자를 수 있는 방법이 총 몇 가지 있는지 구해보자. 단, 답이 매우 클 수 있으므로 $10^9+7$ 로 나눈 나머지를 출력한다.

입력

첫 줄에 테스트 케이스의 수 $T$가 주어진다.

각 테스트 케이스는 두 줄에 나누어 주어진다. 첫 줄에 $n$과 $k$가 공백으로 구분되어 주어진다. 둘째 줄에 배열 $A$의 값이 주어지는데, 공백없이 길이 $n$인 문자열 형태로 주어진다.

출력

각 테스트 케이스의 정답을 각 줄에 출력한다.

제한

  • $1 ≤ T ≤ 10$
  • $1 ≤ k ≤ n ≤ 1\,000\,000$

예제 입력 1

9
1 1
1
5 1
01010
5 2
01010
5 3
01010
8 2
01100110
14 2
00100100100100
13 3
0111010100100
61 21
1001001001001001001001001001001001001001001001001001001001001
3 2
000

예제 출력 1

1
1
2
0
3
3
2
486784380
2

예제 1: 케이크 길이가 $1$이며 이를 한 조각으로 나누는 방법은 한 가지이다 (이 때 케이크는 $0$회 자른다).

예제 2: 예제 1과 마찬가지로 $k = 1$인 경우 답은 $1$이다.

예제 3: [01][010][010][10]의 두 가지 방법으로 조건을 만족하며 케이크를 자를 수 있다.

예제 4: 토핑이 올라간 칸이 $2$칸이지만 $k = 3$이므로 조건 2를 만족하는 방법은 없다.

예제 5: 본문에서 다루었다.

예제 8: 조건을 만족하며 케이크를 자를 수 있는 방법의 수는 $3\,486\,784\,401$이지만 $10^9+7$ 로 나눈 나머지를 출력해야 함에 유의하자.

예제 9: 케이크 위에 토핑이 하나도 없을 수도 있다.

W3sicHJvYmxlbV9pZCI6IjI1MzM0IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVhZTM0IFx1Y2YwMFx1Yzc3NFx1ZDA2YyBcdWIwOThcdWIyMjBcdWM4ZmNcdWFlMzAiLCJkZXNjcmlwdGlvbiI6IjxwPkFsYmVydFx1YjI5NCBcdWFlMzhcdWM3NzRcdWFjMDAgJG4kXHVjNzc4IFx1YWUzOFx1YjJlNFx1Yjc4MCBcdWNmMDBcdWM3NzRcdWQwNmNcdWI5N2MgXHVhZDZjXHVjNmUwXHViMmU0LiBcdWM3NzQgXHVjZjAwXHVjNzc1XHVjNzQwICRuJFx1YjRmMVx1YmQ4NCBcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjNjNFx1Yjg1ZCBcdWNkMWQgJG4kXHVhYzFjXHVjNzU4IFx1Y2U3OFx1YzczY1x1Yjg1YyBcdWJiZjhcdWI5YWMgXHViMDk4XHViMjIwXHVjODM4XHVjNzg4XHVhY2UwLCBcdWM3N2NcdWJkODAgXHVjZTc4XHVjNWQwXHViMjk0IFx1YWNmY1x1Yzc3YyBcdWQxYTBcdWQ1NTFcdWM3NzQgXHVjNjJjXHViODI0XHVjODM4XHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0IFx1YzU0NFx1Yjc5OCBcdWFkZjhcdWI5YmNcdWM3NDAgJG4gPSA4JFx1Yzc3OCBcdWNmMDBcdWM3NzRcdWQwNmNcdWM3NzRcdWFjZTAgJDAkXHVjNzQwIFx1ZDFhMFx1ZDU1MVx1Yzc3NCBcdWM1YzZcdWIyOTQgXHVjZTc4LCAkMSRcdWM3NDAgXHVhY2ZjXHVjNzdjIFx1ZDFhMFx1ZDU1MVx1Yzc3NCBcdWM3ODhcdWIyOTQgXHVjZTc4XHVjNzQ0IFx1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNC4gXHVjNzc0XHViOTdjIFx1YzgxNVx1YzIxOCBcdWJjMzBcdWM1ZjRcdWI4NWMgXHViMDk4XHVkMGMwXHViMGI0XHViYTc0ICRBID0gWzAsIDEsIDEsIDAsIDAsIDEsIDEsIDBdJFx1Yjg1YyBcdWQ0NWNcdWQ2MDRcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVhZDZjXHVjY2I0XHVjODAxXHVjNzNjXHViODVjLCAkQVtpXSRcdWIyOTQgJGkkXHViYzg4XHVjOWY4IFx1Y2U3OFx1YzVkMCBcdWQxYTBcdWQ1NTFcdWM3NzQgXHVjNzg4XHVjNzNjXHViYTc0ICQxJCwgXHVjNWM2XHVjNzNjXHViYTc0ICQwJFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC9lYjI3YjQyYi01NmFmLTQyNjItYjI3Mi04YjRlODA4MTZiMDdcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDQwMHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cD5BbGJlcnRcdWIyOTQgXHVjNzc0IFx1Y2YwMFx1Yzc3NFx1ZDA2Y1x1Yjk3YyBcdWM4MTVcdWQ2NTVcdWQ3ODggJGstMSRcdWJjODggXHVjNzk4XHViNzdjICRrJFx1YWMxY1x1Yzc1OCBcdWM4NzBcdWFjMDFcdWM3M2NcdWI4NWMgXHViMDk4XHViMjA0XHVhY2UwIFx1YzJmNlx1Yzc0MFx1YjM3MCwgXHVjNTQ0XHViNzk4IFx1Yzg3MFx1YWM3NFx1Yzc0NCBcdWI5Y2NcdWM4NzFcdWQ1NThcdWIzYzRcdWI4NWQgXHVjNzkwXHViOTc0XHVhY2UwIFx1YzJmNlx1YjJlNDo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5cdWM4NzBcdWFjNzQgMTogXHVhYzAxIFx1Y2YwMFx1Yzc3NFx1ZDA2YyBcdWM4NzBcdWFjMDFcdWM1ZDAgXHVkM2VjXHVkNTY4XHViNDFjIFx1ZDFhMFx1ZDU1MVx1Yzc3NCBcdWM2MmNcdWI3N2NcdWFjMDQgXHVjZTc4XHVjNzU4IFx1YWMxY1x1YzIxOFx1YWMwMCBcdWJhYThcdWI0NTAgXHViM2Q5XHVjNzdjXHVkNTc0XHVjNTdjXHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWM4NzBcdWFjNzQgMjogXHViYzg0XHViODI0XHVjOWMwXHViMjk0IFx1Y2U3OFx1Yzc3NFx1YjA5OCBcdWM4NzBcdWFjMDFcdWM3NzQgXHVjMGRkXHVhY2E4XHVjMTFjXHViMjk0IFx1YzU0OFx1YjQxY1x1YjJlNC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0ICRrID0gMiQgXHVjNzc4IFx1YWNiZFx1YzZiMCBcdWJjODRcdWI4MjRcdWM5YzBcdWIyOTQgXHVjZTc4XHVjNzc0XHViMDk4IFx1Yzg3MFx1YWMwMSBcdWM1YzZcdWM3NzQgXHVjNzA0IFx1Y2YwMFx1Yzc3NFx1ZDA2Y1x1Yjk3YyBcdWM3OTBcdWI5N2MgXHVjMjE4IFx1Yzc4OFx1YjI5NCBcdWJjMjlcdWJjOTVcdWM3NDAgXHVjZDFkICQ3JFx1YWMwMFx1YzljMCBcdWM4NzRcdWM3YWNcdWQ1NWNcdWIyZTQuIFx1YWRmOCBcdWM5MTEgXHVjODcwXHVhYzc0IDFcdWM3NDQgXHViOWNjXHVjODcxXHVkNTU4XHViMjk0IFx1YWNiZFx1YzZiMFx1YjI5NCBcdWM1NDRcdWI3OThcdWM2NDAgXHVhYzE5XHVjNzc0IFx1YzEzOCBcdWFjMDBcdWM5YzAgXHViYzI5XHViYzk1XHVjNzc0XHViMmU0LiBcdWFjMDEgXHVjZjAwXHVjNzc0XHVkMDZjIFx1Yzg3MFx1YWMwMVx1YzVkMFx1YjI5NCBcdWQxYTBcdWQ1NTFcdWM3NzQgXHVjNjJjXHViNzdjXHVhYzA0IFx1Y2U3OFx1Yzc3NCBcdWI0NTAgXHVhYzFjXHVjNTI5IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC80OWQ1YTI4Mi00NjY1LTQ1NzEtYjRlYy1lNjkyZDY2ODQwY2NcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwiaGVpZ2h0OiA2MHB4OyB3aWR0aDogNDAwcHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPjxpbWcgYWx0PVwiXCIgc3JjPVwiaHR0cHM6XC9cL3VwbG9hZC5hY21pY3BjLm5ldFwvZDJlYjJkZDYtMTU4My00OTc4LTgxNDgtNDZiOTM4M2Q5MWNiXC8tXC9wcmV2aWV3XC9cIiBzdHlsZT1cImhlaWdodDogNjBweDsgd2lkdGg6IDQwMHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcLzUzMDM5NmRmLWNhYmMtNGM2Mi1hYjc5LWY4M2Q4YzAyZWZmZFwvLVwvcHJldmlld1wvXCIgc3R5bGU9XCJoZWlnaHQ6IDU4cHg7IHdpZHRoOiA0MDBweDtcIiBcLz48XC9wPlxyXG5cclxuPHA+XHViMmU0XHViOTc4IFx1YzYwOFx1Yjg1YywgXHVjNTQ0XHViNzk4IFx1YWRmOFx1YjliY1x1Yzc0MCAkbiA9IDUkLCAkQSA9IFswLCAxLCAwLCAxLCAwXSQsICRrID0gMiRcdWM3NzggXHVhY2JkXHVjNmIwIFx1YzcwNCBcdWM4NzBcdWFjNzRcdWI0ZTRcdWM3NDQgXHViOWNjXHVjODcxXHVkNTU4XHViYTc0XHVjMTFjIFx1Y2YwMFx1Yzc3NFx1ZDA2Y1x1Yjk3YyBcdWM3OTBcdWI5N2MgXHVjMjE4IFx1Yzc4OFx1YjI5NCBcdWI0NTAgXHVhYzAwXHVjOWMwIFx1YmMyOVx1YmM5NVx1Yzc0NCBcdWIwOThcdWQwYzBcdWIwYjhcdWIyZTQuPFwvcD5cclxuXHJcbjxwIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPjxpbWcgYWx0PVwiXCIgc3JjPVwiaHR0cHM6XC9cL3VwbG9hZC5hY21pY3BjLm5ldFwvNzNkNDIyOTMtZTJhYy00MzIxLTg2MjQtZTk2NThkYTU0NDRkXC8tXC9wcmV2aWV3XC9cIiBzdHlsZT1cImhlaWdodDogNDFweDsgd2lkdGg6IDYwMHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cD5cdWM3ODVcdWI4MjVcdWM3M2NcdWI4NWMgJG4kLCAkayQsIFx1YWRmOFx1YjlhY1x1YWNlMCBcdWQxYTBcdWQ1NTFcdWM3NTggXHVjNzIwXHViYjM0XHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YjI5NCBcdWJjMzBcdWM1ZjQgJEEkXHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1Yzg3MFx1YWM3NFx1Yzc0NCBcdWI5Y2NcdWM4NzFcdWQ1NThcdWJhNzAgXHVjZjAwXHVjNzc0XHVkMDZjXHViOTdjIFx1Yzc5MFx1Yjk3YyBcdWMyMTggXHVjNzg4XHViMjk0IFx1YmMyOVx1YmM5NVx1Yzc3NCBcdWNkMWQgXHViYTg3IFx1YWMwMFx1YzljMCBcdWM3ODhcdWIyOTRcdWM5YzAgXHVhZDZjXHVkNTc0XHViY2Y0XHVjNzkwLiBcdWIyZTgsIFx1YjJmNVx1Yzc3NCBcdWI5ZTRcdWM2YjAgXHVkMDc0IFx1YzIxOCBcdWM3ODhcdWM3M2NcdWJiYzBcdWI4NWMgJDEwXjkrNyQgXHViODVjIFx1YjA5OFx1YjIwOCBcdWIwOThcdWJhMzhcdWM5YzBcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiIFx1YzkwNFx1YzVkMCBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNzU4IFx1YzIxOCAkVCRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YjI5NCBcdWI0NTAgXHVjOTA0XHVjNWQwIFx1YjA5OFx1YjIwNFx1YzViNCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1Y2NhYiBcdWM5MDRcdWM1ZDAgJG4kXHVhY2ZjICRrJFx1YWMwMCBcdWFjZjVcdWJjMzFcdWM3M2NcdWI4NWMgXHVhZDZjXHViZDg0XHViNDE4XHVjNWI0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHViNDU4XHVjOWY4IFx1YzkwNFx1YzVkMCBcdWJjMzBcdWM1ZjQgJEEkXHVjNzU4IFx1YWMxMlx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzBcdWIyOTRcdWIzNzAsIFx1YWNmNVx1YmMzMVx1YzVjNlx1Yzc3NCBcdWFlMzhcdWM3NzQgJG4kXHVjNzc4IFx1YmIzOFx1Yzc5MFx1YzVmNCBcdWQ2MTVcdWQwZGNcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNzU4IFx1YzgxNVx1YjJmNVx1Yzc0NCBcdWFjMDEgXHVjOTA0XHVjNWQwIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4iLCJsaW1pdCI6Ijx1bD5cclxuXHQ8bGk+JDEgJmxlOyBUICZsZTsgMTAkPFwvbGk+XHJcblx0PGxpPiQxICZsZTsgayAmbGU7IG4gJmxlOyAxXFwsMDAwXFwsMDAwJDxcL2xpPlxyXG48XC91bD5cclxuIiwic2FtcGxlX2V4cGxhaW5fMSI6IjxwPlx1YzYwOFx1YzgxYyAxOiBcdWNmMDBcdWM3NzRcdWQwNmMgXHVhZTM4XHVjNzc0XHVhYzAwICQxJFx1Yzc3NFx1YmE3MCBcdWM3NzRcdWI5N2MgXHVkNTVjIFx1Yzg3MFx1YWMwMVx1YzczY1x1Yjg1YyBcdWIwOThcdWIyMDRcdWIyOTQgXHViYzI5XHViYzk1XHVjNzQwIFx1ZDU1YyBcdWFjMDBcdWM5YzBcdWM3NzRcdWIyZTQgKFx1Yzc3NCBcdWI1NGMgXHVjZjAwXHVjNzc0XHVkMDZjXHViMjk0ICQwJFx1ZDY4YyBcdWM3OTBcdWI5NzhcdWIyZTQpLjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWM4MWMgMjogXHVjNjA4XHVjODFjIDFcdWFjZmMgXHViOWM4XHVjYzJjXHVhYzAwXHVjOWMwXHViODVjICRrID0gMSRcdWM3NzggXHVhY2JkXHVjNmIwIFx1YjJmNVx1Yzc0MCAkMSRcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1YzgxYyAzOiA8Y29kZT5bMDFdWzAxMF08XC9jb2RlPlx1YWNmYyA8Y29kZT5bMDEwXVsxMF08XC9jb2RlPlx1Yzc1OCBcdWI0NTAgXHVhYzAwXHVjOWMwIFx1YmMyOVx1YmM5NVx1YzczY1x1Yjg1YyBcdWM4NzBcdWFjNzRcdWM3NDQgXHViOWNjXHVjODcxXHVkNTU4XHViYTcwIFx1Y2YwMFx1Yzc3NFx1ZDA2Y1x1Yjk3YyBcdWM3OTBcdWI5N2MgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHVjODFjIDQ6IFx1ZDFhMFx1ZDU1MVx1Yzc3NCBcdWM2MmNcdWI3N2NcdWFjMDQgXHVjZTc4XHVjNzc0ICQyJFx1Y2U3OFx1Yzc3NFx1YzljMFx1YjljYyAkayA9IDMkXHVjNzc0XHViYmMwXHViODVjIFx1Yzg3MFx1YWM3NCAyXHViOTdjIFx1YjljY1x1Yzg3MVx1ZDU1OFx1YjI5NCBcdWJjMjlcdWJjOTVcdWM3NDAgXHVjNWM2XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWM4MWMgNTogXHViY2Y4XHViYjM4XHVjNWQwXHVjMTFjIFx1YjJlNFx1YjhlOFx1YzVjOFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHVjODFjIDg6IFx1Yzg3MFx1YWM3NFx1Yzc0NCBcdWI5Y2NcdWM4NzFcdWQ1NThcdWJhNzAgXHVjZjAwXHVjNzc0XHVkMDZjXHViOTdjIFx1Yzc5MFx1Yjk3YyBcdWMyMTggXHVjNzg4XHViMjk0IFx1YmMyOVx1YmM5NVx1Yzc1OCBcdWMyMThcdWIyOTQgJDNcXCw0ODZcXCw3ODRcXCw0MDEkXHVjNzc0XHVjOWMwXHViOWNjICQxMF45KzckIFx1Yjg1YyBcdWIwOThcdWIyMDggXHViMDk4XHViYTM4XHVjOWMwXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU3NFx1YzU3YyBcdWQ1NjhcdWM1ZDAgXHVjNzIwXHVjNzU4XHVkNTU4XHVjNzkwLjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWM4MWMgOTogXHVjZjAwXHVjNzc0XHVkMDZjIFx1YzcwNFx1YzVkMCBcdWQxYTBcdWQ1NTFcdWM3NzQgXHVkNTU4XHViMDk4XHViM2M0IFx1YzVjNlx1Yzc0NCBcdWMyMThcdWIzYzQgXHVjNzg4XHViMmU0LjxcL3A+XHJcbiJ9LHsicHJvYmxlbV9pZCI6IjI1MzM0IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiTG9uZyBDYWtlIiwiZGVzY3JpcHRpb24iOiI8cD5BbGJlcnQganVzdCBiYWtlZCBhIGNha2Ugb2YgbGVuZ3RoICRuJC4gVGhpcyBjYWtlIGlzIHByZS1kaXZpZGVkIGludG8gJG4kIGVxdWFsLXNpemUgdW5pdHMsIHNvIHRoYXQgaXQgY2FuIGJlIGRpdmlkZWQgaW50byAkbiQgcGllY2VzIGFuZCBzb21lIG9mIHRoZSB1bml0cyBoYXZlIGZydWl0IHRvcHBpbmcgb24gdG9wLjxcL3A+XHJcblxyXG48cD5Gb3IgaW5zdGFuY2UsIHRoZSBpbWFnZSBiZWxvdyBzaG93cyBhIGNha2Ugb2YgbGVuZ3RoICQ4JCB3aGVyZSBlYWNoIHVuaXQgd2l0aCAkMCQgc2hvd3Mgbm8gdG9wcGluZ3MgYW5kIHdpdGggJDEkIHNob3dzIHRvcHBpbmdzLiBJZiBpdCYjMzk7cyByZXByZXNlbnRlZCBhcyBhbiBpbnRlZ2VyIGFycmF5LCBpdCB3b3VsZCBiZSZuYnNwOyRBID0gWzAsIDEsIDEsIDAsIDAsIDEsIDEsIDBdJC4gRm9ybWFsbHksICRBW2ldJCBpcyAkMSQgaWYgdGhlcmUgaXMgYSB0b3BwaW5nIG9uIHRoZSAkaSQtdGggY2FrZSBwaWVjZSBhbmQgJDAkIG90aGVyd2lzZS48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC9lYjI3YjQyYi01NmFmLTQyNjItYjI3Mi04YjRlODA4MTZiMDdcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDQwMHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cD5BbGJlcnQgd2FudHMgdG8gY3V0IHRoaXMgY2FrZSBleGFjdGx5ICRrLTEkIHRpbWVzIGludG8gJGskIHBpZWNlcywgd2hpbGUgc2F0aXNmeWluZyB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+Q29uZGl0aW9uIDE6IEVhY2ggY2FrZSBwaWVjZSBtdXN0IGNvbnRhaW4gdGhlIHNhbWUgbnVtYmVyIG9mIHVuaXRzIHdpdGggdG9wcGluZ3MuPFwvbGk+XHJcblx0PGxpPkNvbmRpdGlvbiAyOiBObyB1bml0IGNhbiBiZSBkaXNjYXJkZWQgb3IgdGhyb3duIGF3YXkuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+Rm9yIGluc3RhbmNlLCB3aGVuICRrID0gMiQsIHRoZXJlIGFyZSAkNyQgZGlmZmVyZW50IHdheXMgdG8gY3V0IHRoZSBjYWtlIGFib3ZlIGludG8gdHdvIHBpZWNlcyB3aGlsZSBzYXRpc2Z5aW5nIENvbmRpdGlvbiAyLiBBbW9uZyB0aG9zZSwgdGhlcmUgYXJlIHRoZXJlIHdheXMgdG8gYWxzbyBzYXRpc2Z5IENvbmRpdGlvbiAxLiBFYWNoIGNha2UgcGllY2Ugd291bGQgaGF2ZSB0d28gdW5pdHMgd2l0aCB0b3BwaW5ncy48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC80OWQ1YTI4Mi00NjY1LTQ1NzEtYjRlYy1lNjkyZDY2ODQwY2NcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwiaGVpZ2h0OiA2MHB4OyB3aWR0aDogNDAwcHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPjxpbWcgYWx0PVwiXCIgc3JjPVwiaHR0cHM6XC9cL3VwbG9hZC5hY21pY3BjLm5ldFwvZDJlYjJkZDYtMTU4My00OTc4LTgxNDgtNDZiOTM4M2Q5MWNiXC8tXC9wcmV2aWV3XC9cIiBzdHlsZT1cImhlaWdodDogNjBweDsgd2lkdGg6IDQwMHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcLzUzMDM5NmRmLWNhYmMtNGM2Mi1hYjc5LWY4M2Q4YzAyZWZmZFwvLVwvcHJldmlld1wvXCIgc3R5bGU9XCJoZWlnaHQ6IDU4cHg7IHdpZHRoOiA0MDBweDtcIiBcLz48XC9wPlxyXG5cclxuPHA+Q29uc2lkZXIgYSBkaWZmZXJlbnQgZXhhbXBsZSBiZWxvdyB3aGVyZSZuYnNwOyRuID0gNSQsICRBID0gWzAsIDEsIDAsIDEsIDBdJCwgYW5kICRrID0gMiQuIFRoZXJlIGFyZSB0d28gd2F5cyB0byBzYXRzaWZ5IHRoZSB0d28gY29uZGl0aW9ucy48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC83M2Q0MjI5My1lMmFjLTQzMjEtODYyNC1lOTY1OGRhNTQ0NGRcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwiaGVpZ2h0OiA0MXB4OyB3aWR0aDogNjAwcHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwPkdpdmVuICRuJCwgJGskLCBhbmQgdGhlIGFycmF5ICRBJCB0aGF0IHJlcHJlc2VudHMgd2hpY2ggdW5pdHMgY29udGFpbiB0b3BwaW5ncywgY29tcHV0ZSB0aGUgbnVtYmVyIG9mIHdheXMgdG8gY3V0IHRoZSBjYWtlIHdoaWxlIHNhdGlzZnlpbmcgdGhlIHNhaWQgY29uZGl0aW9ucy4mbmJzcDtTaW5jZSB0aGUgYW5zd2VyIGNhbiBiZSBsYXJnZSwgb3V0cHV0IHRoZSBhbnN3ZXIgbW9kdWxvJm5ic3A7JDEwXjkrNyQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiB0aGUgaW5wdXQgd2lsbCBjb250YWluICRUJCwgdGhlIG51bWJlciBvZiB0ZXN0IGNhc2VzLjxcL3A+XHJcblxyXG48cD5FYWNoIHRlc3QgY2FzZSB3aWxsIGJlIGdpdmVuIGluIHR3byBsaW5lcy4gVGhlIGZpcnN0IGxpbmUgd2lsbCBjb250YWluICRuJCBhbmQgJGskLCBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZS4gVGhlIHNlY29uZCBsaW5lIHdpbGwgZGVzY3JpYmUgJEEkLCB3aXRob3V0IHdoaXRlc3BhY2UsIGFzIGEgc3RyaW5nIG9mIGxlbmd0aCAkbiQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+T3V0cHV0IGVhY2ggdGVzdCBjYXNlJiMzOTtzIGFuc3dlciBpbiBlYWNoIGxpbmUuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCIsImxpbWl0IjoiPHVsPlxyXG5cdDxsaT4kMSAmbGU7IFQgJmxlOyAxMCQ8XC9saT5cclxuXHQ8bGk+JDEgJmxlOyBrICZsZTsgbiAmbGU7IDFcXCwwMDBcXCwwMDAkPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJzYW1wbGVfZXhwbGFpbl8xIjoiPHA+Q2FzZSAxOiBUaGVyZSBpcyBvbmx5IG9uZSB3YXkgdG8gY3V0IHRoZSBjYWtlIG9mIGxlbmd0aCAkMSQgKHdoZXJlIHlvdSB3b3VsZCBjdXQgaXQgJDAkIHRpbWVzKS48XC9wPlxyXG5cclxuPHA+Q2FzZSAyOiBTaW1pbGFyIHRvIENhc2UgMSwgdGhlIGFuc3dlciBpcyAkMSQgd2hlbiAkayA9IDEkLjxcL3A+XHJcblxyXG48cD5DYXNlIDM6IFRoZXJlIGFyZSB0d28gd2F5cyB0byBjdXQgdGhlIGNha2U6IDxjb2RlPlswMV1bMDEwXTxcL2NvZGU+IGFuZCA8Y29kZT5bMDEwXVsxMF08XC9jb2RlPi48XC9wPlxyXG5cclxuPHA+Q2FzZSA0OiBUaGVyZSBhcmUgdHdvIHVuaXRzIHdpdGggdG9wcGluZ3MsIGJ1dCBzaW5jZSAkayA9IDMkLCB0aGVyZSBpcyBubyB3YXkgdG8gc2F0aXNmeSBjb25kaXRpb24gMi48XC9wPlxyXG5cclxuPHA+Q2FzZSA1OiBEaXNjdXNzZWQgaW4gdGhlIHByb2JsZW0gc3RhdGVtZW50LjxcL3A+XHJcblxyXG48cD5DYXNlIDg6IFRoZSBhbnN3ZXIgaXMgJDNcXCw0ODZcXCw3ODRcXCw0MDEkLCBidXQgeW91IG11c3Qgb3V0cHV0IHRoZSBhbnN3ZXIgbW9kdWxvICQxMF45KzckLjxcL3A+XHJcblxyXG48cD5DYXNlIDk6IE5vdGUgdGhhdCB0aGUgY2FrZSBtYXkgbm90IGhhdmUgYW55IHRvcHBpbmdzLiA8XC9wPlxyXG4ifV0=

시간 제한

  • Java 8: 3 초
  • Python 3: 5 초
  • PyPy3: 5 초
  • Java 8 (OpenJDK): 3 초
  • Java 11: 3 초
  • Kotlin (JVM): 3 초
  • Java 15: 3 초