시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 39 13 12 50.000%

문제

계수가 0 또는 1로만 이루어지는 특수한 다항식들의 집합에 대해 생각해보자.

이 집합의 두 다항식을 더하는 방법은 다음과 같다.

  • 우선, 두 다항식을 더한다.
  • 결과 다항식의 각 계수를 2로 나눈 나머지를 각각의 계수에 대입한다.

이 때, (0 + 0) mod 2 = 0, (0 + 1) mod 2 = 1, (1 + 0) mod 2 = 1, and (1 + 1) mod 2 = 0 이므로

결국 결과 다항식의 각 차수의 계수는 더하고자 했던 두 다항식의 계수에 대한 XOR 연산의 결과가 된다.

(x 6 + x4 + x2 + x + 1) + (x7 + x + 1) = x7 + x6 + x4 + x2

이제 뺄셈을 정의하는데, 뺄셈의 경우에도 덧셈과 같이 (0 - 0) mod 2 = 0, (0 - 1) mod 2 = 1, (1 - 0) mod 2 = 1, and (1 - 1) mod 2 = 0 이므로
덧셈과 뺄셈은 이 다항식들의 집합에 대해 동일한 의미를 지닌다. (계수 간의 XOR 연산이 새 다항식의 계수가 됨)

예시는 다음과 같다.

(x 6 + x4 + x2 + x + 1) - (x7 + x + 1) = x7 + x6 + x4 + x2

다음으로 곱셈을 정의하는데, 곱셈 또한 일반적인 다항식 간의 곱셈 연산을 한 뒤 각각의 계수를 2로 나눈 나머지를 취하면 된다.

(x 6 + x4 + x2 + x + 1) (x7+ x + 1) = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1

두 다항식 f(x)와 g(x)의 곱을 h(x)로 나눈 나머지는 f(x)와 g(x)를 위와 같은 방법으로 곱한 뒤, h(x)로 나눈 나머지가 된다.

(x 6 + x4 + x2 + x + 1) (x7 + x + 1) modulo (x8 + x4 + x3 + x + 1) = x7 + x6 + 1

어떤 다항식의 최고차항의 차수를 degree, 줄여서 d라 하면,

f(x), g(x), h(x)의 계수가 0 또는 1이므로 각 다항식은 정수 d+1과 길이 d+1인 비트스트링의 쌍으로 유일하게 표기할 수 있다.

예를 들어 x 7 + x6 + 1은 다음과 같이 표기된다.

8 1 1 0 0 0 0 0 1

이 때, 8은 총 비트의 개수이며, 최고차항의 차수(7) + 1이다.

이제 위에서 설명한 성질을 만족하는 세 다항식 f(x), g(x), h(x)가 설명한 형식대로 주어지면 f(x)g(x) modulo h(x)를 계산하면 된다.

입력

입력은 여러 테스트 케이스로 이루어져 있다.

입력의 첫 줄에 테스트케이스의 수 T가 주어지며, 각 테스트 케이스마다 세 줄에 걸쳐 문제에서 설명한 형식대로 표기한 f(x), g(x), h(x)가 주어진다.

출력

각 테스트 케이스마다 한 줄에 f(x)g(x)를 h(x)로 나눈 나머지를 문제에서 설명한 형식대로 출력한다.

예제 입력 1

2
7 1 0 1 0 1 1 1
8 1 0 0 0 0 0 1 1
9 1 0 0 0 1 1 0 1 1
10 1 1 0 1 0 0 1 0 0 1
12 1 1 0 1 0 0 1 1 0 0 1 0
15 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1

예제 출력 1

