시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 256 MB 1160 508 425 46.909%

문제

m × n 직사각 그리드(rectangular grid)는, x-좌표의 범위가 0부터 n-1까지인 정수이고 y-좌표의 범위가 0부터 m-1까지 정수인 평면상의 점들에 대응하는 정점들을 가지고, 두 정점에 대응하는 두 점 사이의 거리가 1 일 때에만 그 둘을 잇는 에지가 있는 그래프다. 예를 들어, 4 × 6 직사각 그리드가 그림 1 에 있다. 이 그리드는 m개 행 각각에 n개의 정점이 있고, n개 열 각각에 m 개의 정점이 있다. 행 i와 열 j에 있는 정점을 (i,j)라고 나타낸다. 여기서 0 ≤ i ≤ m-1이고 0 ≤ j ≤ n-1이다.

m × n 직사각 그리드의 모든 행 i ∈ {0, … , m-1}에 대하여 두 정점 (i, 0)과 (i, n-1)을 잇는 에지를 추가하고, 또한 모든 열 j ∈ {0, … , n-1} 에 대하여 두 정점 (0, j) 와 (m-1, j) 을 잇는 에지를 추가하면, 그림 2 에 보인 것과 같이 각 행은 길이 n인 사이클을 이루고 각 열은 길이 m인 사이클을 이루게 된다. 이렇게 만들어진 그래프를 종종 m × n 토로이드 그리드(toroidal grid) 라고 부르는데, 왜냐하면 이 그래프를 토러스(torus)에 에지가 교차하지 않도록 그릴 수 있기 때문이다.

주어진 m × n 토로이드 그리드에 대하여, 모든 정점을 정확히 한번씩 지나는 사이클을 찾는 프로그램을 작성하시오. 문제에서 요구하는 사이클은 그래프에 있는 서로 다른 mn개 정점들의 열 (v1, v2, … , vmn)로 나타낼 수 있는데, 이때 모든 k ∈ {1, … , mn-1}에 대하여 vk와 vk+1은 인접하며 또한 vmn과 v1도 인접하여야 한다.

입력

표준입력에서 데이터를 읽는다. 입력은 T개의 의 테스트 데이터로 구성되어 있다. 입력의 첫째 줄에 입력 데이터의 개수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 두 정수 m과 n을 포함하는 한 줄로 구성되어 있는데, 입력 그래프가 m × n 토로이드 그리드임을 가리킨다. 여기서 3 ≤ m, n ≤ 100이다.

출력

표준출력으로 데이터를 출력한다. 각 테스트 데이터에 대해, 출력의 첫째 줄에는 조건을 만족하는 해가 존재하는지 아닌지를 나타내는 정수를 출력해야 한다. 만약 해가 존재하면, 그 정수는 1 이어야 한다; 그렇지 않으면 -1 이다. 첫째 줄이 1 일 경우에만 추가로 문제에서 요구한 사이클의 정점 열(sequence)을 mn 개의 줄에 출력한다. 복수의 해가 가능하면, 그 중 임의의 하나를 출력하면 된다. 어떤 줄에도 공백 문자(빈칸이나 탭)는 허용되지 않는다.

예제 입력 1

2
3 4
3 3

예제 출력 1

