시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 (추가 시간 없음) 256 MB113633650.000%

문제

Alice와 Bob은 "소수 게임"을 즐겨한다.

소수 게임에서는 두 사람이 먼저 일정한 양의 정수 구간 (interval)을 먼저 고르고, 해당 구간에 속한 모든 정수 각각에 대해 미니 게임을 한 번씩 플레이 한다.

정확한 규칙은 아래와 같다.

  • 먼저, Alice가 두 개의 정수 A, k를 고른다 (이 때 2 ≤ k ≤ A-1 을 만족해야 한다).
    k는 미니 게임을 몇 번 할지를 결정하고, A는 정수 구간의 상한값을 결정한다.
  • 다음으로 Bob이 2 ≤ x ≤ A + 1 - k를 만족하는 정수 x를 고른다.
    x는 정수 구간의 하한값을 결정한다. 즉, x ≤ 정수구간 ≤ A가 된다. 
  • 두 사람은 이제 미니 게임을 k번 플레이 하는데, x이상 x+k-1 이하의 정수 각각에 대하여 아래 미니 게임을 플레이한다 (각각의 미니 게임에서 고른 정수를 N이라 하자).
    • 먼저, N을 종이에 적는다 (x ≤ N ≤ x+k-1). 그리고 Alice와 Bob이 번갈아 플레이 한다.
    • Alice가 먼저 시작하여 종이에 적힌 숫자보다 크지 않은 수 중 소수 (prime) P를 고른다.
    • 종이에 적힌 수가 X라면, 이를 지우고 X-P를 종이에 새로 적는다. 
    • Bob의 차례가 되어 이를 반복한다.
    • 만약 자신의 차례가 되었을 때 종이에 적힌 수가 0이나 1이라면 진다. (다시 말해, X-P를 종이에 적을 때 이 값이 0이나 1이면 이긴다.)

예를 들어 N = 8 이라면, Alice가 자신의 처음 차례에 7을 고르면 이긴다.

N = 10이라면 Alice가 자신의 차례에 고를 수 있는 소수는 2, 3, 5, 7 중 하나이다.

  • 2를 고른 경우, Bob이 자신의 차례에 받는 수는 8이고 이 때 7을 고르면 Bob이 이긴다.
  • 3을 고른 경우, Bob이 자신의 차례에 받는 수는 7이고, 이 때 7을 고르면 Bob이 이긴다.
  • 5를 고른 경우, Bob이 자신의 차례에 받는 수는 5이고, 이 때 5를 고르면 Bob이 이긴다.
  • 7을 고른 경우, Bob이 자신의 차례에 받는 수는 3이고, 이 때 3을 고르면 Bob이 이긴다.

따라서 N = 10인 경우, Bob이 최선을 다한다면 Alice가 이길 방법은 없다. (두 사람은 언제나 최선을 다해서 플레이 한다고 가정하자.)

Bob은 A, k가 주어졌을 때 x를 잘 골라서 자신의 승률을 최대화 하기로 했다. 만약 승률을 최대화 하는 x값이 여럿이라면 그 중 가장 작은 x를 찾기로 했다. Bob을 도와주자.

입력

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

각 줄에 A와 k가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스에 대해 두 개의 정수를 공백으로 구분하여 출력한다.

첫 수는 k번의 게임 중 Bob이 최대 몇 번을 이길 수 있는지 나타내고, 두 번째 수는 이를 위해 Bob이 선택해야하는 x값 중 최소 값을 나타낸다.

제한

  • 1 ≤ T ≤ 50
  • 3 ≤ A ≤ 100,000
  • 2 ≤ k ≤ A-1

예제 입력 1

5
12 2
12 3
12 4
100 11
1000 15

예제 출력 1