8 1 1 0 0 0 0 0 1
14 1 1 0 1 1 0 0 1 1 1 0 1 0 0
W3sicHJvYmxlbV9pZCI6IjczNDUiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWIyZTRcdWQ1NmRcdWMyZGRcdWM3NTggXHViMDk4XHViYTM4XHVjOWMwIFx1YzVmMFx1YzBiMCIsImRlc2NyaXB0aW9uIjoiPHA+XHVhY2M0XHVjMjE4XHVhYzAwIDAgXHViNjEwXHViMjk0IDFcdWI4NWNcdWI5Y2MgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWMwXHViMjk0IFx1ZDJiOVx1YzIxOFx1ZDU1YyBcdWIyZTRcdWQ1NmRcdWMyZGRcdWI0ZTRcdWM3NTggXHVjOWQxXHVkNTY5XHVjNWQwJm5ic3A7XHViMzAwXHVkNTc0IFx1YzBkZFx1YWMwMVx1ZDU3NFx1YmNmNFx1Yzc5MC48XC9wPlxyXG5cclxuPHA+XHVjNzc0IFx1YzlkMVx1ZDU2OVx1Yzc1OCBcdWI0NTAgXHViMmU0XHVkNTZkXHVjMmRkXHVjNzQ0IFx1YjM1NFx1ZDU1OFx1YjI5NCBcdWJjMjlcdWJjOTVcdWM3NDAgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5cdWM2YjBcdWMxMjAsIFx1YjQ1MCBcdWIyZTRcdWQ1NmRcdWMyZGRcdWM3NDQgXHViMzU0XHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWFjYjBcdWFjZmMgXHViMmU0XHVkNTZkXHVjMmRkXHVjNzU4Jm5ic3A7XHVhYzAxIFx1YWNjNFx1YzIxOFx1Yjk3YyAyXHViODVjIFx1YjA5OFx1YjIwOCBcdWIwOThcdWJhMzhcdWM5YzBcdWI5N2MgXHVhYzAxXHVhYzAxXHVjNzU4Jm5ic3A7XHVhY2M0XHVjMjE4XHVjNWQwIFx1YjMwMFx1Yzc4NVx1ZDU1Y1x1YjJlNC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWM3NzQgXHViNTRjLCZuYnNwOygwICsgMCkgbW9kIDIgPSAwLCAoMCArIDEpIG1vZCAyID0gMSwgKDEgKyAwKSBtb2QgMiA9IDEsIGFuZCAoMSArIDEpIG1vZCAyID0gMCBcdWM3NzRcdWJiYzBcdWI4NWM8XC9wPlxyXG5cclxuPHA+XHVhY2IwXHVhZDZkIFx1YWNiMFx1YWNmYyBcdWIyZTRcdWQ1NmRcdWMyZGRcdWM3NTggXHVhYzAxIFx1Y2MyOFx1YzIxOFx1Yzc1OCBcdWFjYzRcdWMyMThcdWIyOTQgXHViMzU0XHVkNTU4XHVhY2UwXHVjNzkwIFx1ZDU4OFx1YjM1OCBcdWI0NTAgXHViMmU0XHVkNTZkXHVjMmRkXHVjNzU4IFx1YWNjNFx1YzIxOFx1YzVkMCBcdWIzMDBcdWQ1NWMgWE9SIFx1YzVmMFx1YzBiMFx1Yzc1OCBcdWFjYjBcdWFjZmNcdWFjMDAgXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cD4oeCA8c3VwPjY8XC9zdXA+ICsgeDxzdXA+NDxcL3N1cD4gKyB4PHN1cD4yPFwvc3VwPiArIHggKyAxKSArICh4PHN1cD43PFwvc3VwPiArIHggKyAxKSA9IHg8c3VwPjc8XC9zdXA+ICsgeDxzdXA+NjxcL3N1cD4gKyB4PHN1cD40PFwvc3VwPiArIHg8c3VwPjI8XC9zdXA+PFwvcD5cclxuXHJcbjxwPlx1Yzc3NFx1YzgxYyBcdWJlODRcdWMxNDhcdWM3NDQgXHVjODE1XHVjNzU4XHVkNTU4XHViMjk0XHViMzcwLCBcdWJlODRcdWMxNDhcdWM3NTggXHVhY2JkXHVjNmIwXHVjNWQwXHViM2M0IFx1YjM2N1x1YzE0OFx1YWNmYyBcdWFjMTlcdWM3NzQmbmJzcDsoMCAtIDApIG1vZCAyID0gMCwgKDAgLSZuYnNwOzEpIG1vZCAyID0gMSwgKDEgLSAwKSBtb2QgMiA9IDEsIGFuZCAoMSAtIDEpIG1vZCAyID0gMCBcdWM3NzRcdWJiYzBcdWI4NWM8YnIgXC8+XHJcblx1YjM2N1x1YzE0OFx1YWNmYyBcdWJlODRcdWMxNDhcdWM3NDAgXHVjNzc0IFx1YjJlNFx1ZDU2ZFx1YzJkZFx1YjRlNFx1Yzc1OCZuYnNwO1x1YzlkMVx1ZDU2OVx1YzVkMCBcdWIzMDBcdWQ1NzQgXHViM2Q5XHVjNzdjXHVkNTVjIFx1Yzc1OFx1YmJmOFx1Yjk3YyBcdWM5YzBcdWIyY2NcdWIyZTQuIChcdWFjYzRcdWMyMTggXHVhYzA0XHVjNzU4IFhPUiBcdWM1ZjBcdWMwYjBcdWM3NzQgXHVjMGM4IFx1YjJlNFx1ZDU2ZFx1YzJkZFx1Yzc1OCBcdWFjYzRcdWMyMThcdWFjMDAgXHViNDI4KTxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWMyZGNcdWIyOTQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1YjJlNC48XC9wPlxyXG5cclxuPHA+KHggPHN1cD42PFwvc3VwPiArIHg8c3VwPjQ8XC9zdXA+ICsgeDxzdXA+MjxcL3N1cD4gKyB4ICsgMSkgLSAoeDxzdXA+NzxcL3N1cD4gKyB4ICsgMSkgPSB4PHN1cD43PFwvc3VwPiArIHg8c3VwPjY8XC9zdXA+ICsgeDxzdXA+NDxcL3N1cD4gKyB4PHN1cD4yPFwvc3VwPjxcL3A+XHJcblxyXG48cD5cdWIyZTRcdWM3NGNcdWM3M2NcdWI4NWMgXHVhY2YxXHVjMTQ4XHVjNzQ0IFx1YzgxNVx1Yzc1OFx1ZDU1OFx1YjI5NFx1YjM3MCwgXHVhY2YxXHVjMTQ4IFx1YjYxMFx1ZDU1YyBcdWM3N2NcdWJjMThcdWM4MDFcdWM3NzggXHViMmU0XHVkNTZkXHVjMmRkIFx1YWMwNFx1Yzc1OCBcdWFjZjFcdWMxNDggXHVjNWYwXHVjMGIwXHVjNzQ0IFx1ZDU1YyBcdWI0YTQgXHVhYzAxXHVhYzAxXHVjNzU4IFx1YWNjNFx1YzIxOFx1Yjk3YyAyXHViODVjIFx1YjA5OFx1YjIwOCBcdWIwOThcdWJhMzhcdWM5YzBcdWI5N2MgXHVjZGU4XHVkNTU4XHViYTc0IFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+KHggPHN1cD42PFwvc3VwPiArIHg8c3VwPjQ8XC9zdXA+ICsgeDxzdXA+MjxcL3N1cD4gKyB4ICsgMSkgKHg8c3VwPjc8XC9zdXA+KyB4ICsgMSkgPSB4PHN1cD4xMzxcL3N1cD4gKyB4PHN1cD4xMTxcL3N1cD4gKyB4PHN1cD45PFwvc3VwPiArIHg8c3VwPjg8XC9zdXA+ICsgeDxzdXA+NjxcL3N1cD4gKyB4PHN1cD41PFwvc3VwPiArIHg8c3VwPjQ8XC9zdXA+ICsgeDxzdXA+MzxcL3N1cD4gKyAxPFwvcD5cclxuXHJcbjxwPlx1YjQ1MCBcdWIyZTRcdWQ1NmRcdWMyZGQgZih4KVx1YzY0MCBnKHgpXHVjNzU4IFx1YWNmMVx1Yzc0NCBoKHgpXHViODVjIFx1YjA5OFx1YjIwOCBcdWIwOThcdWJhMzhcdWM5YzBcdWIyOTQgZih4KVx1YzY0MCBnKHgpXHViOTdjIFx1YzcwNFx1YzY0MCBcdWFjMTlcdWM3NDAgXHViYzI5XHViYzk1XHVjNzNjXHViODVjIFx1YWNmMVx1ZDU1YyBcdWI0YTQsIGgoeClcdWI4NWMgXHViMDk4XHViMjA4IFx1YjA5OFx1YmEzOFx1YzljMFx1YWMwMCBcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPih4IDxzdXA+NjxcL3N1cD4gKyB4PHN1cD40PFwvc3VwPiArIHg8c3VwPjI8XC9zdXA+ICsgeCArIDEpICh4PHN1cD43PFwvc3VwPiArIHggKyAxKSBtb2R1bG8gKHg8c3VwPjg8XC9zdXA+ICsgeDxzdXA+NDxcL3N1cD4gKyB4PHN1cD4zPFwvc3VwPiArIHggKyAxKSA9IHg8c3VwPjc8XC9zdXA+ICsgeDxzdXA+NjxcL3N1cD4gKyAxPFwvcD5cclxuXHJcbjxwPlx1YzViNFx1YjVhNCBcdWIyZTRcdWQ1NmRcdWMyZGRcdWM3NTggXHVjZDVjXHVhY2UwXHVjYzI4XHVkNTZkXHVjNzU4IFx1Y2MyOFx1YzIxOFx1Yjk3YyBkZWdyZWUsIFx1YzkwNFx1YzVlY1x1YzExYyBkXHViNzdjIFx1ZDU1OFx1YmE3NCw8XC9wPlxyXG5cclxuPHA+Zih4KSwgZyh4KSwgaCh4KVx1Yzc1OCBcdWFjYzRcdWMyMThcdWFjMDAgMCBcdWI2MTBcdWIyOTQgMVx1Yzc3NFx1YmJjMFx1Yjg1YyBcdWFjMDEgXHViMmU0XHVkNTZkXHVjMmRkXHVjNzQwJm5ic3A7XHVjODE1XHVjMjE4IGQrMVx1YWNmYyBcdWFlMzhcdWM3NzQgZCsxXHVjNzc4Jm5ic3A7XHViZTQ0XHVkMmI4XHVjMmE0XHVkMmI4XHViOWMxXHVjNzU4IFx1YzMwZFx1YzczY1x1Yjg1YyBcdWM3MjBcdWM3N2NcdWQ1NThcdWFjOGMmbmJzcDtcdWQ0NWNcdWFlMzBcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHViOTdjIFx1YjRlNFx1YzViNCZuYnNwO3ggPHN1cD43PFwvc3VwPiArIHg8c3VwPjY8XC9zdXA+ICsgMVx1Yzc0MCBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHVjNzc0IFx1ZDQ1Y1x1YWUzMFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+OCAxIDEgMCAwIDAgMCAwIDE8XC9wPlxyXG5cclxuPHA+XHVjNzc0IFx1YjU0YywgOFx1Yzc0MCBcdWNkMWQgXHViZTQ0XHVkMmI4XHVjNzU4IFx1YWMxY1x1YzIxOFx1Yzc3NFx1YmE3MCwgXHVjZDVjXHVhY2UwXHVjYzI4XHVkNTZkXHVjNzU4IFx1Y2MyOFx1YzIxOCg3KSArIDFcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc3NFx1YzgxYyBcdWM3MDRcdWM1ZDBcdWMxMWMgXHVjMTI0XHViYTg1XHVkNTVjIFx1YzEzMVx1YzljOFx1Yzc0NCBcdWI5Y2NcdWM4NzFcdWQ1NThcdWIyOTQmbmJzcDtcdWMxMzggXHViMmU0XHVkNTZkXHVjMmRkIGYoeCksIGcoeCksIGgoeClcdWFjMDAgXHVjMTI0XHViYTg1XHVkNTVjIFx1ZDYxNVx1YzJkZFx1YjMwMFx1Yjg1YyZuYnNwO1x1YzhmY1x1YzViNFx1YzljMFx1YmE3NCBmKHgpZyh4KSBtb2R1bG8gaCh4KVx1Yjk3YyBcdWFjYzRcdWMwYjBcdWQ1NThcdWJhNzQgXHViNDFjXHViMmU0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjNzg1XHViODI1XHVjNzQwIFx1YzVlY1x1YjdlYyBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc4NVx1YjgyNVx1Yzc1OCBcdWNjYWIgXHVjOTA0XHVjNWQwIFx1ZDE0Y1x1YzJhNFx1ZDJiOFx1Y2YwMFx1Yzc3NFx1YzJhNFx1Yzc1OCBcdWMyMTggVFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzBcdWJhNzAsIFx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHViOWM4XHViMmU0IFx1YzEzOCBcdWM5MDRcdWM1ZDAgXHVhYzc4XHVjY2QwJm5ic3A7XHViYjM4XHVjODFjXHVjNWQwXHVjMTFjIFx1YzEyNFx1YmE4NVx1ZDU1YyBcdWQ2MTVcdWMyZGRcdWIzMDBcdWI4NWMgXHVkNDVjXHVhZTMwXHVkNTVjIGYoeCksIGcoeCksIGgoeClcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHViOWM4XHViMmU0IFx1ZDU1YyBcdWM5MDRcdWM1ZDAmbmJzcDtmKHgpZyh4KVx1Yjk3YyBoKHgpXHViODVjIFx1YjA5OFx1YjIwOCBcdWIwOThcdWJhMzhcdWM5YzBcdWI5N2MmbmJzcDtcdWJiMzhcdWM4MWNcdWM1ZDBcdWMxMWMgXHVjMTI0XHViYTg1XHVkNTVjIFx1ZDYxNVx1YzJkZFx1YjMwMFx1Yjg1YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiNzM0NSIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6Ik1vZHVsYXIgbXVsdGlwbGljYXRpb24gb2YgcG9seW5vbWlhbHMiLCJkZXNjcmlwdGlvbiI6IjxwPkNvbnNpZGVyIHBvbHlub21pYWxzIHdob3NlIGNvZWZmaWNpZW50cyBhcmUgMCBhbmQgMS4gQWRkaXRpb24gb2YgdHdvIHBvbHlub21pYWxzIGlzIGFjaGlldmVkIGJ5ICYjMzk7YWRkaW5nJiMzOTsgdGhlIGNvZWZmaWNpZW50cyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcG93ZXJzIGluIHRoZSBwb2x5bm9taWFscy4gVGhlIGFkZGl0aW9uIG9mIGNvZWZmaWNpZW50cyBpcyBwZXJmb3JtZWQgYnkgYWRkaXRpb24gbW9kdWxvIDIsIGkuZS4sICgwICsgMCkgbW9kIDIgPSAwLCAoMCArIDEpIG1vZCAyID0gMSwgKDEgKyAwKSBtb2QgMiA9IDEsIGFuZCAoMSArIDEpIG1vZCAyID0gMC4gSGVuY2UsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBleGNsdXNpdmUtb3Igb3BlcmF0aW9uLjxcL3A+XHJcblxyXG48cD4oeDxzdXA+NjxcL3N1cD4gKyB4PHN1cD40PFwvc3VwPiArIHg8c3VwPjI8XC9zdXA+ICsgeCArIDEpICsgKHg8c3VwPjc8XC9zdXA+ICsgeCArIDEpID0geDxzdXA+NzxcL3N1cD4gKyB4PHN1cD42PFwvc3VwPiArIHg8c3VwPjQ8XC9zdXA+ICsgeDxzdXA+MjxcL3N1cD48XC9wPlxyXG5cclxuPHA+U3VidHJhY3Rpb24gb2YgdHdvIHBvbHlub21pYWxzIGlzIGRvbmUgc2ltaWxhcmx5LiBTaW5jZSBzdWJ0cmFjdGlvbiBvZiBjb2VmZmljaWVudHMgaXMgcGVyZm9ybWVkIGJ5IHN1YnRyYWN0aW9uIG1vZHVsbyAyIHdoaWNoIGlzIGFsc28gdGhlIGV4Y2x1c2l2ZS1vciBvcGVyYXRpb24sIHN1YnRyYWN0aW9uIG9mIHBvbHlub21pYWxzIGlzIGlkZW50aWNhbCB0byBhZGRpdGlvbiBvZiBwb2x5bm9taWFscy48XC9wPlxyXG5cclxuPHA+KHg8c3VwPjY8XC9zdXA+ICsgeDxzdXA+NDxcL3N1cD4gKyB4PHN1cD4yPFwvc3VwPiArIHggKyAxKSAtICh4PHN1cD43PFwvc3VwPiArIHggKyAxKSA9IHg8c3VwPjc8XC9zdXA+ICsgeDxzdXA+NjxcL3N1cD4gKyB4PHN1cD40PFwvc3VwPiArIHg8c3VwPjI8XC9zdXA+PFwvcD5cclxuXHJcbjxwPk11bHRpcGxpY2F0aW9uIG9mIHR3byBwb2x5bm9taWFscyBpcyBkb25lIGluIHRoZSB1c3VhbCB3YXkgKG9mIGNvdXJzZSwgYWRkaXRpb24gb2YgY29lZmZpY2llbnRzIGlzIHBlcmZvcm1lZCBieSBhZGRpdGlvbiBtb2R1bG8gMikuPFwvcD5cclxuXHJcbjxwPih4PHN1cD42PFwvc3VwPiArIHg8c3VwPjQ8XC9zdXA+ICsgeDxzdXA+MjxcL3N1cD4gKyB4ICsgMSkgKHg8c3VwPjc8XC9zdXA+KyB4ICsgMSkgPSB4PHN1cD4xMzxcL3N1cD4gKyB4PHN1cD4xMTxcL3N1cD4gKyB4PHN1cD45PFwvc3VwPiArIHg8c3VwPjg8XC9zdXA+ICsgeDxzdXA+NjxcL3N1cD4gKyB4PHN1cD41PFwvc3VwPiArIHg8c3VwPjQ8XC9zdXA+ICsgeDxzdXA+MzxcL3N1cD4gKyAxPFwvcD5cclxuXHJcbjxwPk11bHRpcGxpY2F0aW9uIG9mIHR3byBwb2x5bm9taWFscyBmKHgpIGFuZCBnKHgpIG1vZHVsbyBhIHBvbHlub21pYWwgaCh4KSBpcyB0aGUgcmVtYWluZGVyIG9mIGYoeClnKHgpIGRpdmlkZWQgYnkgaCh4KS48XC9wPlxyXG5cclxuPHA+KHg8c3VwPjY8XC9zdXA+ICsgeDxzdXA+NDxcL3N1cD4gKyB4PHN1cD4yPFwvc3VwPiArIHggKyAxKSAoeDxzdXA+NzxcL3N1cD4gKyB4ICsgMSkgbW9kdWxvICh4PHN1cD44PFwvc3VwPiArIHg8c3VwPjQ8XC9zdXA+ICsgeDxzdXA+MzxcL3N1cD4gKyB4ICsgMSkgPSB4PHN1cD43PFwvc3VwPiArIHg8c3VwPjY8XC9zdXA+ICsgMTxcL3A+XHJcblxyXG48cD5UaGUgbGFyZ2VzdCBleHBvbmVudCBvZiBhIHBvbHlub21pYWwgaXMgY2FsbGVkIGl0cyBkZWdyZWUuIEZvciBleGFtcGxlLCB0aGUgZGVncmVlIG9mIHg8c3VwPjc8XC9zdXA+ICsgeDxzdXA+NjxcL3N1cD4gKyAxIGlzIDcuPFwvcD5cclxuXHJcbjxwPkdpdmVuIHRocmVlIHBvbHlub21pYWxzIGYoeCksIGcoeCksIGFuZCBoKHgpLCB5b3UgYXJlIHRvIHdyaXRlIGEgcHJvZ3JhbSB0aGF0IGNvbXB1dGVzIGYoeClnKHgpIG1vZHVsbyBoKHgpLiBXZSBhc3N1bWUgdGhhdCB0aGUgZGVncmVlcyBvZiBib3RoIGYoeCkgYW5kIGcoeCkgYXJlIGxlc3MgdGhhbiB0aGUgZGVncmVlIG9mIGgoeCkuIFRoZSBkZWdyZWUgb2YgYSBwb2x5bm9taWFsIGlzIGxlc3MgdGhhbiAxMDAwLjxcL3A+XHJcblxyXG48cD5TaW5jZSBjb2VmZmljaWVudHMgb2YgYSBwb2x5bm9taWFsIGFyZSAwIG9yIDEsIGEgcG9seW5vbWlhbCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgZCsxIGFuZCBhIGJpdCBzdHJpbmcgb2YgbGVuZ3RoIGQrMSwgd2hlcmUgZCBpcyB0aGUgZGVncmVlIG9mIHRoZSBwb2x5bm9taWFsIGFuZCB0aGUgYml0IHN0cmluZyByZXByZXNlbnRzIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwuIEZvciBleGFtcGxlLCB4PHN1cD43PFwvc3VwPiArIHg8c3VwPjY8XC9zdXA+ICsgMSBjYW4gYmUgcmVwcmVzZW50ZWQgYnk8XC9wPlxyXG5cclxuPHA+OCAxIDEgMCAwIDAgMCAwIDEuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgaW5wdXQgY29uc2lzdHMgb2YgVCB0ZXN0IGNhc2VzLiBUaGUgbnVtYmVyIG9mIHRlc3QgY2FzZXMgKFQpIGlzIGdpdmVuIGluIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBpbnB1dCBmaWxlLiBFYWNoIHRlc3QgY2FzZSBjb25zaXN0cyBvZiB0aHJlZSBsaW5lcyB0aGF0IGNvbnRhaW4gdGhyZWUgcG9seW5vbWlhbHMgZih4KSwgZyh4KSwgYW5kIGgoeCksIG9uZSBwZXIgbGluZS4gRWFjaCBwb2x5bm9taWFsIGlzIHJlcHJlc2VudGVkIGFzIGRlc2NyaWJlZCBhYm92ZS48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5UaGUgb3V0cHV0IHNob3VsZCBjb250YWluIHRoZSBwb2x5bm9taWFsIGYoeClnKHgpIG1vZHVsbyBoKHgpLCBvbmUgcGVyIGxpbmUuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d