1
(0,0)
(0,1)
(1,1)
(1,2)
(0,2)
(0,3)
(1,3)
(2,3)
(2,2)
(2,1)
(2,0)
(1,0)
1
(2,2)
(2,0)
(1,0)
(0,0)
(0,1)
(0,2)
(1,2)
(1,1)
(2,1)
W3sicHJvYmxlbV9pZCI6IjEwMjUyIiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVhZGY4XHViOWFjXHViNGRjIFx1YWRmOFx1Yjc5OFx1ZDUwNCIsImRlc2NyaXB0aW9uIjoiPHA+bSAmdGltZXM7IG4gXHVjOWMxXHVjMGFjXHVhYzAxIFx1YWRmOFx1YjlhY1x1YjRkYyhyZWN0YW5ndWxhciBncmlkKVx1YjI5NCwgeC1cdWM4OGNcdWQ0NWNcdWM3NTggXHViYzk0XHVjNzA0XHVhYzAwIDBcdWJkODBcdWQxMzAgbi0xXHVhZTRjXHVjOWMwXHVjNzc4IFx1YzgxNVx1YzIxOFx1Yzc3NFx1YWNlMCB5LVx1Yzg4Y1x1ZDQ1Y1x1Yzc1OCBcdWJjOTRcdWM3MDRcdWFjMDAgMFx1YmQ4MFx1ZDEzMCBtLTFcdWFlNGNcdWM5YzAgXHVjODE1XHVjMjE4XHVjNzc4IFx1ZDNjOVx1YmE3NFx1YzBjMVx1Yzc1OCBcdWM4MTBcdWI0ZTRcdWM1ZDAgXHViMzAwXHVjNzUxXHVkNTU4XHViMjk0IFx1YzgxNVx1YzgxMFx1YjRlNFx1Yzc0NCBcdWFjMDBcdWM5YzBcdWFjZTAsIFx1YjQ1MCBcdWM4MTVcdWM4MTBcdWM1ZDAgXHViMzAwXHVjNzUxXHVkNTU4XHViMjk0IFx1YjQ1MCBcdWM4MTAgXHVjMGFjXHVjNzc0XHVjNzU4IFx1YWM3MFx1YjlhY1x1YWMwMCAxIFx1Yzc3YyBcdWI1NGNcdWM1ZDBcdWI5Y2MgXHVhZGY4IFx1YjQ1OFx1Yzc0NCBcdWM3ODdcdWIyOTQgXHVjNWQwXHVjOWMwXHVhYzAwIFx1Yzc4OFx1YjI5NCBcdWFkZjhcdWI3OThcdWQ1MDRcdWIyZTQuIFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQsIDQgJnRpbWVzOyA2IFx1YzljMVx1YzBhY1x1YWMwMSBcdWFkZjhcdWI5YWNcdWI0ZGNcdWFjMDAgXHVhZGY4XHViOWJjIDEgXHVjNWQwIFx1Yzc4OFx1YjJlNC4gXHVjNzc0IFx1YWRmOFx1YjlhY1x1YjRkY1x1YjI5NCBtXHVhYzFjIFx1ZDU4OSBcdWFjMDFcdWFjMDFcdWM1ZDAgblx1YWMxY1x1Yzc1OCBcdWM4MTVcdWM4MTBcdWM3NzQgXHVjNzg4XHVhY2UwLCBuXHVhYzFjIFx1YzVmNCBcdWFjMDFcdWFjMDFcdWM1ZDAgbSBcdWFjMWNcdWM3NTggXHVjODE1XHVjODEwXHVjNzc0IFx1Yzc4OFx1YjJlNC4gXHVkNTg5IGlcdWM2NDAgXHVjNWY0IGpcdWM1ZDAgXHVjNzg4XHViMjk0IFx1YzgxNVx1YzgxMFx1Yzc0NCAoaSxqKVx1Yjc3Y1x1YWNlMCBcdWIwOThcdWQwYzBcdWIwYjhcdWIyZTQuIFx1YzVlY1x1YWUzMFx1YzExYyAwICZsZTsgaSAmbGU7IG0tMVx1Yzc3NFx1YWNlMCAwICZsZTsgaiAmbGU7IG4tMVx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+bSAmdGltZXM7IG4gXHVjOWMxXHVjMGFjXHVhYzAxIFx1YWRmOFx1YjlhY1x1YjRkY1x1Yzc1OCBcdWJhYThcdWI0ZTAgXHVkNTg5IGkgJmlzaW47IHswLCAmaGVsbGlwOyAsIG0tMX1cdWM1ZDAgXHViMzAwXHVkNTU4XHVjNWVjIFx1YjQ1MCBcdWM4MTVcdWM4MTAgKGksIDApXHVhY2ZjIChpLCBuLTEpXHVjNzQ0IFx1Yzc4N1x1YjI5NCBcdWM1ZDBcdWM5YzBcdWI5N2MgXHVjZDk0XHVhYzAwXHVkNTU4XHVhY2UwLCBcdWI2MTBcdWQ1NWMgXHViYWE4XHViNGUwIFx1YzVmNCBqICZpc2luOyB7MCwgJmhlbGxpcDsgLCBuLTF9IFx1YzVkMCBcdWIzMDBcdWQ1NThcdWM1ZWMgXHViNDUwIFx1YzgxNVx1YzgxMCAoMCwgaikgXHVjNjQwIChtLTEsIGopIFx1Yzc0NCBcdWM3ODdcdWIyOTQgXHVjNWQwXHVjOWMwXHViOTdjIFx1Y2Q5NFx1YWMwMFx1ZDU1OFx1YmE3NCwgXHVhZGY4XHViOWJjIDIgXHVjNWQwIFx1YmNmNFx1Yzc3OCBcdWFjODNcdWFjZmMgXHVhYzE5XHVjNzc0IFx1YWMwMSBcdWQ1ODlcdWM3NDAgXHVhZTM4XHVjNzc0IG5cdWM3NzggXHVjMGFjXHVjNzc0XHVkMDc0XHVjNzQ0IFx1Yzc3NFx1YjhlOFx1YWNlMCBcdWFjMDEgXHVjNWY0XHVjNzQwIFx1YWUzOFx1Yzc3NCBtXHVjNzc4IFx1YzBhY1x1Yzc3NFx1ZDA3NFx1Yzc0NCBcdWM3NzRcdWI4ZThcdWFjOGMgXHViNDFjXHViMmU0LiBcdWM3NzRcdWI4MDdcdWFjOGMgXHViOWNjXHViNGU0XHVjNWI0XHVjOWM0IFx1YWRmOFx1Yjc5OFx1ZDUwNFx1Yjk3YyBcdWM4ODVcdWM4ODUgbSAmdGltZXM7IG4gXHVkMWEwXHViODVjXHVjNzc0XHViNGRjIFx1YWRmOFx1YjlhY1x1YjRkYyh0b3JvaWRhbCBncmlkKSBcdWI3N2NcdWFjZTAgXHViZDgwXHViOTc0XHViMjk0XHViMzcwLCBcdWM2NWNcdWIwZDBcdWQ1NThcdWJhNzQgXHVjNzc0IFx1YWRmOFx1Yjc5OFx1ZDUwNFx1Yjk3YyBcdWQxYTBcdWI3ZWNcdWMyYTQodG9ydXMpXHVjNWQwIFx1YzVkMFx1YzljMFx1YWMwMCBcdWFkNTBcdWNjMjhcdWQ1NThcdWM5YzAgXHVjNTRhXHViM2M0XHViODVkIFx1YWRmOFx1YjliNCBcdWMyMTggXHVjNzg4XHVhZTMwIFx1YjU0Y1x1YmIzOFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlclwiPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlczJcL2dnMS5wbmdcIiBzdHlsZT1cImhlaWdodDoyNDNweDsgd2lkdGg6NjQzcHhcIiBcLz48XC9wPlxyXG5cclxuPHA+XHVjOGZjXHVjNWI0XHVjOWM0IG0gJnRpbWVzOyBuIFx1ZDFhMFx1Yjg1Y1x1Yzc3NFx1YjRkYyBcdWFkZjhcdWI5YWNcdWI0ZGNcdWM1ZDAgXHViMzAwXHVkNTU4XHVjNWVjLCBcdWJhYThcdWI0ZTAgXHVjODE1XHVjODEwXHVjNzQ0IFx1YzgxNVx1ZDY1NVx1ZDc4OCBcdWQ1NWNcdWJjODhcdWM1MjkgXHVjOWMwXHViMDk4XHViMjk0IFx1YzBhY1x1Yzc3NFx1ZDA3NFx1Yzc0NCBcdWNjM2VcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC4gXHViYjM4XHVjODFjXHVjNWQwXHVjMTFjIFx1YzY5NFx1YWQ2Y1x1ZDU1OFx1YjI5NCBcdWMwYWNcdWM3NzRcdWQwNzRcdWM3NDAgXHVhZGY4XHViNzk4XHVkNTA0XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWMxMWNcdWI4NWMgXHViMmU0XHViOTc4IG1uXHVhYzFjIFx1YzgxNVx1YzgxMFx1YjRlNFx1Yzc1OCBcdWM1ZjQgKHY8c3ViPjE8XC9zdWI+LCB2PHN1Yj4yPFwvc3ViPiwgJmhlbGxpcDsgLCB2PHN1Yj5tbjxcL3N1Yj4pXHViODVjIFx1YjA5OFx1ZDBjMFx1YjBiYyBcdWMyMTggXHVjNzg4XHViMjk0XHViMzcwLCBcdWM3NzRcdWI1NGMgXHViYWE4XHViNGUwIGsgJmlzaW47IHsxLCAmaGVsbGlwOyAsIG1uLTF9XHVjNWQwIFx1YjMwMFx1ZDU1OFx1YzVlYyB2PHN1Yj5rPFwvc3ViPlx1YzY0MCB2PHN1Yj5rKzE8XC9zdWI+XHVjNzQwIFx1Yzc3OFx1YzgxMVx1ZDU1OFx1YmE3MCBcdWI2MTBcdWQ1NWMgdjxzdWI+bW48XC9zdWI+XHVhY2ZjIHY8c3ViPjE8XC9zdWI+XHViM2M0IFx1Yzc3OFx1YzgxMVx1ZDU1OFx1YzVlY1x1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWQ0NWNcdWM5MDBcdWM3ODVcdWI4MjVcdWM1ZDBcdWMxMWMgXHViMzcwXHVjNzc0XHVkMTMwXHViOTdjIFx1Yzc3ZFx1YjI5NFx1YjJlNC4gXHVjNzg1XHViODI1XHVjNzQwJm5ic3A7VFx1YWMxY1x1Yzc1OCBcdWM3NTggXHVkMTRjXHVjMmE0XHVkMmI4IFx1YjM3MFx1Yzc3NFx1ZDEzMFx1Yjg1YyBcdWFkNmNcdWMxMzFcdWI0MThcdWM1YjQgXHVjNzg4XHViMmU0LiBcdWM3ODVcdWI4MjVcdWM3NTggXHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMCBcdWM3ODVcdWI4MjUgXHViMzcwXHVjNzc0XHVkMTMwXHVjNzU4IFx1YWMxY1x1YzIxOFx1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQgXHVjODE1XHVjMjE4IFRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YjI5NCBcdWI0NTAgXHVjODE1XHVjMjE4IG1cdWFjZmMgblx1Yzc0NCBcdWQzZWNcdWQ1NjhcdWQ1NThcdWIyOTQgXHVkNTVjIFx1YzkwNFx1Yjg1YyBcdWFkNmNcdWMxMzFcdWI0MThcdWM1YjQgXHVjNzg4XHViMjk0XHViMzcwLCBcdWM3ODVcdWI4MjUgXHVhZGY4XHViNzk4XHVkNTA0XHVhYzAwIG0gJnRpbWVzOyBuIFx1ZDFhMFx1Yjg1Y1x1Yzc3NFx1YjRkYyBcdWFkZjhcdWI5YWNcdWI0ZGNcdWM3ODRcdWM3NDQgXHVhYzAwXHViOWFjXHVkMGE4XHViMmU0LiBcdWM1ZWNcdWFlMzBcdWMxMWMgMyAmbGU7IG0sIG4gJmxlOyAxMDBcdWM3NzRcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVkNDVjXHVjOTAwXHVjZDljXHViODI1XHVjNzNjXHViODVjIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIFx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHViMzcwXHVjNzc0XHVkMTMwXHVjNWQwIFx1YjMwMFx1ZDU3NCwgXHVjZDljXHViODI1XHVjNzU4IFx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjODcwXHVhYzc0XHVjNzQ0IFx1YjljY1x1Yzg3MVx1ZDU1OFx1YjI5NCBcdWQ1NzRcdWFjMDAgXHVjODc0XHVjN2FjXHVkNTU4XHViMjk0XHVjOWMwIFx1YzU0NFx1YjJjY1x1YzljMFx1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQgXHVjODE1XHVjMjE4XHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQuIFx1YjljY1x1YzU3ZCBcdWQ1NzRcdWFjMDAgXHVjODc0XHVjN2FjXHVkNTU4XHViYTc0LCBcdWFkZjggXHVjODE1XHVjMjE4XHViMjk0IDEgXHVjNzc0XHVjNWI0XHVjNTdjIFx1ZDU1Y1x1YjJlNDsgXHVhZGY4XHViODA3XHVjOWMwIFx1YzU0YVx1YzczY1x1YmE3NCAtMSBcdWM3NzRcdWIyZTQuIFx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM3NzQgMSBcdWM3N2MgXHVhY2JkXHVjNmIwXHVjNWQwXHViOWNjIFx1Y2Q5NFx1YWMwMFx1Yjg1YyBcdWJiMzhcdWM4MWNcdWM1ZDBcdWMxMWMgXHVjNjk0XHVhZDZjXHVkNTVjIFx1YzBhY1x1Yzc3NFx1ZDA3NFx1Yzc1OCBcdWM4MTVcdWM4MTAgXHVjNWY0KHNlcXVlbmNlKVx1Yzc0NCBtbiBcdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHViY2Y1XHVjMjE4XHVjNzU4IFx1ZDU3NFx1YWMwMCBcdWFjMDBcdWIyYTVcdWQ1NThcdWJhNzQsIFx1YWRmOCBcdWM5MTEgXHVjNzg0XHVjNzU4XHVjNzU4IFx1ZDU1OFx1YjA5OFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NThcdWJhNzQgXHViNDFjXHViMmU0LiBcdWM1YjRcdWI1YTQgXHVjOTA0XHVjNWQwXHViM2M0IFx1YWNmNVx1YmMzMSBcdWJiMzhcdWM3OTAoXHViZTQ4XHVjZTc4XHVjNzc0XHViMDk4IFx1ZDBlZClcdWIyOTQgXHVkNWM4XHVjNmE5XHViNDE4XHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWQ1NWNcdWFkNmRcdWM1YjQifSx7InByb2JsZW1faWQiOiIxMDI1MiIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IkdyaWQgR3JhcGhzIiwiZGVzY3JpcHRpb24iOiI8cD5UaGUgbSAmdGltZXM7IG4gcmVjdGFuZ3VsYXIgZ3JpZCBpcyBhIGdyYXBoIHdob3NlIHZlcnRpY2VzIGNvcnJlc3BvbmQgdG8gdGhlIHBvaW50cyBpbiB0aGUgcGxhbmUgd2l0aCB4LWNvb3JkaW5hdGVzIGJlaW5nIGludGVnZXJzIGluIHRoZSByYW5nZSAwLCAmaGVsbGlwOyAsIG4tMSBhbmQgeS1jb29yZGluYXRlcyBiZWluZyBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCwgJmhlbGxpcDsgLCBtLTEsIGFuZCB0d28gdmVydGljZXMgYXJlIGpvaW5lZCBieSBhbiBlZGdlIHdoZW5ldmVyIHRoZSBjb3JyZXNwb25kaW5nIHBvaW50cyBhcmUgYXQgdW5pdCBkaXN0YW5jZSBhcGFydC4gRm9yIGV4YW1wbGUsIGEgNCAmdGltZXM7IDYgcmVjdGFuZ3VsYXIgZ3JpZCBpcyBzaG93biBpbiBGaWd1cmUgMS4gVGhlIGdyaWQgaGFzIG4gdmVydGljZXMgYXBwZWFyaW5nIGluIGVhY2ggb2YgbSByb3dzIGFuZCBtIHZlcnRpY2VzIGluIGVhY2ggb2YgbiBjb2x1bW5zLiBUaGUgdmVydGV4IGluIHJvdyBpIGFuZCBjb2x1bW4gaiBpcyBkZW5vdGVkIGJ5IChpLCBqKSwgd2hlcmUgMCAmbGU7IGkgJmxlOyBtIC0gMSBhbmQgMCAmbGU7IGogJmxlOyBuIC0gMS48XC9wPlxyXG5cclxuPHA+SWYgd2UgYWRkIGFuIGVkZ2Ugam9pbmluZyB0d28gdmVydGljZXMgKGksIDApIGFuZCAoaSwgbi0xKSBvZiB0aGUgbSAmdGltZXM7IG4gcmVjdGFuZ3VsYXIgZ3JpZCBmb3IgZXZlcnkgcm93IGkgJmlzaW47IHswLCAmaGVsbGlwOyAsIG0tMX0gYW5kIG1vcmVvdmVyLCBhZGQgYW4gZWRnZSBiZXR3ZWVuIHR3byB2ZXJ0aWNlcyAoMCwgaikgYW5kIChtLTEsIGopIGZvciBldmVyeSBjb2x1bW4gaiAmaXNpbjsgezAsICZoZWxsaXA7ICwgbi0xfSwgdGhlbiBlYWNoIHJvdyBmb3JtcyBhIGN5Y2xlIG9mIGxlbmd0aCBuIGFuZCBlYWNoIGNvbHVtbiBmb3JtcyBhIGN5Y2xlIG9mIGxlbmd0aCBtLCBhcyBpbGx1c3RyYXRlZCBpbiBGaWd1cmUgMi4gVGhlIHJlc3VsdGluZyBncmFwaCBpcyBvZnRlbiBjYWxsZWQgYW4gbSAmdGltZXM7IG4gdG9yb2lkYWwgZ3JpZCwgYmVjYXVzZSBpdCBjYW4gYmUgZHJhd24gb24gYSB0b3J1cyB3aXRob3V0IGVkZ2UgY3Jvc3NpbmdzLjxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyXCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzMlwvZ2cyLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjIzOXB4OyB3aWR0aDo2NDNweFwiIFwvPjxcL3A+XHJcblxyXG48cD5HaXZlbiBhbiBtICZ0aW1lczsgbiB0b3JvaWRhbCBncmlkLCB5b3UgYXJlIHRvIHdyaXRlIGEgcHJvZ3JhbSB0byBmaW5kIGEgY3ljbGUgdGhhdCB2aXNpdHMgZXZlcnkgdmVydGV4IGV4YWN0bHkgb25jZS4gSGVyZSwgdGhlIHJlcXVpcmVkIGN5Y2xlIG1heSBiZSByZXByZXNlbnRlZCBhcyBhIHNlcXVlbmNlLCAodjxzdWI+MTxcL3N1Yj4sIHY8c3ViPjI8XC9zdWI+LCAmaGVsbGlwOyAsIHY8c3ViPm1uPFwvc3ViPiksIG9mIG1uIGRpc3RpbmN0IHZlcnRpY2VzIG9mIHRoZSBncmFwaCBzdWNoIHRoYXQgdjxzdWI+azxcL3N1Yj4gYW5kIHY8c3ViPmsrMTxcL3N1Yj4gYXJlIGFkamFjZW50IGZvciBhbGwgayAmaXNpbjsgezEsICZoZWxsaXA7ICwgbW4tMX0gYW5kIG1vcmVvdmVyLCB2PHN1Yj5tbjxcL3N1Yj4gYW5kIHY8c3ViPjE8XC9zdWI+IGFyZSBhZGphY2VudC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPllvdXIgcHJvZ3JhbSBpcyB0byByZWFkIGZyb20gc3RhbmRhcmQgaW5wdXQuIFRoZSBpbnB1dCBjb25zaXN0cyBvZiBUIHRlc3QgY2FzZXMuIFRoZSBudW1iZXIgb2YgdGVzdCBjYXNlcyBUIGlzIGdpdmVuIGluIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBpbnB1dC4gRWFjaCB0ZXN0IGNhc2UgY29uc2lzdHMgb2YgYSBzaW5nbGUgbGluZSBjb250YWluaW5nIHR3byBpbnRlZ2VycywgbSBhbmQgbiwgd2hlcmUgMyAmbGU7IG0sIG4gJmxlOyAxMDAsIGluZGljYXRpbmcgdGhhdCB0aGUgaW5wdXQgZ3JhcGggaXMgYW4gbSAmdGltZXM7IG4gdG9yb2lkYWwgZ3JpZC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Zb3VyIHByb2dyYW0gaXMgdG8gd3JpdGUgdG8gc3RhbmRhcmQgb3V0cHV0LiBGb3IgZWFjaCB0ZXN0IGNhc2UsIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSByZXN1bHRzIG11c3QgY29udGFpbiBhbiBpbnRlZ2VyIGluZGljYXRpbmcgd2hldGhlciB0aGVyZSBleGlzdHMgYSBmZWFzaWJsZSBzb2x1dGlvbi4gSWYgeWVzLCB0aGUgaW50ZWdlciBtdXN0IGJlIDE7IG90aGVyd2lzZSAtMS4gSWYgdGhlIGZpcnN0IGxpbmUgaXMgMSBhbmQgb25seSAxLCB0aGVuIGl0IG11c3QgYmUgZm9sbG93ZWQgYnkgbW4gbGluZXMsIGRlc2NyaWJpbmcgYSBzZXF1ZW5jZSBvZiB2ZXJ0aWNlcyBvZiB0aGUgcmVxdWlyZWQgY3ljbGUuIEluIGNhc2UgbXVsdGlwbGUgc29sdXRpb25zIGFyZSBwb3NzaWJsZSwganVzdCBvdXRwdXQgYW55IG9uZSBvZiB0aGVtLiBObyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKGJsYW5rcyBhbmRcL29yIHRhYnMpIGFyZSBhbGxvd2VkIGluc2lkZSBhIGxpbmUuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d