2 9
2 8
2 7
3 25
4 885
W3sicHJvYmxlbV9pZCI6IjE5NTk1IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVjMThjXHVjMjE4IFx1YWM4Y1x1Yzc4NCIsImRlc2NyaXB0aW9uIjoiPHA+QWxpY2VcdWM2NDAgQm9iXHVjNzQwICZxdW90O1x1YzE4Y1x1YzIxOCBcdWFjOGNcdWM3ODQmcXVvdDtcdWM3NDQgXHVjOTkwXHVhY2E4XHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWMxOGNcdWMyMTggXHVhYzhjXHVjNzg0XHVjNWQwXHVjMTFjXHViMjk0IFx1YjQ1MCBcdWMwYWNcdWI3OGNcdWM3NzQgXHViYTNjXHVjODAwJm5ic3A7XHVjNzdjXHVjODE1XHVkNTVjIFx1YzU5MVx1Yzc1OCBcdWM4MTVcdWMyMTggXHVhZDZjXHVhYzA0IChpbnRlcnZhbClcdWM3NDQgXHViYTNjXHVjODAwIFx1YWNlMFx1Yjk3NFx1YWNlMCwgXHVkNTc0XHViMmY5IFx1YWQ2Y1x1YWMwNFx1YzVkMCBcdWMxOGRcdWQ1NWMgXHViYWE4XHViNGUwIFx1YzgxNVx1YzIxOCBcdWFjMDFcdWFjMDFcdWM1ZDAgXHViMzAwXHVkNTc0IFx1YmJmOFx1YjJjOCBcdWFjOGNcdWM3ODRcdWM3NDQgXHVkNTVjIFx1YmM4OFx1YzUyOSBcdWQ1MGNcdWI4MDhcdWM3NzQgXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM4MTVcdWQ2NTVcdWQ1NWMgXHVhZGRjXHVjZTU5XHVjNzQwIFx1YzU0NFx1Yjc5OFx1YzY0MCBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+XHViYTNjXHVjODAwLCBBbGljZVx1YWMwMCBcdWI0NTAgXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOCBBLCBrXHViOTdjIFx1YWNlMFx1Yjk3OFx1YjJlNCAoXHVjNzc0IFx1YjU0YyZuYnNwOzIgJmxlOyBrICZsZTsgQS0xJm5ic3A7XHVjNzQ0IFx1YjljY1x1Yzg3MVx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQpLjxiciBcLz5cclxuXHRrXHViMjk0IFx1YmJmOFx1YjJjOCBcdWFjOGNcdWM3ODRcdWM3NDQgXHViYTg3IFx1YmM4OCBcdWQ1NjBcdWM5YzBcdWI5N2MgXHVhY2IwXHVjODE1XHVkNTU4XHVhY2UwLCBBXHViMjk0IFx1YzgxNVx1YzIxOCBcdWFkNmNcdWFjMDRcdWM3NTggXHVjMGMxXHVkNTVjXHVhYzEyXHVjNzQ0IFx1YWNiMFx1YzgxNVx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHQ8bGk+XHViMmU0XHVjNzRjXHVjNzNjXHViODVjIEJvYlx1Yzc3NCAyICZsZTsgeCAmbGU7IEEgKyAxIC0ga1x1Yjk3YyBcdWI5Y2NcdWM4NzFcdWQ1NThcdWIyOTQgXHVjODE1XHVjMjE4IHhcdWI5N2MgXHVhY2UwXHViOTc4XHViMmU0LjxiciBcLz5cclxuXHR4XHViMjk0IFx1YzgxNVx1YzIxOCBcdWFkNmNcdWFjMDRcdWM3NTggXHVkNTU4XHVkNTVjXHVhYzEyXHVjNzQ0IFx1YWNiMFx1YzgxNVx1ZDU1Y1x1YjJlNC4gXHVjOTg5LCB4ICZsZTsgXHVjODE1XHVjMjE4XHVhZDZjXHVhYzA0ICZsZTsgQVx1YWMwMCBcdWI0MWNcdWIyZTQuJm5ic3A7PFwvbGk+XHJcblx0PGxpPlx1YjQ1MCBcdWMwYWNcdWI3OGNcdWM3NDAgXHVjNzc0XHVjODFjIFx1YmJmOFx1YjJjOCBcdWFjOGNcdWM3ODRcdWM3NDQga1x1YmM4OCBcdWQ1MGNcdWI4MDhcdWM3NzQgXHVkNTU4XHViMjk0XHViMzcwLCB4XHVjNzc0XHVjMGMxIHgray0xIFx1Yzc3NFx1ZDU1OFx1Yzc1OCBcdWM4MTVcdWMyMTggXHVhYzAxXHVhYzAxXHVjNWQwIFx1YjMwMFx1ZDU1OFx1YzVlYyBcdWM1NDRcdWI3OTggXHViYmY4XHViMmM4IFx1YWM4Y1x1Yzc4NFx1Yzc0NCBcdWQ1MGNcdWI4MDhcdWM3NzRcdWQ1NWNcdWIyZTQgKFx1YWMwMVx1YWMwMVx1Yzc1OCBcdWJiZjhcdWIyYzggXHVhYzhjXHVjNzg0XHVjNWQwXHVjMTFjIFx1YWNlMFx1Yjk3OCBcdWM4MTVcdWMyMThcdWI5N2MgTlx1Yzc3NFx1Yjc3YyBcdWQ1NThcdWM3OTApLlxyXG5cdDx1bD5cclxuXHRcdDxsaT5cdWJhM2NcdWM4MDAsIE5cdWM3NDQgXHVjODg1XHVjNzc0XHVjNWQwIFx1YzgwMVx1YjI5NFx1YjJlNCAoeCAmbGU7IE4gJmxlOyB4K2stMSkuJm5ic3A7XHVhZGY4XHViOWFjXHVhY2UwIEFsaWNlXHVjNjQwIEJvYlx1Yzc3NCBcdWJjODhcdWFjMDhcdWM1NDQgXHVkNTBjXHViODA4XHVjNzc0IFx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHRcdDxsaT5BbGljZVx1YWMwMCBcdWJhM2NcdWM4MDAgXHVjMmRjXHVjNzkxXHVkNTU4XHVjNWVjJm5ic3A7XHVjODg1XHVjNzc0XHVjNWQwIFx1YzgwMVx1ZDc4YyBcdWMyMmJcdWM3OTBcdWJjZjRcdWIyZTQgXHVkMDZjXHVjOWMwIFx1YzU0YVx1Yzc0MCBcdWMyMTggXHVjOTExIFx1YzE4Y1x1YzIxOCAocHJpbWUpIFBcdWI5N2MgXHVhY2UwXHViOTc4XHViMmU0LjxcL2xpPlxyXG5cdFx0PGxpPlx1Yzg4NVx1Yzc3NFx1YzVkMCBcdWM4MDFcdWQ3OGMgXHVjMjE4XHVhYzAwIFhcdWI3N2NcdWJhNzQsIFx1Yzc3NFx1Yjk3YyBcdWM5YzBcdWM2YjBcdWFjZTAgWC1QXHViOTdjIFx1Yzg4NVx1Yzc3NFx1YzVkMCBcdWMwYzhcdWI4NWMgXHVjODAxXHViMjk0XHViMmU0LiZuYnNwOzxcL2xpPlxyXG5cdFx0PGxpPkJvYlx1Yzc1OCBcdWNjMjhcdWI4NDBcdWFjMDAgXHViNDE4XHVjNWI0IFx1Yzc3NFx1Yjk3YyBcdWJjMThcdWJjZjVcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcblx0XHQ8bGk+XHViOWNjXHVjNTdkIFx1Yzc5MFx1YzJlMFx1Yzc1OCBcdWNjMjhcdWI4NDBcdWFjMDAgXHViNDE4XHVjNWM4XHVjNzQ0IFx1YjU0YyBcdWM4ODVcdWM3NzRcdWM1ZDAgXHVjODAxXHVkNzhjIFx1YzIxOFx1YWMwMCAwXHVjNzc0XHViMDk4IDFcdWM3NzRcdWI3N2NcdWJhNzQgXHVjOWM0XHViMmU0LiAoXHViMmU0XHVjMmRjIFx1YjlkMFx1ZDU3NCwgWC1QXHViOTdjIFx1Yzg4NVx1Yzc3NFx1YzVkMCBcdWM4MDFcdWM3NDQgXHViNTRjIFx1Yzc3NCBcdWFjMTJcdWM3NzQgMFx1Yzc3NFx1YjA5OCAxXHVjNzc0XHViYTc0IFx1Yzc3NFx1YWUzNFx1YjJlNC4pPFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+XHVjNjA4XHViOTdjIFx1YjRlNFx1YzViNCBOID0gOCBcdWM3NzRcdWI3N2NcdWJhNzQsIEFsaWNlXHVhYzAwIFx1Yzc5MFx1YzJlMFx1Yzc1OCBcdWNjOThcdWM3NGMgXHVjYzI4XHViODQwXHVjNWQwIDdcdWM3NDQgXHVhY2UwXHViOTc0XHViYTc0IFx1Yzc3NFx1YWUzNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+TiA9IDEwXHVjNzc0XHViNzdjXHViYTc0IEFsaWNlXHVhYzAwIFx1Yzc5MFx1YzJlMFx1Yzc1OCBcdWNjMjhcdWI4NDBcdWM1ZDAgXHVhY2UwXHViOTdjIFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVjMThjXHVjMjE4XHViMjk0IDIsIDMsIDUsIDcgXHVjOTExIFx1ZDU1OFx1YjA5OFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4yXHViOTdjIFx1YWNlMFx1Yjk3OCBcdWFjYmRcdWM2YjAsIEJvYlx1Yzc3NCBcdWM3OTBcdWMyZTBcdWM3NTggXHVjYzI4XHViODQwXHVjNWQwIFx1YmMxYlx1YjI5NCBcdWMyMThcdWIyOTQgOFx1Yzc3NFx1YWNlMCBcdWM3NzQgXHViNTRjIDdcdWM3NDQgXHVhY2UwXHViOTc0XHViYTc0IEJvYlx1Yzc3NCBcdWM3NzRcdWFlMzRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPjNcdWM3NDQgXHVhY2UwXHViOTc4IFx1YWNiZFx1YzZiMCwgQm9iXHVjNzc0IFx1Yzc5MFx1YzJlMFx1Yzc1OCBcdWNjMjhcdWI4NDBcdWM1ZDAgXHViYzFiXHViMjk0IFx1YzIxOFx1YjI5NCA3XHVjNzc0XHVhY2UwLCBcdWM3NzQgXHViNTRjIDdcdWM3NDQgXHVhY2UwXHViOTc0XHViYTc0IEJvYlx1Yzc3NCBcdWM3NzRcdWFlMzRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPjVcdWI5N2MgXHVhY2UwXHViOTc4IFx1YWNiZFx1YzZiMCwgQm9iXHVjNzc0IFx1Yzc5MFx1YzJlMFx1Yzc1OCBcdWNjMjhcdWI4NDBcdWM1ZDAgXHViYzFiXHViMjk0IFx1YzIxOFx1YjI5NCA1XHVjNzc0XHVhY2UwLCBcdWM3NzQgXHViNTRjIDVcdWI5N2MgXHVhY2UwXHViOTc0XHViYTc0IEJvYlx1Yzc3NCBcdWM3NzRcdWFlMzRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPjdcdWM3NDQgXHVhY2UwXHViOTc4IFx1YWNiZFx1YzZiMCwgQm9iXHVjNzc0IFx1Yzc5MFx1YzJlMFx1Yzc1OCBcdWNjMjhcdWI4NDBcdWM1ZDAgXHViYzFiXHViMjk0IFx1YzIxOFx1YjI5NCAzXHVjNzc0XHVhY2UwLCBcdWM3NzQgXHViNTRjIDNcdWM3NDQgXHVhY2UwXHViOTc0XHViYTc0IEJvYlx1Yzc3NCBcdWM3NzRcdWFlMzRcdWIyZTQuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+XHViNTMwXHViNzdjXHVjMTFjIE4gPSAxMFx1Yzc3OCBcdWFjYmRcdWM2YjAsIEJvYlx1Yzc3NCBcdWNkNWNcdWMxMjBcdWM3NDQgXHViMmU0XHVkNTVjXHViMmU0XHViYTc0IEFsaWNlXHVhYzAwIFx1Yzc3NFx1YWUzOCBcdWJjMjlcdWJjOTVcdWM3NDAgXHVjNWM2XHViMmU0LiAoXHViNDUwIFx1YzBhY1x1Yjc4Y1x1Yzc0MCBcdWM1YjhcdWM4MWNcdWIwOTggXHVjZDVjXHVjMTIwXHVjNzQ0IFx1YjJlNFx1ZDU3NFx1YzExYyBcdWQ1MGNcdWI4MDhcdWM3NzQgXHVkNTVjXHViMmU0XHVhY2UwIFx1YWMwMFx1YzgxNVx1ZDU1OFx1Yzc5MC4pPFwvcD5cclxuXHJcbjxwPkJvYlx1Yzc0MCBBLCBrXHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMgeFx1Yjk3YyBcdWM3OTggXHVhY2U4XHViNzdjXHVjMTFjIFx1Yzc5MFx1YzJlMFx1Yzc1OCBcdWMyYjlcdWI5NjBcdWM3NDQgXHVjZDVjXHViMzAwXHVkNjU0IFx1ZDU1OFx1YWUzMFx1Yjg1YyBcdWQ1ODhcdWIyZTQuIFx1YjljY1x1YzU3ZCBcdWMyYjlcdWI5NjBcdWM3NDQgXHVjZDVjXHViMzAwXHVkNjU0IFx1ZDU1OFx1YjI5NCB4XHVhYzEyXHVjNzc0IFx1YzVlY1x1YjdmZlx1Yzc3NFx1Yjc3Y1x1YmE3NCBcdWFkZjggXHVjOTExIFx1YWMwMFx1YzdhNSBcdWM3OTFcdWM3NDAgeFx1Yjk3YyBcdWNjM2VcdWFlMzBcdWI4NWMgXHVkNTg4XHViMmU0LiBCb2JcdWM3NDQgXHViM2M0XHVjNjQwXHVjOGZjXHVjNzkwLjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiIFx1YzkwNFx1YzVkMCBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNzU4IFx1YzIxOCBUXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzAxIFx1YzkwNFx1YzVkMCBBXHVjNjQwIGtcdWFjMDAgXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjIFx1YWQ2Y1x1YmQ4NFx1YjQxOFx1YzViNCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM1ZDAgXHViMzAwXHVkNTc0IFx1YjQ1MCBcdWFjMWNcdWM3NTggXHVjODE1XHVjMjE4XHViOTdjIFx1YWNmNVx1YmMzMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWJkODRcdWQ1NThcdWM1ZWMgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWNjYWIgXHVjMjE4XHViMjk0IGtcdWJjODhcdWM3NTggXHVhYzhjXHVjNzg0IFx1YzkxMSBCb2JcdWM3NzQgXHVjZDVjXHViMzAwIFx1YmE4NyBcdWJjODhcdWM3NDQgXHVjNzc0XHVhZTM4IFx1YzIxOCBcdWM3ODhcdWIyOTRcdWM5YzAgXHViMDk4XHVkMGMwXHViMGI0XHVhY2UwLCBcdWI0NTAgXHViYzg4XHVjOWY4IFx1YzIxOFx1YjI5NCBcdWM3NzRcdWI5N2MgXHVjNzA0XHVkNTc0IEJvYlx1Yzc3NCBcdWMxMjBcdWQwZGRcdWQ1NzRcdWM1N2NcdWQ1NThcdWIyOTQgeFx1YWMxMiBcdWM5MTEgXHVjZDVjXHVjMThjIFx1YWMxMlx1Yzc0NCZuYnNwO1x1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4iLCJsaW1pdCI6Ijx1bD5cclxuXHQ8bGk+MSAmbGU7IFQgJmxlOyA1MDxcL2xpPlxyXG5cdDxsaT4zICZsZTsgQSAmbGU7IDEwMCwwMDA8XC9saT5cclxuXHQ8bGk+MiAmbGU7IGsgJmxlOyBBLTE8XC9saT5cclxuPFwvdWw+XHJcbiJ9LHsicHJvYmxlbV9pZCI6IjE5NTk1IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiUHJpbWUgTnVtYmVyIEdhbWUiLCJkZXNjcmlwdGlvbiI6IjxwPkFsaWNlIGFuZCBCb2Igb2Z0ZW4gcGxheSB0aGUgJnF1b3Q7UHJpbWUgTnVtYmVyIEdhbWUmcXVvdDsuPFwvcD5cclxuXHJcbjxwPkluIHRoaXMgZ2FtZSwgdGhlIHR3byBwbGF5ZXJzIGZpcnN0IHBpY2sgYW4gaW50ZXJ2YWwgb2YgcG9zaXRpdmUgaW50ZWdlcnMsIGFuZCB0aGVuIHBsYXkgYSBtaW5pLWdhbWUgZm9yIGVhY2ggaW50ZWdlciBpbiB0aGlzIGludGVydmFsLjxcL3A+XHJcblxyXG48cD5Gb3JtYWwgcnVsZXMgYXJlIGRlZmluZWQgYXMgZm9sbG93cy48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5GaXJzdCwgQWxpY2UgcGlja3MgdHdvIGludGVnZXJzIEEgYW5kIGsgKDIgJmxlOyBrICZsZTsgQS0xKS48YnIgXC8+XHJcblx0ayBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgbWluaSBnYW1lcyB0aGV5IHdpbGwgcGxheSwgYW5kIEEgZGVjaWRlcyB0aGUgbWF4aW11bSBwb3NzaWJsZSB2YWx1ZSBvZiB0aGUgc2FpZCBpbnRlZ2VyIGludGVydmFsLjxcL2xpPlxyXG5cdDxsaT5OZXh0LCBCb2IgcGljayBhbiBpbnRlZ2VyIHggd2l0aCZuYnNwOzIgJmxlOyB4ICZsZTsgQSArIDEgLSBrLjxiciBcLz5cclxuXHR4IGRldGVybWluZXMgdGhlIG1pbmltdW0gcG9zc2libGUgdmFsdWUgb2YgdGhlIHNhaWQgaW50ZWdlciBpbnRlcnZhbC4gVGhpcyBlbnN1cmVzIHRoYXQgeCAmbGU7IGludGVnZXJzIGluIHRoZSBpbnRlcnZhbCAmbGU7IEEuPFwvbGk+XHJcblx0PGxpPk5vdyB0aGUgdHdvIHBsYXllcnMgd2lsbCBwbGF5IGEgbWluaS1nYW1lIGV4YWN0bHkgayB0aW1lcywgb25jZSBmb3IgZWFjaCBpbnRlZ2VyIGJldHdlZW4geCBhbmQgeCtrLTEsIGluY2x1c2l2ZSAobGV0IE4gYmUgdGhlIGludGVnZXIgcGlja2VkIGZvciBhIHNwZWNpZmljIG1pbmktZ2FtZSkuXHJcblx0PHVsPlxyXG5cdFx0PGxpPkZpcnN0LCB3cml0ZSBkb3duICZxdW90O04mcXVvdDsgb24gYSBwaWVjZSBvZiBwYXBlciAoeCAmbGU7IE4gJmxlOyB4K2stMSkuIEFsaWNlIGFuZCBCb2Igd2lsbCB0YWtlIHR1cm5zIHRvIHBsYXkgdGhpcyBtaW5pLWdhbWUuPFwvbGk+XHJcblx0XHQ8bGk+QWxpY2UgZ29lcyBmaXJzdCwgYW5kIHBpY2tzIGEgcHJpbWUgbnVtYmVyIFAgdGhhdCBpcyBubyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciB3cml0dGVuIG9uIHRoZSBwYXBlci48XC9saT5cclxuXHRcdDxsaT5JZiBYIGlzIHRoZSBudW1iZXIgd3JpdHRlbiBvbiB0aGUgcGFwZXIsIHRoZW4gQWxpY2UgZXJhc2VzIFgsIGFuZCB3cml0ZXMgWC1QLjxcL2xpPlxyXG5cdFx0PGxpPkJvYiBnb2VzIG5leHQsIGFuZCByZXBlYXQgdGhpcy48XC9saT5cclxuXHRcdDxsaT5JZiBhIHBsYXllciBiZWdpbnMgaGlzXC9oZXIgdHVybiB3aXRoIDAgb3IgMSB3cml0dGVuIG9uIHRoZSBwYXBlciwgdGhlIHBsYXllciBsb3Nlcy4gKEluIG90aGVyIHdvcmRzLCBpZiBhIHBsYXllciB3cml0ZXMgMCBvciAxIG9uIHRoZSBwYXBlciwgdGhlIHBsYXllciB3aW5zLik8XC9saT5cclxuXHQ8XC91bD5cclxuXHQ8XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5Gb3IgaW5zdGFuY2UsIHdoZW4gTiA9IDgsIEFsaWNlIGNhbiBwaWNrIFAgPSA3IGluIHR1cm4gMSwgYW5kIHdpbnMuPFwvcD5cclxuXHJcbjxwPldoZW4gTiA9IDEwLCBBbGljZSBjYW4gcGljayBhbnkgb2YgMiwgMywgNSwgb3IgNy48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5JZiBBbGljZSBwaWNrcyAyLCB0aGVuIEJvYiBzdGFydHMgaGlzIHR1cm4gd2l0aCA4LCBhbmQgQm9iIGNhbiBjaG9vc2UgNyB0byB3aW4uPFwvbGk+XHJcblx0PGxpPklmIEFsaWNlIHBpY2tzIDMsIHRoZW4gQm9iIHN0YXJ0cyBoaXMgdHVybiB3aXRoIDcsIGFuZCBCb2IgY2FuIGNob29zZSA3IHRvIHdpbi48XC9saT5cclxuXHQ8bGk+SWYgQWxpY2UgcGlja3MgNSwgdGhlbiBCb2Igc3RhcnRzIGhpcyB0dXJuIHdpdGggNSwgYW5kIEJvYiBjYW4gY2hvb3NlIDUgdG8gd2luLjxcL2xpPlxyXG5cdDxsaT5JZiBBbGljZSBwaWNrcyA3LCB0aGVuIEJvYiBzdGFydHMgaGlzIHR1cm4gd2l0aCAzLCBhbmQgQm9iIGNhbiBjaG9vc2UgMyB0byB3aW4uPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+SGVuY2UsIHdoZW4gTiA9IDEwLCBpZiBCb2IgcGxheXMgb3B0aW1hbGx5LCB0aGVuIEFsaWNlIGNhbiYjMzk7dCB3aW4uJm5ic3A7PGJyIFwvPlxyXG5JbiB0aGlzIHByb2JsZW0sIHdlJiMzOTtsbCBhc3N1bWUgdGhhdCBib3RoIHBsYXllcnMgd2lsbCBhbHdheXMgcGxheSBvcHRpbWFsbHkuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkJvYiB3YW50cyB0byBtYXhpbWl6ZSBoaXMgd2luIHJhdGUmbmJzcDtieSBjaG9vc2luZyB4IGNhcmVmdWxseSwgZ2l2ZW4gdGhhdCBBbGljZSBoYXMgcGlja2VkIEEgYW5kIGsuJm5ic3A7PGJyIFwvPlxyXG5JZiB0aGVyZSBhcmUgbWFueSBzdWNoIHgmIzM5O3MsIHRoZW4gQm9iIHdhbnRzIHRvIGZpbmQgdGhlIHNtYWxsZXN0IHN1Y2ggeC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIHdpbGwgY29udGFpbiB0aGUgbnVtYmVyIG9mIHRlc3QgY2FzZXMsIFQuPFwvcD5cclxuXHJcbjxwPkVhY2ggdGVzdCBjYXNlIHdpbGwgY29udGFpbiBBIGFuZCBrIHNlcGFyYXRlZCBieSBhIHdoaXRlc3BhY2UuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+Rm9yIGVhY2ggdGVzdCBjYXNlLCB5b3UgbXVzdCBvdXRwdXQgdHdvIGludGVnZXJzIHNlcGFyYXRlZCBieSBhIHdoaXRlc3BhY2UuPFwvcD5cclxuXHJcbjxwPlRoZSBmaXJzdCBudW1iZXIgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbmktZ2FtZXMgQm9iIGNhbiB3aW4sIGFuZCB0aGUgc2Vjb25kIG51bWJlciBpcyB0aGUgc21hbGxlc3QgdmFsdWUgb2YgeCB0byBhY2NvbXBsaXNoIHRoYXQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCIsImxpbWl0IjoiPHVsPlxyXG5cdDxsaT4xICZsZTsgVCAmbGU7IDUwPFwvbGk+XHJcblx0PGxpPjMgJmxlOyBBICZsZTsgMTAwLDAwMDxcL2xpPlxyXG5cdDxsaT4yICZsZTsgayAmbGU7IEEtMTxcL2xpPlxyXG48XC91bD5cclxuIn1d