{"version":3,"file":"jp2Loader-Bn-qPMbD-Bn-qPMbD.mjs","sources":["../../../file-preview-core/lib/jp2Loader-Bn-qPMbD.js"],"sourcesContent":["const o = \"ZnVuY3Rpb24gRXQoTzIsIHUwKSB7CiAgcmV0dXJuIHUwLmZvckVhY2goZnVuY3Rpb24oZjApIHsKICAgIGYwICYmIHR5cGVvZiBmMCAhPSAic3RyaW5nIiAmJiAhQXJyYXkuaXNBcnJheShmMCkgJiYgT2JqZWN0LmtleXMoZjApLmZvckVhY2goZnVuY3Rpb24obDApIHsKICAgICAgaWYgKGwwICE9PSAiZGVmYXVsdCIgJiYgIShsMCBpbiBPMikpIHsKICAgICAgICB2YXIgQjAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYwLCBsMCk7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8yLCBsMCwgQjAuZ2V0ID8gQjAgOiB7CiAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBmMFtsMF07CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0pOwogIH0pLCBPYmplY3QuZnJlZXplKE8yKTsKfQpmdW5jdGlvbiBMZihPMikgewogIHJldHVybiBPMiAmJiBPMi5fX2VzTW9kdWxlICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChPMiwgImRlZmF1bHQiKSA/IE8yLmRlZmF1bHQgOiBPMjsKfQpmdW5jdGlvbiBEdChPMikgewogIGlmIChPMi5fX2VzTW9kdWxlKSByZXR1cm4gTzI7CiAgdmFyIHUwID0gTzIuZGVmYXVsdDsKICBpZiAodHlwZW9mIHUwID09ICJmdW5jdGlvbiIpIHsKICAgIHZhciBmMCA9IGZ1bmN0aW9uIGwwKCkgewogICAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGwwID8gUmVmbGVjdC5jb25zdHJ1Y3QodTAsIGFyZ3VtZW50cywgdGhpcy5jb25zdHJ1Y3RvcikgOiB1MC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgfTsKICAgIGYwLnByb3RvdHlwZSA9IHUwLnByb3RvdHlwZTsKICB9IGVsc2UgZjAgPSB7fTsKICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYwLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6ICEwIH0pLCBPYmplY3Qua2V5cyhPMikuZm9yRWFjaChmdW5jdGlvbihsMCkgewogICAgdmFyIEIwID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPMiwgbDApOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGYwLCBsMCwgQjAuZ2V0ID8gQjAgOiB7CiAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBPMltsMF07CiAgICAgIH0KICAgIH0pOwogIH0pLCBmMDsKfQp2YXIgRXIgPSB7fTsKRXIuaW5mbyA9ICguLi5PMikgPT4gewp9OwpFci53YXJuID0gKC4uLk8yKSA9PiB7Cn07CnZhciBxZSA9IHt9OwpxZS5sb2cyID0gKE8yKSA9PiBPMiA8PSAwID8gMCA6IE1hdGguY2VpbChNYXRoLmxvZzIoTzIpKTsKcWUucmVhZEludDggPSAoTzIsIHUwKSA9PiBPMi5yZWFkSW50OCh1MCk7CnFlLnJlYWRVaW50MTYgPSAoTzIsIHUwKSA9PiBPMi5yZWFkVUludDE2QkUodTApOwpxZS5yZWFkVWludDMyID0gKE8yLCB1MCkgPT4gTzIucmVhZFVJbnQzMkJFKHUwKTsKdmFyIE9mID0ge307CmNvbnN0IFV0ID0gWwogIHsgcWU6IDIyMDE3LCBubXBzOiAxLCBubHBzOiAxLCBzd2l0Y2hGbGFnOiAxIH0sCiAgeyBxZTogMTMzMTMsIG5tcHM6IDIsIG5scHM6IDYsIHN3aXRjaEZsYWc6IDAgfSwKICB7IHFlOiA2MTQ1LCBubXBzOiAzLCBubHBzOiA5LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMjc1Mywgbm1wczogNCwgbmxwczogMTIsIHN3aXRjaEZsYWc6IDAgfSwKICB7IHFlOiAxMzEzLCBubXBzOiA1LCBubHBzOiAyOSwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDU0NSwgbm1wczogMzgsIG5scHM6IDMzLCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMjIwMTcsIG5tcHM6IDcsIG5scHM6IDYsIHN3aXRjaEZsYWc6IDEgfSwKICB7IHFlOiAyMTUwNSwgbm1wczogOCwgbmxwczogMTQsIHN3aXRjaEZsYWc6IDAgfSwKICB7IHFlOiAxODQzMywgbm1wczogOSwgbmxwczogMTQsIHN3aXRjaEZsYWc6IDAgfSwKICB7IHFlOiAxNDMzNywgbm1wczogMTAsIG5scHM6IDE0LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMTIyODksIG5tcHM6IDExLCBubHBzOiAxNywgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDkyMTcsIG5tcHM6IDEyLCBubHBzOiAxOCwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDcxNjksIG5tcHM6IDEzLCBubHBzOiAyMCwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDU2MzMsIG5tcHM6IDI5LCBubHBzOiAyMSwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDIyMDE3LCBubXBzOiAxNSwgbmxwczogMTQsIHN3aXRjaEZsYWc6IDEgfSwKICB7IHFlOiAyMTUwNSwgbm1wczogMTYsIG5scHM6IDE0LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMjA3MzcsIG5tcHM6IDE3LCBubHBzOiAxNSwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDE4NDMzLCBubXBzOiAxOCwgbmxwczogMTYsIHN3aXRjaEZsYWc6IDAgfSwKICB7IHFlOiAxNDMzNywgbm1wczogMTksIG5scHM6IDE3LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMTMzMTMsIG5tcHM6IDIwLCBubHBzOiAxOCwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDEyMjg5LCBubXBzOiAyMSwgbmxwczogMTksIHN3aXRjaEZsYWc6IDAgfSwKICB7IHFlOiAxMDI0MSwgbm1wczogMjIsIG5scHM6IDE5LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogOTIxNywgbm1wczogMjMsIG5scHM6IDIwLCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogODcwNSwgbm1wczogMjQsIG5scHM6IDIxLCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogNzE2OSwgbm1wczogMjUsIG5scHM6IDIyLCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogNjE0NSwgbm1wczogMjYsIG5scHM6IDIzLCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogNTYzMywgbm1wczogMjcsIG5scHM6IDI0LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogNTEyMSwgbm1wczogMjgsIG5scHM6IDI1LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogNDYwOSwgbm1wczogMjksIG5scHM6IDI2LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogNDM1Mywgbm1wczogMzAsIG5scHM6IDI3LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMjc1Mywgbm1wczogMzEsIG5scHM6IDI4LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMjQ5Nywgbm1wczogMzIsIG5scHM6IDI5LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMjIwOSwgbm1wczogMzMsIG5scHM6IDMwLCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMTMxMywgbm1wczogMzQsIG5scHM6IDMxLCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMTA4OSwgbm1wczogMzUsIG5scHM6IDMyLCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogNjczLCBubXBzOiAzNiwgbmxwczogMzMsIHN3aXRjaEZsYWc6IDAgfSwKICB7IHFlOiA1NDUsIG5tcHM6IDM3LCBubHBzOiAzNCwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDMyMSwgbm1wczogMzgsIG5scHM6IDM1LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMjczLCBubXBzOiAzOSwgbmxwczogMzYsIHN3aXRjaEZsYWc6IDAgfSwKICB7IHFlOiAxMzMsIG5tcHM6IDQwLCBubHBzOiAzNywgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDczLCBubXBzOiA0MSwgbmxwczogMzgsIHN3aXRjaEZsYWc6IDAgfSwKICB7IHFlOiAzNywgbm1wczogNDIsIG5scHM6IDM5LCBzd2l0Y2hGbGFnOiAwIH0sCiAgeyBxZTogMjEsIG5tcHM6IDQzLCBubHBzOiA0MCwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDksIG5tcHM6IDQ0LCBubHBzOiA0MSwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDUsIG5tcHM6IDQ1LCBubHBzOiA0Miwgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDEsIG5tcHM6IDQ1LCBubHBzOiA0Mywgc3dpdGNoRmxhZzogMCB9LAogIHsgcWU6IDIyMDE3LCBubXBzOiA0NiwgbmxwczogNDYsIHN3aXRjaEZsYWc6IDAgfQpdOwpsZXQgTXQgPSBjbGFzcyB7CiAgLy8gQy4zLjUgSW5pdGlhbGlzYXRpb24gb2YgdGhlIGRlY29kZXIgKElOSVRERUMpCiAgY29uc3RydWN0b3IodTAsIGYwLCBsMCkgewogICAgdGhpcy5kYXRhID0gdTAsIHRoaXMuYnAgPSBmMCwgdGhpcy5kYXRhRW5kID0gbDAsIHRoaXMuY2hpZ2ggPSB1MFtmMF0sIHRoaXMuY2xvdyA9IDAsIHRoaXMuYnl0ZUluKCksIHRoaXMuY2hpZ2ggPSB0aGlzLmNoaWdoIDw8IDcgJiA2NTUzNSB8IHRoaXMuY2xvdyA+PiA5ICYgMTI3LCB0aGlzLmNsb3cgPSB0aGlzLmNsb3cgPDwgNyAmIDY1NTM1LCB0aGlzLmN0IC09IDcsIHRoaXMuYSA9IDMyNzY4OwogIH0KICAvLyBDLjMuNCBDb21wcmVzc2VkIGRhdGEgaW5wdXQgKEJZVEVJTikKICBieXRlSW4oKSB7CiAgICBjb25zdCB1MCA9IHRoaXMuZGF0YTsKICAgIGxldCBmMCA9IHRoaXMuYnA7CiAgICB1MFtmMF0gPT09IDI1NSA/IHUwW2YwICsgMV0gPiAxNDMgPyAodGhpcy5jbG93ICs9IDY1MjgwLCB0aGlzLmN0ID0gOCkgOiAoZjArKywgdGhpcy5jbG93ICs9IHUwW2YwXSA8PCA5LCB0aGlzLmN0ID0gNywgdGhpcy5icCA9IGYwKSA6IChmMCsrLCB0aGlzLmNsb3cgKz0gZjAgPCB0aGlzLmRhdGFFbmQgPyB1MFtmMF0gPDwgOCA6IDY1MjgwLCB0aGlzLmN0ID0gOCwgdGhpcy5icCA9IGYwKSwgdGhpcy5jbG93ID4gNjU1MzUgJiYgKHRoaXMuY2hpZ2ggKz0gdGhpcy5jbG93ID4+IDE2LCB0aGlzLmNsb3cgJj0gNjU1MzUpOwogIH0KICAvLyBDLjMuMiBEZWNvZGluZyBhIGRlY2lzaW9uIChERUNPREUpCiAgcmVhZEJpdCh1MCwgZjApIHsKICAgIGxldCBsMCA9IHUwW2YwXSA+PiAxLCBCMCA9IHUwW2YwXSAmIDE7CiAgICBjb25zdCBaMCA9IFV0W2wwXSwgczAgPSBaMC5xZTsKICAgIGxldCBDMiwgUTAgPSB0aGlzLmEgLSBzMDsKICAgIGlmICh0aGlzLmNoaWdoIDwgczApCiAgICAgIFEwIDwgczAgPyAoUTAgPSBzMCwgQzIgPSBCMCwgbDAgPSBaMC5ubXBzKSA6IChRMCA9IHMwLCBDMiA9IDEgXiBCMCwgWjAuc3dpdGNoRmxhZyA9PT0gMSAmJiAoQjAgPSBDMiksIGwwID0gWjAubmxwcyk7CiAgICBlbHNlIHsKICAgICAgaWYgKHRoaXMuY2hpZ2ggLT0gczAsIFEwICYgMzI3NjgpCiAgICAgICAgcmV0dXJuIHRoaXMuYSA9IFEwLCBCMDsKICAgICAgUTAgPCBzMCA/IChDMiA9IDEgXiBCMCwgWjAuc3dpdGNoRmxhZyA9PT0gMSAmJiAoQjAgPSBDMiksIGwwID0gWjAubmxwcykgOiAoQzIgPSBCMCwgbDAgPSBaMC5ubXBzKTsKICAgIH0KICAgIGRvCiAgICAgIHRoaXMuY3QgPT09IDAgJiYgdGhpcy5ieXRlSW4oKSwgUTAgPDw9IDEsIHRoaXMuY2hpZ2ggPSB0aGlzLmNoaWdoIDw8IDEgJiA2NTUzNSB8IHRoaXMuY2xvdyA+PiAxNSAmIDEsIHRoaXMuY2xvdyA9IHRoaXMuY2xvdyA8PCAxICYgNjU1MzUsIHRoaXMuY3QtLTsKICAgIHdoaWxlICghKFEwICYgMzI3NjgpKTsKICAgIHJldHVybiB0aGlzLmEgPSBRMCwgdTBbZjBdID0gbDAgPDwgMSB8IEIwLCBDMjsKICB9Cn07Ck9mLkFyaXRobWV0aWNEZWNvZGVyID0gTXQ7CmNvbnN0IHsgaW5mbzogU3QsIHdhcm46IEplIH0gPSBFciwgeyBsb2cyOiBKciwgcmVhZFVpbnQxNjogUTEsIHJlYWRVaW50MzI6IGMxIH0gPSBxZSwgeyBBcml0aG1ldGljRGVjb2RlcjogTnQgfSA9IE9mOwpjbGFzcyBFMSBleHRlbmRzIEVycm9yIHsKICBjb25zdHJ1Y3Rvcih1MCkgewogICAgc3VwZXIoYEpQWCBlcnJvcjogJHt1MH1gKTsKICB9Cn0KdmFyIFB0ID0gZnVuY3Rpb24oKSB7CiAgdmFyIHUwID0gewogICAgTEw6IDAsCiAgICBMSDogMSwKICAgIEhMOiAxLAogICAgSEg6IDIKICB9OwogIGZ1bmN0aW9uIGYwKCkgewogICAgdGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZSA9ICExOwogIH0KICBmMC5wcm90b3R5cGUgPSB7CiAgICBwYXJzZTogZnVuY3Rpb24oYikgewogICAgICB2YXIgSTIgPSBRMShiLCAwKTsKICAgICAgaWYgKEkyID09PSA2NTM1OSkgewogICAgICAgIHRoaXMucGFyc2VDb2Rlc3RyZWFtKGIsIDAsIGIubGVuZ3RoKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgZm9yICh2YXIgVCA9IDAsIEwgPSBiLmxlbmd0aDsgVCA8IEw7ICkgewogICAgICAgIHZhciBaMiA9IDgsIGkyID0gYzEoYiwgVCksICQgPSBjMShiLCBUICsgNCk7CiAgICAgICAgaWYgKFQgKz0gWjIsIGkyID09PSAxICYmIChpMiA9IGMxKGIsIFQpICogNDI5NDk2NzI5NiArIGMxKGIsIFQgKyA0KSwgVCArPSA4LCBaMiArPSA4KSwgaTIgPT09IDAgJiYgKGkyID0gTCAtIFQgKyBaMiksIGkyIDwgWjIpCiAgICAgICAgICB0aHJvdyBuZXcgRTEoIkludmFsaWQgYm94IGZpZWxkIHNpemUiKTsKICAgICAgICB2YXIgZTIgPSBpMiAtIFoyLCBfID0gITA7CiAgICAgICAgc3dpdGNoICgkKSB7CiAgICAgICAgICBjYXNlIDE3ODU3Mzc4MzI6CiAgICAgICAgICAgIF8gPSAhMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDE2NjgyNDY2NDI6CiAgICAgICAgICAgIHZhciB0MiA9IGJbVF07CiAgICAgICAgICAgIGlmICh0MiA9PT0gMSkgewogICAgICAgICAgICAgIHZhciBCMiA9IGMxKGIsIFQgKyAzKTsKICAgICAgICAgICAgICBzd2l0Y2ggKEIyKSB7CiAgICAgICAgICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgSmUoIlVua25vd24gY29sb3JzcGFjZSAiICsgQjIpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB0MiA9PT0gMiAmJiBTdCgiSUNDIHByb2ZpbGUgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMTc4NTczNzgyNzoKICAgICAgICAgICAgdGhpcy5wYXJzZUNvZGVzdHJlYW0oYiwgVCwgVCArIGUyKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDE3ODM2MzZlMzoKICAgICAgICAgICAgYzEoYiwgVCkgIT09IDIxODc5MzczOCAmJiBKZSgiSW52YWxpZCBKUDIgc2lnbmF0dXJlIik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAxNzgzNjM0NDU4OgogICAgICAgICAgY2FzZSAxNzE4OTA5Mjk2OgogICAgICAgICAgY2FzZSAxOTIwMDk5Njk3OgogICAgICAgICAgY2FzZSAxOTE5MjUxMjMyOgogICAgICAgICAgY2FzZSAxNzY4NDQ5MTM4OgogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHZhciBWMiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoCiAgICAgICAgICAgICAgJCA+PiAyNCAmIDI1NSwKICAgICAgICAgICAgICAkID4+IDE2ICYgMjU1LAogICAgICAgICAgICAgICQgPj4gOCAmIDI1NSwKICAgICAgICAgICAgICAkICYgMjU1CiAgICAgICAgICAgICk7CiAgICAgICAgICAgIEplKCJVbnN1cHBvcnRlZCBoZWFkZXIgdHlwZSAiICsgJCArICIgKCIgKyBWMiArICIpIik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBfICYmIChUICs9IGUyKTsKICAgICAgfQogICAgfSwKICAgIHBhcnNlSW1hZ2VQcm9wZXJ0aWVzOiBmdW5jdGlvbihiKSB7CiAgICAgIGZvciAodmFyIEkyID0gYi5nZXRCeXRlKCk7IEkyID49IDA7ICkgewogICAgICAgIHZhciBUID0gSTI7CiAgICAgICAgSTIgPSBiLmdldEJ5dGUoKTsKICAgICAgICB2YXIgTCA9IFQgPDwgOCB8IEkyOwogICAgICAgIGlmIChMID09PSA2NTM2MSkgewogICAgICAgICAgYi5za2lwKDQpOwogICAgICAgICAgdmFyIFoyID0gYi5nZXRJbnQzMigpID4+PiAwLCBpMiA9IGIuZ2V0SW50MzIoKSA+Pj4gMCwgJCA9IGIuZ2V0SW50MzIoKSA+Pj4gMCwgZTIgPSBiLmdldEludDMyKCkgPj4+IDA7CiAgICAgICAgICBiLnNraXAoMTYpOwogICAgICAgICAgdmFyIF8gPSBiLmdldFVpbnQxNigpOwogICAgICAgICAgdGhpcy53aWR0aCA9IFoyIC0gJCwgdGhpcy5oZWlnaHQgPSBpMiAtIGUyLCB0aGlzLmNvbXBvbmVudHNDb3VudCA9IF8sIHRoaXMuYml0c1BlckNvbXBvbmVudCA9IDg7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICB9CiAgICAgIHRocm93IG5ldyBFMSgiTm8gc2l6ZSBtYXJrZXIgZm91bmQgaW4gSlBYIHN0cmVhbSIpOwogICAgfSwKICAgIHBhcnNlQ29kZXN0cmVhbTogZnVuY3Rpb24oYiwgSTIsIFQpIHsKICAgICAgdmFyIEwgPSB7fSwgWjIgPSAhMTsKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKHZhciBpMiA9IEkyOyBpMiArIDEgPCBUOyApIHsKICAgICAgICAgIHZhciAkID0gUTEoYiwgaTIpOwogICAgICAgICAgaTIgKz0gMjsKICAgICAgICAgIHZhciBlMiA9IDAsIF8sIHQyLCBCMiwgVjIsIHkyLCBBMjsKICAgICAgICAgIHN3aXRjaCAoJCkgewogICAgICAgICAgICBjYXNlIDY1MzU5OgogICAgICAgICAgICAgIEwubWFpbkhlYWRlciA9ICEwOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDY1NDk3OgogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDY1MzYxOgogICAgICAgICAgICAgIGUyID0gUTEoYiwgaTIpOwogICAgICAgICAgICAgIHZhciBsMiA9IHt9OwogICAgICAgICAgICAgIGwyLlhzaXogPSBjMShiLCBpMiArIDQpLCBsMi5Zc2l6ID0gYzEoYiwgaTIgKyA4KSwgbDIuWE9zaXogPSBjMShiLCBpMiArIDEyKSwgbDIuWU9zaXogPSBjMShiLCBpMiArIDE2KSwgbDIuWFRzaXogPSBjMShiLCBpMiArIDIwKSwgbDIuWVRzaXogPSBjMShiLCBpMiArIDI0KSwgbDIuWFRPc2l6ID0gYzEoYiwgaTIgKyAyOCksIGwyLllUT3NpeiA9IGMxKGIsIGkyICsgMzIpOwogICAgICAgICAgICAgIHZhciBhMiA9IFExKGIsIGkyICsgMzYpOwogICAgICAgICAgICAgIGwyLkNzaXogPSBhMjsKICAgICAgICAgICAgICB2YXIgSjIgPSBbXTsKICAgICAgICAgICAgICBfID0gaTIgKyAzODsKICAgICAgICAgICAgICBmb3IgKHZhciBqMiA9IDA7IGoyIDwgYTI7IGoyKyspIHsKICAgICAgICAgICAgICAgIHZhciBLMiA9IHsKICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAoYltfXSAmIDEyNykgKyAxLAogICAgICAgICAgICAgICAgICBpc1NpZ25lZDogISEoYltfXSAmIDEyOCksCiAgICAgICAgICAgICAgICAgIFhSc2l6OiBiW18gKyAxXSwKICAgICAgICAgICAgICAgICAgWVJzaXo6IGJbXyArIDJdCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgXyArPSAzLCBsMChLMiwgbDIpLCBKMi5wdXNoKEsyKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgTC5TSVogPSBsMiwgTC5jb21wb25lbnRzID0gSjIsIEIwKEwsIEoyKSwgTC5RQ0MgPSBbXSwgTC5DT0MgPSBbXTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA2NTM3MjoKICAgICAgICAgICAgICBlMiA9IFExKGIsIGkyKTsKICAgICAgICAgICAgICB2YXIgYjIgPSB7fTsKICAgICAgICAgICAgICBzd2l0Y2ggKF8gPSBpMiArIDIsIHQyID0gYltfKytdLCB0MiAmIDMxKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgIFYyID0gOCwgeTIgPSAhMDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgIFYyID0gMTYsIHkyID0gITE7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICBWMiA9IDE2LCB5MiA9ICEwOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIgKyB0Mik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGZvciAoYjIubm9RdWFudGl6YXRpb24gPSBWMiA9PT0gOCwgYjIuc2NhbGFyRXhwb3VuZGVkID0geTIsIGIyLmd1YXJkQml0cyA9IHQyID4+IDUsIEIyID0gW107IF8gPCBlMiArIGkyOyApIHsKICAgICAgICAgICAgICAgIHZhciBUMiA9IHt9OwogICAgICAgICAgICAgICAgVjIgPT09IDggPyAoVDIuZXBzaWxvbiA9IGJbXysrXSA+PiAzLCBUMi5tdSA9IDApIDogKFQyLmVwc2lsb24gPSBiW19dID4+IDMsIFQyLm11ID0gKGJbX10gJiA3KSA8PCA4IHwgYltfICsgMV0sIF8gKz0gMiksIEIyLnB1c2goVDIpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBiMi5TUHFjZHMgPSBCMiwgTC5tYWluSGVhZGVyID8gTC5RQ0QgPSBiMiA6IChMLmN1cnJlbnRUaWxlLlFDRCA9IGIyLCBMLmN1cnJlbnRUaWxlLlFDQyA9IFtdKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA2NTM3MzoKICAgICAgICAgICAgICBlMiA9IFExKGIsIGkyKTsKICAgICAgICAgICAgICB2YXIgdzAgPSB7fTsKICAgICAgICAgICAgICBfID0gaTIgKyAyOwogICAgICAgICAgICAgIHZhciAkMjsKICAgICAgICAgICAgICBzd2l0Y2ggKEwuU0laLkNzaXogPCAyNTcgPyAkMiA9IGJbXysrXSA6ICgkMiA9IFExKGIsIF8pLCBfICs9IDIpLCB0MiA9IGJbXysrXSwgdDIgJiAzMSkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICBWMiA9IDgsIHkyID0gITA7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICBWMiA9IDE2LCB5MiA9ICExOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgVjIgPSAxNiwgeTIgPSAhMDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgU1FjZCB2YWx1ZSAiICsgdDIpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmb3IgKHcwLm5vUXVhbnRpemF0aW9uID0gVjIgPT09IDgsIHcwLnNjYWxhckV4cG91bmRlZCA9IHkyLCB3MC5ndWFyZEJpdHMgPSB0MiA+PiA1LCBCMiA9IFtdOyBfIDwgZTIgKyBpMjsgKQogICAgICAgICAgICAgICAgVDIgPSB7fSwgVjIgPT09IDggPyAoVDIuZXBzaWxvbiA9IGJbXysrXSA+PiAzLCBUMi5tdSA9IDApIDogKFQyLmVwc2lsb24gPSBiW19dID4+IDMsIFQyLm11ID0gKGJbX10gJiA3KSA8PCA4IHwgYltfICsgMV0sIF8gKz0gMiksIEIyLnB1c2goVDIpOwogICAgICAgICAgICAgIHcwLlNQcWNkcyA9IEIyLCBMLm1haW5IZWFkZXIgPyBMLlFDQ1skMl0gPSB3MCA6IEwuY3VycmVudFRpbGUuUUNDWyQyXSA9IHcwOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDY1MzYyOgogICAgICAgICAgICAgIGUyID0gUTEoYiwgaTIpOwogICAgICAgICAgICAgIHZhciBIMiA9IHt9OwogICAgICAgICAgICAgIF8gPSBpMiArIDI7CiAgICAgICAgICAgICAgdmFyIEYwID0gYltfKytdOwogICAgICAgICAgICAgIEgyLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMgPSAhIShGMCAmIDEpLCBIMi5zb3BNYXJrZXJVc2VkID0gISEoRjAgJiAyKSwgSDIuZXBoTWFya2VyVXNlZCA9ICEhKEYwICYgNCksIEgyLnByb2dyZXNzaW9uT3JkZXIgPSBiW18rK10sIEgyLmxheWVyc0NvdW50ID0gUTEoYiwgXyksIF8gKz0gMiwgSDIubXVsdGlwbGVDb21wb25lbnRUcmFuc2Zvcm0gPSBiW18rK10sIEgyLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCA9IGJbXysrXSwgSDIueGNiID0gKGJbXysrXSAmIDE1KSArIDIsIEgyLnljYiA9IChiW18rK10gJiAxNSkgKyAyOwogICAgICAgICAgICAgIHZhciBtMCA9IGJbXysrXTsKICAgICAgICAgICAgICBpZiAoSDIuc2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcyA9ICEhKG0wICYgMSksIEgyLnJlc2V0Q29udGV4dFByb2JhYmlsaXRpZXMgPSAhIShtMCAmIDIpLCBIMi50ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3MgPSAhIShtMCAmIDQpLCBIMi52ZXJ0aWNhbGx5U3RyaXBlID0gISEobTAgJiA4KSwgSDIucHJlZGljdGFibGVUZXJtaW5hdGlvbiA9ICEhKG0wICYgMTYpLCBIMi5zZWdtZW50YXRpb25TeW1ib2xVc2VkID0gISEobTAgJiAzMiksIEgyLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbiA9IGJbXysrXSwgSDIuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cykgewogICAgICAgICAgICAgICAgZm9yICh2YXIgUzAgPSBbXTsgXyA8IGUyICsgaTI7ICkgewogICAgICAgICAgICAgICAgICB2YXIgdjAgPSBiW18rK107CiAgICAgICAgICAgICAgICAgIFMwLnB1c2goewogICAgICAgICAgICAgICAgICAgIFBQeDogdjAgJiAxNSwKICAgICAgICAgICAgICAgICAgICBQUHk6IHYwID4+IDQKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBIMi5wcmVjaW5jdHNTaXplcyA9IFMwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YXIgRDAgPSBbXTsKICAgICAgICAgICAgICBIMi5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzICYmIEQwLnB1c2goInNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MiKSwgSDIucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcyAmJiBEMC5wdXNoKCJyZXNldENvbnRleHRQcm9iYWJpbGl0aWVzIiksIEgyLnRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyAmJiBEMC5wdXNoKCJ0ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3MiKSwgSDIudmVydGljYWxseVN0cmlwZSAmJiBEMC5wdXNoKCJ2ZXJ0aWNhbGx5U3RyaXBlIiksIEgyLnByZWRpY3RhYmxlVGVybWluYXRpb24gJiYgRDAucHVzaCgicHJlZGljdGFibGVUZXJtaW5hdGlvbiIpLCBEMC5sZW5ndGggPiAwICYmIChaMiA9ICEwLCBKZSgKICAgICAgICAgICAgICAgIGBKUFg6IFVuc3VwcG9ydGVkIENPRCBvcHRpb25zICgke0QwLmpvaW4oIiwgIil9KS5gCiAgICAgICAgICAgICAgKSksIEwubWFpbkhlYWRlciA/IEwuQ09EID0gSDIgOiAoTC5jdXJyZW50VGlsZS5DT0QgPSBIMiwgTC5jdXJyZW50VGlsZS5DT0MgPSBbXSk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNjU0MjQ6CiAgICAgICAgICAgICAgZTIgPSBRMShiLCBpMiksIEEyID0ge30sIEEyLmluZGV4ID0gUTEoYiwgaTIgKyAyKSwgQTIubGVuZ3RoID0gYzEoYiwgaTIgKyA0KSwgQTIuZGF0YUVuZCA9IEEyLmxlbmd0aCArIGkyIC0gMiwgQTIucGFydEluZGV4ID0gYltpMiArIDhdLCBBMi5wYXJ0c0NvdW50ID0gYltpMiArIDldLCBMLm1haW5IZWFkZXIgPSAhMSwgQTIucGFydEluZGV4ID09PSAwICYmIChBMi5DT0QgPSBMLkNPRCwgQTIuQ09DID0gTC5DT0Muc2xpY2UoMCksIEEyLlFDRCA9IEwuUUNELCBBMi5RQ0MgPSBMLlFDQy5zbGljZSgwKSksIEwuY3VycmVudFRpbGUgPSBBMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA2NTQyNzoKICAgICAgICAgICAgICBBMiA9IEwuY3VycmVudFRpbGUsIEEyLnBhcnRJbmRleCA9PT0gMCAmJiAoTmkoTCwgQTIuaW5kZXgpLCBBMShMKSksIGUyID0gQTIuZGF0YUVuZCAtIGkyLCBTaShMLCBiLCBpMiwgZTIpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDY1MzYzOgogICAgICAgICAgICAgIEplKCJKUFg6IENvZGVzdHJlYW0gY29kZSAweEZGNTMgKENPQykgaXMgbm90IGltcGxlbWVudGVkLiIpOwogICAgICAgICAgICBjYXNlIDY1MzY1OgogICAgICAgICAgICBjYXNlIDY1MzY3OgogICAgICAgICAgICBjYXNlIDY1MzY4OgogICAgICAgICAgICBjYXNlIDY1MzgwOgogICAgICAgICAgICAgIGUyID0gUTEoYiwgaTIpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5rbm93biBjb2Rlc3RyZWFtIGNvZGU6ICIgKyAkLnRvU3RyaW5nKDE2KSk7CiAgICAgICAgICB9CiAgICAgICAgICBpMiArPSBlMjsKICAgICAgICB9CiAgICAgIH0gY2F0Y2ggKCQwKSB7CiAgICAgICAgaWYgKFoyIHx8IHRoaXMuZmFpbE9uQ29ycnVwdGVkSW1hZ2UpCiAgICAgICAgICB0aHJvdyBuZXcgRTEoJDAubWVzc2FnZSk7CiAgICAgICAgSmUoYEpQWDogVHJ5aW5nIHRvIHJlY292ZXIgZnJvbTogIiR7JDAubWVzc2FnZX0iLmApOwogICAgICB9CiAgICAgIHRoaXMudGlsZXMgPSBlaShMKSwgdGhpcy53aWR0aCA9IEwuU0laLlhzaXogLSBMLlNJWi5YT3NpeiwgdGhpcy5oZWlnaHQgPSBMLlNJWi5Zc2l6IC0gTC5TSVouWU9zaXosIHRoaXMuY29tcG9uZW50c0NvdW50ID0gTC5TSVouQ3NpejsKICAgIH0KICB9OwogIGZ1bmN0aW9uIGwwKHYyLCBiKSB7CiAgICB2Mi54MCA9IE1hdGguY2VpbChiLlhPc2l6IC8gdjIuWFJzaXopLCB2Mi54MSA9IE1hdGguY2VpbChiLlhzaXogLyB2Mi5YUnNpeiksIHYyLnkwID0gTWF0aC5jZWlsKGIuWU9zaXogLyB2Mi5ZUnNpeiksIHYyLnkxID0gTWF0aC5jZWlsKGIuWXNpeiAvIHYyLllSc2l6KSwgdjIud2lkdGggPSB2Mi54MSAtIHYyLngwLCB2Mi5oZWlnaHQgPSB2Mi55MSAtIHYyLnkwOwogIH0KICBmdW5jdGlvbiBCMCh2MiwgYikgewogICAgZm9yICh2YXIgSTIgPSB2Mi5TSVosIFQsIEwgPSBbXSwgWjIgPSBNYXRoLmNlaWwoKEkyLlhzaXogLSBJMi5YVE9zaXopIC8gSTIuWFRzaXopLCBpMiA9IE1hdGguY2VpbCgoSTIuWXNpeiAtIEkyLllUT3NpeikgLyBJMi5ZVHNpeiksICQgPSAwOyAkIDwgaTI7ICQrKykKICAgICAgZm9yICh2YXIgZTIgPSAwOyBlMiA8IFoyOyBlMisrKQogICAgICAgIFQgPSB7fSwgVC50eDAgPSBNYXRoLm1heChJMi5YVE9zaXogKyBlMiAqIEkyLlhUc2l6LCBJMi5YT3NpeiksIFQudHkwID0gTWF0aC5tYXgoSTIuWVRPc2l6ICsgJCAqIEkyLllUc2l6LCBJMi5ZT3NpeiksIFQudHgxID0gTWF0aC5taW4oSTIuWFRPc2l6ICsgKGUyICsgMSkgKiBJMi5YVHNpeiwgSTIuWHNpeiksIFQudHkxID0gTWF0aC5taW4oSTIuWVRPc2l6ICsgKCQgKyAxKSAqIEkyLllUc2l6LCBJMi5Zc2l6KSwgVC53aWR0aCA9IFQudHgxIC0gVC50eDAsIFQuaGVpZ2h0ID0gVC50eTEgLSBULnR5MCwgVC5jb21wb25lbnRzID0gW10sIEwucHVzaChUKTsKICAgIHYyLnRpbGVzID0gTDsKICAgIGZvciAodmFyIF8gPSBJMi5Dc2l6LCB0MiA9IDAsIEIyID0gXzsgdDIgPCBCMjsgdDIrKykKICAgICAgZm9yICh2YXIgVjIgPSBiW3QyXSwgeTIgPSAwLCBBMiA9IEwubGVuZ3RoOyB5MiA8IEEyOyB5MisrKSB7CiAgICAgICAgdmFyIGwyID0ge307CiAgICAgICAgVCA9IExbeTJdLCBsMi50Y3gwID0gTWF0aC5jZWlsKFQudHgwIC8gVjIuWFJzaXopLCBsMi50Y3kwID0gTWF0aC5jZWlsKFQudHkwIC8gVjIuWVJzaXopLCBsMi50Y3gxID0gTWF0aC5jZWlsKFQudHgxIC8gVjIuWFJzaXopLCBsMi50Y3kxID0gTWF0aC5jZWlsKFQudHkxIC8gVjIuWVJzaXopLCBsMi53aWR0aCA9IGwyLnRjeDEgLSBsMi50Y3gwLCBsMi5oZWlnaHQgPSBsMi50Y3kxIC0gbDIudGN5MCwgVC5jb21wb25lbnRzW3QyXSA9IGwyOwogICAgICB9CiAgfQogIGZ1bmN0aW9uIFowKHYyLCBiLCBJMikgewogICAgdmFyIFQgPSBiLmNvZGluZ1N0eWxlUGFyYW1ldGVycywgTCA9IHt9OwogICAgcmV0dXJuIFQuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cyA/IChMLlBQeCA9IFQucHJlY2luY3RzU2l6ZXNbSTJdLlBQeCwgTC5QUHkgPSBULnByZWNpbmN0c1NpemVzW0kyXS5QUHkpIDogKEwuUFB4ID0gMTUsIEwuUFB5ID0gMTUpLCBMLnhjYl8gPSBJMiA+IDAgPyBNYXRoLm1pbihULnhjYiwgTC5QUHggLSAxKSA6IE1hdGgubWluKFQueGNiLCBMLlBQeCksIEwueWNiXyA9IEkyID4gMCA/IE1hdGgubWluKFQueWNiLCBMLlBQeSAtIDEpIDogTWF0aC5taW4oVC55Y2IsIEwuUFB5KSwgTDsKICB9CiAgZnVuY3Rpb24gczAodjIsIGIsIEkyKSB7CiAgICB2YXIgVCA9IDEgPDwgSTIuUFB4LCBMID0gMSA8PCBJMi5QUHksIFoyID0gYi5yZXNMZXZlbCA9PT0gMCwgaTIgPSAxIDw8IEkyLlBQeCArIChaMiA/IDAgOiAtMSksICQgPSAxIDw8IEkyLlBQeSArIChaMiA/IDAgOiAtMSksIGUyID0gYi50cngxID4gYi50cngwID8gTWF0aC5jZWlsKGIudHJ4MSAvIFQpIC0gTWF0aC5mbG9vcihiLnRyeDAgLyBUKSA6IDAsIF8gPSBiLnRyeTEgPiBiLnRyeTAgPyBNYXRoLmNlaWwoYi50cnkxIC8gTCkgLSBNYXRoLmZsb29yKGIudHJ5MCAvIEwpIDogMCwgdDIgPSBlMiAqIF87CiAgICBiLnByZWNpbmN0UGFyYW1ldGVycyA9IHsKICAgICAgcHJlY2luY3RXaWR0aDogVCwKICAgICAgcHJlY2luY3RIZWlnaHQ6IEwsCiAgICAgIG51bXByZWNpbmN0c3dpZGU6IGUyLAogICAgICBudW1wcmVjaW5jdHNoaWdoOiBfLAogICAgICBudW1wcmVjaW5jdHM6IHQyLAogICAgICBwcmVjaW5jdFdpZHRoSW5TdWJiYW5kOiBpMiwKICAgICAgcHJlY2luY3RIZWlnaHRJblN1YmJhbmQ6ICQKICAgIH07CiAgfQogIGZ1bmN0aW9uIEMyKHYyLCBiLCBJMikgewogICAgdmFyIFQgPSBJMi54Y2JfLCBMID0gSTIueWNiXywgWjIgPSAxIDw8IFQsIGkyID0gMSA8PCBMLCAkID0gYi50YngwID4+IFQsIGUyID0gYi50YnkwID4+IEwsIF8gPSBiLnRieDEgKyBaMiAtIDEgPj4gVCwgdDIgPSBiLnRieTEgKyBpMiAtIDEgPj4gTCwgQjIgPSBiLnJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLCBWMiA9IFtdLCB5MiA9IFtdLCBBMiwgbDIsIGEyLCBKMjsKICAgIGZvciAobDIgPSBlMjsgbDIgPCB0MjsgbDIrKykKICAgICAgZm9yIChBMiA9ICQ7IEEyIDwgXzsgQTIrKykgewogICAgICAgIGEyID0gewogICAgICAgICAgY2J4OiBBMiwKICAgICAgICAgIGNieTogbDIsCiAgICAgICAgICB0YngwOiBaMiAqIEEyLAogICAgICAgICAgdGJ5MDogaTIgKiBsMiwKICAgICAgICAgIHRieDE6IFoyICogKEEyICsgMSksCiAgICAgICAgICB0YnkxOiBpMiAqIChsMiArIDEpCiAgICAgICAgfSwgYTIudGJ4MF8gPSBNYXRoLm1heChiLnRieDAsIGEyLnRieDApLCBhMi50YnkwXyA9IE1hdGgubWF4KGIudGJ5MCwgYTIudGJ5MCksIGEyLnRieDFfID0gTWF0aC5taW4oYi50YngxLCBhMi50YngxKSwgYTIudGJ5MV8gPSBNYXRoLm1pbihiLnRieTEsIGEyLnRieTEpOwogICAgICAgIHZhciBqMiA9IE1hdGguZmxvb3IoCiAgICAgICAgICAoYTIudGJ4MF8gLSBiLnRieDApIC8gQjIucHJlY2luY3RXaWR0aEluU3ViYmFuZAogICAgICAgICksIEsyID0gTWF0aC5mbG9vcigKICAgICAgICAgIChhMi50YnkwXyAtIGIudGJ5MCkgLyBCMi5wcmVjaW5jdEhlaWdodEluU3ViYmFuZAogICAgICAgICk7CiAgICAgICAgaWYgKEoyID0gajIgKyBLMiAqIEIyLm51bXByZWNpbmN0c3dpZGUsIGEyLnByZWNpbmN0TnVtYmVyID0gSjIsIGEyLnN1YmJhbmRUeXBlID0gYi50eXBlLCBhMi5MYmxvY2sgPSAzLCAhKGEyLnRieDFfIDw9IGEyLnRieDBfIHx8IGEyLnRieTFfIDw9IGEyLnRieTBfKSkgewogICAgICAgICAgVjIucHVzaChhMik7CiAgICAgICAgICB2YXIgYjIgPSB5MltKMl07CiAgICAgICAgICBiMiAhPT0gdm9pZCAwID8gKEEyIDwgYjIuY2J4TWluID8gYjIuY2J4TWluID0gQTIgOiBBMiA+IGIyLmNieE1heCAmJiAoYjIuY2J4TWF4ID0gQTIpLCBsMiA8IGIyLmNieU1pbiA/IGIyLmNieE1pbiA9IGwyIDogbDIgPiBiMi5jYnlNYXggJiYgKGIyLmNieU1heCA9IGwyKSkgOiB5MltKMl0gPSBiMiA9IHsKICAgICAgICAgICAgY2J4TWluOiBBMiwKICAgICAgICAgICAgY2J5TWluOiBsMiwKICAgICAgICAgICAgY2J4TWF4OiBBMiwKICAgICAgICAgICAgY2J5TWF4OiBsMgogICAgICAgICAgfSwgYTIucHJlY2luY3QgPSBiMjsKICAgICAgICB9CiAgICAgIH0KICAgIGIuY29kZWJsb2NrUGFyYW1ldGVycyA9IHsKICAgICAgY29kZWJsb2NrV2lkdGg6IFQsCiAgICAgIGNvZGVibG9ja0hlaWdodDogTCwKICAgICAgbnVtY29kZWJsb2Nrd2lkZTogXyAtICQgKyAxLAogICAgICBudW1jb2RlYmxvY2toaWdoOiB0MiAtIGUyICsgMQogICAgfSwgYi5jb2RlYmxvY2tzID0gVjIsIGIucHJlY2luY3RzID0geTI7CiAgfQogIGZ1bmN0aW9uIFEwKHYyLCBiLCBJMikgewogICAgZm9yICh2YXIgVCA9IFtdLCBMID0gdjIuc3ViYmFuZHMsIFoyID0gMCwgaTIgPSBMLmxlbmd0aDsgWjIgPCBpMjsgWjIrKykKICAgICAgZm9yICh2YXIgJCA9IExbWjJdLCBlMiA9ICQuY29kZWJsb2NrcywgXyA9IDAsIHQyID0gZTIubGVuZ3RoOyBfIDwgdDI7IF8rKykgewogICAgICAgIHZhciBCMiA9IGUyW19dOwogICAgICAgIEIyLnByZWNpbmN0TnVtYmVyID09PSBiICYmIFQucHVzaChCMik7CiAgICAgIH0KICAgIHJldHVybiB7CiAgICAgIGxheWVyTnVtYmVyOiBJMiwKICAgICAgY29kZWJsb2NrczogVAogICAgfTsKICB9CiAgZnVuY3Rpb24gVjEodjIpIHsKICAgIGZvciAodmFyIGIgPSB2Mi5TSVosIEkyID0gdjIuY3VycmVudFRpbGUuaW5kZXgsIFQgPSB2Mi50aWxlc1tJMl0sIEwgPSBULmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsIFoyID0gYi5Dc2l6LCBpMiA9IDAsICQgPSAwOyAkIDwgWjI7ICQrKykKICAgICAgaTIgPSBNYXRoLm1heCgKICAgICAgICBpMiwKICAgICAgICBULmNvbXBvbmVudHNbJF0uY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudAogICAgICApOwogICAgdmFyIGUyID0gMCwgXyA9IDAsIHQyID0gMCwgQjIgPSAwOwogICAgdGhpcy5uZXh0UGFja2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgIGZvciAoOyBlMiA8IEw7IGUyKyspIHsKICAgICAgICBmb3IgKDsgXyA8PSBpMjsgXysrKSB7CiAgICAgICAgICBmb3IgKDsgdDIgPCBaMjsgdDIrKykgewogICAgICAgICAgICB2YXIgeTIgPSBULmNvbXBvbmVudHNbdDJdOwogICAgICAgICAgICBpZiAoIShfID4geTIuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCkpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBBMiA9IHkyLnJlc29sdXRpb25zW19dLCBsMiA9IEEyLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHM7IEIyIDwgbDI7ICkgewogICAgICAgICAgICAgICAgdmFyIGEyID0gUTAoQTIsIEIyLCBlMik7CiAgICAgICAgICAgICAgICByZXR1cm4gQjIrKywgYTI7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIEIyID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgdDIgPSAwOwogICAgICAgIH0KICAgICAgICBfID0gMDsKICAgICAgfQogICAgICB0aHJvdyBuZXcgRTEoIk91dCBvZiBwYWNrZXRzIik7CiAgICB9OwogIH0KICBmdW5jdGlvbiBpZSh2MikgewogICAgZm9yICh2YXIgYiA9IHYyLlNJWiwgSTIgPSB2Mi5jdXJyZW50VGlsZS5pbmRleCwgVCA9IHYyLnRpbGVzW0kyXSwgTCA9IFQuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCwgWjIgPSBiLkNzaXosIGkyID0gMCwgJCA9IDA7ICQgPCBaMjsgJCsrKQogICAgICBpMiA9IE1hdGgubWF4KAogICAgICAgIGkyLAogICAgICAgIFQuY29tcG9uZW50c1skXS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50CiAgICAgICk7CiAgICB2YXIgZTIgPSAwLCBfID0gMCwgdDIgPSAwLCBCMiA9IDA7CiAgICB0aGlzLm5leHRQYWNrZXQgPSBmdW5jdGlvbigpIHsKICAgICAgZm9yICg7IGUyIDw9IGkyOyBlMisrKSB7CiAgICAgICAgZm9yICg7IF8gPCBMOyBfKyspIHsKICAgICAgICAgIGZvciAoOyB0MiA8IFoyOyB0MisrKSB7CiAgICAgICAgICAgIHZhciB5MiA9IFQuY29tcG9uZW50c1t0Ml07CiAgICAgICAgICAgIGlmICghKGUyID4geTIuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCkpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBBMiA9IHkyLnJlc29sdXRpb25zW2UyXSwgbDIgPSBBMi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzOyBCMiA8IGwyOyApIHsKICAgICAgICAgICAgICAgIHZhciBhMiA9IFEwKEEyLCBCMiwgXyk7CiAgICAgICAgICAgICAgICByZXR1cm4gQjIrKywgYTI7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIEIyID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgdDIgPSAwOwogICAgICAgIH0KICAgICAgICBfID0gMDsKICAgICAgfQogICAgICB0aHJvdyBuZXcgRTEoIk91dCBvZiBwYWNrZXRzIik7CiAgICB9OwogIH0KICBmdW5jdGlvbiBYMSh2MikgewogICAgdmFyIGIgPSB2Mi5TSVosIEkyID0gdjIuY3VycmVudFRpbGUuaW5kZXgsIFQgPSB2Mi50aWxlc1tJMl0sIEwgPSBULmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsIFoyID0gYi5Dc2l6LCBpMiwgJCwgZTIsIF8sIHQyID0gMDsKICAgIGZvciAoZTIgPSAwOyBlMiA8IFoyOyBlMisrKSB7CiAgICAgIGNvbnN0IEEyID0gVC5jb21wb25lbnRzW2UyXTsKICAgICAgdDIgPSBNYXRoLm1heCgKICAgICAgICB0MiwKICAgICAgICBBMi5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50CiAgICAgICk7CiAgICB9CiAgICB2YXIgQjIgPSBuZXcgSW50MzJBcnJheSgKICAgICAgdDIgKyAxCiAgICApOwogICAgZm9yICgkID0gMDsgJCA8PSB0MjsgKyskKSB7CiAgICAgIHZhciBWMiA9IDA7CiAgICAgIGZvciAoZTIgPSAwOyBlMiA8IFoyOyArK2UyKSB7CiAgICAgICAgdmFyIHkyID0gVC5jb21wb25lbnRzW2UyXS5yZXNvbHV0aW9uczsKICAgICAgICAkIDwgeTIubGVuZ3RoICYmIChWMiA9IE1hdGgubWF4KAogICAgICAgICAgVjIsCiAgICAgICAgICB5MlskXS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzCiAgICAgICAgKSk7CiAgICAgIH0KICAgICAgQjJbJF0gPSBWMjsKICAgIH0KICAgIGkyID0gMCwgJCA9IDAsIGUyID0gMCwgXyA9IDAsIHRoaXMubmV4dFBhY2tldCA9IGZ1bmN0aW9uKCkgewogICAgICBmb3IgKDsgJCA8PSB0MjsgJCsrKSB7CiAgICAgICAgZm9yICg7IF8gPCBCMlskXTsgXysrKSB7CiAgICAgICAgICBmb3IgKDsgZTIgPCBaMjsgZTIrKykgewogICAgICAgICAgICBjb25zdCBqMiA9IFQuY29tcG9uZW50c1tlMl07CiAgICAgICAgICAgIGlmICghKCQgPiBqMi5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KSkgewogICAgICAgICAgICAgIHZhciBsMiA9IGoyLnJlc29sdXRpb25zWyRdLCBhMiA9IGwyLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHM7CiAgICAgICAgICAgICAgaWYgKCEoXyA+PSBhMikpIHsKICAgICAgICAgICAgICAgIGZvciAoOyBpMiA8IEw7ICkgewogICAgICAgICAgICAgICAgICB2YXIgSjIgPSBRMChsMiwgXywgaTIpOwogICAgICAgICAgICAgICAgICByZXR1cm4gaTIrKywgSjI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpMiA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBlMiA9IDA7CiAgICAgICAgfQogICAgICAgIF8gPSAwOwogICAgICB9CiAgICAgIHRocm93IG5ldyBFMSgiT3V0IG9mIHBhY2tldHMiKTsKICAgIH07CiAgfQogIGZ1bmN0aW9uIHUxKHYyKSB7CiAgICB2YXIgYiA9IHYyLlNJWiwgSTIgPSB2Mi5jdXJyZW50VGlsZS5pbmRleCwgVCA9IHYyLnRpbGVzW0kyXSwgTCA9IFQuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCwgWjIgPSBiLkNzaXosIGkyID0gUjAoVCksICQgPSBpMiwgZTIgPSAwLCBfID0gMCwgdDIgPSAwLCBCMiA9IDAsIFYyID0gMDsKICAgIHRoaXMubmV4dFBhY2tldCA9IGZ1bmN0aW9uKCkgewogICAgICBmb3IgKDsgVjIgPCAkLm1heE51bUhpZ2g7IFYyKyspIHsKICAgICAgICBmb3IgKDsgQjIgPCAkLm1heE51bVdpZGU7IEIyKyspIHsKICAgICAgICAgIGZvciAoOyB0MiA8IFoyOyB0MisrKSB7CiAgICAgICAgICAgIGZvciAodmFyIEEyID0gVC5jb21wb25lbnRzW3QyXSwgbDIgPSBBMi5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50OyBfIDw9IGwyOyBfKyspIHsKICAgICAgICAgICAgICB2YXIgYTIgPSBBMi5yZXNvbHV0aW9uc1tfXSwgSjIgPSBpMi5jb21wb25lbnRzW3QyXS5yZXNvbHV0aW9uc1tfXSwgajIgPSBYMCgKICAgICAgICAgICAgICAgIEIyLAogICAgICAgICAgICAgICAgVjIsCiAgICAgICAgICAgICAgICBKMiwKICAgICAgICAgICAgICAgICQsCiAgICAgICAgICAgICAgICBhMgogICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgaWYgKGoyICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICBmb3IgKDsgZTIgPCBMOyApIHsKICAgICAgICAgICAgICAgICAgdmFyIEsyID0gUTAoYTIsIGoyLCBlMik7CiAgICAgICAgICAgICAgICAgIHJldHVybiBlMisrLCBLMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUyID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgXyA9IDA7CiAgICAgICAgICB9CiAgICAgICAgICB0MiA9IDA7CiAgICAgICAgfQogICAgICAgIEIyID0gMDsKICAgICAgfQogICAgICB0aHJvdyBuZXcgRTEoIk91dCBvZiBwYWNrZXRzIik7CiAgICB9OwogIH0KICBmdW5jdGlvbiBLMCh2MikgewogICAgdmFyIGIgPSB2Mi5TSVosIEkyID0gdjIuY3VycmVudFRpbGUuaW5kZXgsIFQgPSB2Mi50aWxlc1tJMl0sIEwgPSBULmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsIFoyID0gYi5Dc2l6LCBpMiA9IFIwKFQpLCAkID0gMCwgZTIgPSAwLCBfID0gMCwgdDIgPSAwLCBCMiA9IDA7CiAgICB0aGlzLm5leHRQYWNrZXQgPSBmdW5jdGlvbigpIHsKICAgICAgZm9yICg7IF8gPCBaMjsgKytfKSB7CiAgICAgICAgZm9yICh2YXIgeTIgPSBULmNvbXBvbmVudHNbX10sIEEyID0gaTIuY29tcG9uZW50c1tfXSwgbDIgPSB5Mi5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50OyBCMiA8IEEyLm1heE51bUhpZ2g7IEIyKyspIHsKICAgICAgICAgIGZvciAoOyB0MiA8IEEyLm1heE51bVdpZGU7IHQyKyspIHsKICAgICAgICAgICAgZm9yICg7IGUyIDw9IGwyOyBlMisrKSB7CiAgICAgICAgICAgICAgdmFyIGEyID0geTIucmVzb2x1dGlvbnNbZTJdLCBKMiA9IEEyLnJlc29sdXRpb25zW2UyXSwgajIgPSBYMCgKICAgICAgICAgICAgICAgIHQyLAogICAgICAgICAgICAgICAgQjIsCiAgICAgICAgICAgICAgICBKMiwKICAgICAgICAgICAgICAgIEEyLAogICAgICAgICAgICAgICAgYTIKICAgICAgICAgICAgICApOwogICAgICAgICAgICAgIGlmIChqMiAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgZm9yICg7ICQgPCBMOyApIHsKICAgICAgICAgICAgICAgICAgdmFyIEsyID0gUTAoYTIsIGoyLCAkKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuICQrKywgSzI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZTIgPSAwOwogICAgICAgICAgfQogICAgICAgICAgdDIgPSAwOwogICAgICAgIH0KICAgICAgICBCMiA9IDA7CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IEUxKCJPdXQgb2YgcGFja2V0cyIpOwogICAgfTsKICB9CiAgZnVuY3Rpb24gWDAodjIsIGIsIEkyLCBULCBMKSB7CiAgICB2YXIgWjIgPSB2MiAqIFQubWluV2lkdGgsIGkyID0gYiAqIFQubWluSGVpZ2h0OwogICAgaWYgKFoyICUgSTIud2lkdGggIT09IDAgfHwgaTIgJSBJMi5oZWlnaHQgIT09IDApCiAgICAgIHJldHVybiBudWxsOwogICAgdmFyICQgPSBpMiAvIEkyLndpZHRoICogTC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZTsKICAgIHJldHVybiBaMiAvIEkyLmhlaWdodCArICQ7CiAgfQogIGZ1bmN0aW9uIFIwKHYyKSB7CiAgICBmb3IgKHZhciBiID0gdjIuY29tcG9uZW50cy5sZW5ndGgsIEkyID0gTnVtYmVyLk1BWF9WQUxVRSwgVCA9IE51bWJlci5NQVhfVkFMVUUsIEwgPSAwLCBaMiA9IDAsIGkyID0gbmV3IEFycmF5KGIpLCAkID0gMDsgJCA8IGI7ICQrKykgewogICAgICBmb3IgKHZhciBlMiA9IHYyLmNvbXBvbmVudHNbJF0sIF8gPSBlMi5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50LCB0MiA9IG5ldyBBcnJheShfICsgMSksIEIyID0gTnVtYmVyLk1BWF9WQUxVRSwgVjIgPSBOdW1iZXIuTUFYX1ZBTFVFLCB5MiA9IDAsIEEyID0gMCwgbDIgPSAxLCBhMiA9IF87IGEyID49IDA7IC0tYTIpIHsKICAgICAgICB2YXIgSjIgPSBlMi5yZXNvbHV0aW9uc1thMl0sIGoyID0gbDIgKiBKMi5wcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RXaWR0aCwgSzIgPSBsMiAqIEoyLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdEhlaWdodDsKICAgICAgICBCMiA9IE1hdGgubWluKAogICAgICAgICAgQjIsCiAgICAgICAgICBqMgogICAgICAgICksIFYyID0gTWF0aC5taW4oCiAgICAgICAgICBWMiwKICAgICAgICAgIEsyCiAgICAgICAgKSwgeTIgPSBNYXRoLm1heCgKICAgICAgICAgIHkyLAogICAgICAgICAgSjIucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0c3dpZGUKICAgICAgICApLCBBMiA9IE1hdGgubWF4KAogICAgICAgICAgQTIsCiAgICAgICAgICBKMi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzaGlnaAogICAgICAgICksIHQyW2EyXSA9IHsKICAgICAgICAgIHdpZHRoOiBqMiwKICAgICAgICAgIGhlaWdodDogSzIKICAgICAgICB9LCBsMiA8PD0gMTsKICAgICAgfQogICAgICBJMiA9IE1hdGgubWluKEkyLCBCMiksIFQgPSBNYXRoLm1pbihULCBWMiksIEwgPSBNYXRoLm1heChMLCB5MiksIFoyID0gTWF0aC5tYXgoWjIsIEEyKSwgaTJbJF0gPSB7CiAgICAgICAgcmVzb2x1dGlvbnM6IHQyLAogICAgICAgIG1pbldpZHRoOiBCMiwKICAgICAgICBtaW5IZWlnaHQ6IFYyLAogICAgICAgIG1heE51bVdpZGU6IHkyLAogICAgICAgIG1heE51bUhpZ2g6IEEyCiAgICAgIH07CiAgICB9CiAgICByZXR1cm4gewogICAgICBjb21wb25lbnRzOiBpMiwKICAgICAgbWluV2lkdGg6IEkyLAogICAgICBtaW5IZWlnaHQ6IFQsCiAgICAgIG1heE51bVdpZGU6IEwsCiAgICAgIG1heE51bUhpZ2g6IFoyCiAgICB9OwogIH0KICBmdW5jdGlvbiBBMSh2MikgewogICAgZm9yICh2YXIgYiA9IHYyLlNJWiwgSTIgPSB2Mi5jdXJyZW50VGlsZS5pbmRleCwgVCA9IHYyLnRpbGVzW0kyXSwgTCA9IGIuQ3NpeiwgWjIgPSAwOyBaMiA8IEw7IFoyKyspIHsKICAgICAgZm9yICh2YXIgaTIgPSBULmNvbXBvbmVudHNbWjJdLCAkID0gaTIuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCwgZTIgPSBbXSwgXyA9IFtdLCB0MiA9IDA7IHQyIDw9ICQ7IHQyKyspIHsKICAgICAgICB2YXIgQjIgPSBaMCh2MiwgaTIsIHQyKSwgVjIgPSB7fSwgeTIgPSAxIDw8ICQgLSB0MjsKICAgICAgICBWMi50cngwID0gTWF0aC5jZWlsKGkyLnRjeDAgLyB5MiksIFYyLnRyeTAgPSBNYXRoLmNlaWwoaTIudGN5MCAvIHkyKSwgVjIudHJ4MSA9IE1hdGguY2VpbChpMi50Y3gxIC8geTIpLCBWMi50cnkxID0gTWF0aC5jZWlsKGkyLnRjeTEgLyB5MiksIFYyLnJlc0xldmVsID0gdDIsIHMwKHYyLCBWMiwgQjIpLCBlMi5wdXNoKFYyKTsKICAgICAgICB2YXIgQTI7CiAgICAgICAgaWYgKHQyID09PSAwKQogICAgICAgICAgQTIgPSB7fSwgQTIudHlwZSA9ICJMTCIsIEEyLnRieDAgPSBNYXRoLmNlaWwoaTIudGN4MCAvIHkyKSwgQTIudGJ5MCA9IE1hdGguY2VpbChpMi50Y3kwIC8geTIpLCBBMi50YngxID0gTWF0aC5jZWlsKGkyLnRjeDEgLyB5MiksIEEyLnRieTEgPSBNYXRoLmNlaWwoaTIudGN5MSAvIHkyKSwgQTIucmVzb2x1dGlvbiA9IFYyLCBDMih2MiwgQTIsIEIyKSwgXy5wdXNoKEEyKSwgVjIuc3ViYmFuZHMgPSBbQTJdOwogICAgICAgIGVsc2UgewogICAgICAgICAgdmFyIGwyID0gMSA8PCAkIC0gdDIgKyAxLCBhMiA9IFtdOwogICAgICAgICAgQTIgPSB7fSwgQTIudHlwZSA9ICJITCIsIEEyLnRieDAgPSBNYXRoLmNlaWwoaTIudGN4MCAvIGwyIC0gMC41KSwgQTIudGJ5MCA9IE1hdGguY2VpbChpMi50Y3kwIC8gbDIpLCBBMi50YngxID0gTWF0aC5jZWlsKGkyLnRjeDEgLyBsMiAtIDAuNSksIEEyLnRieTEgPSBNYXRoLmNlaWwoaTIudGN5MSAvIGwyKSwgQTIucmVzb2x1dGlvbiA9IFYyLCBDMih2MiwgQTIsIEIyKSwgXy5wdXNoKEEyKSwgYTIucHVzaChBMiksIEEyID0ge30sIEEyLnR5cGUgPSAiTEgiLCBBMi50YngwID0gTWF0aC5jZWlsKGkyLnRjeDAgLyBsMiksIEEyLnRieTAgPSBNYXRoLmNlaWwoaTIudGN5MCAvIGwyIC0gMC41KSwgQTIudGJ4MSA9IE1hdGguY2VpbChpMi50Y3gxIC8gbDIpLCBBMi50YnkxID0gTWF0aC5jZWlsKGkyLnRjeTEgLyBsMiAtIDAuNSksIEEyLnJlc29sdXRpb24gPSBWMiwgQzIodjIsIEEyLCBCMiksIF8ucHVzaChBMiksIGEyLnB1c2goQTIpLCBBMiA9IHt9LCBBMi50eXBlID0gIkhIIiwgQTIudGJ4MCA9IE1hdGguY2VpbChpMi50Y3gwIC8gbDIgLSAwLjUpLCBBMi50YnkwID0gTWF0aC5jZWlsKGkyLnRjeTAgLyBsMiAtIDAuNSksIEEyLnRieDEgPSBNYXRoLmNlaWwoaTIudGN4MSAvIGwyIC0gMC41KSwgQTIudGJ5MSA9IE1hdGguY2VpbChpMi50Y3kxIC8gbDIgLSAwLjUpLCBBMi5yZXNvbHV0aW9uID0gVjIsIEMyKHYyLCBBMiwgQjIpLCBfLnB1c2goQTIpLCBhMi5wdXNoKEEyKSwgVjIuc3ViYmFuZHMgPSBhMjsKICAgICAgICB9CiAgICAgIH0KICAgICAgaTIucmVzb2x1dGlvbnMgPSBlMiwgaTIuc3ViYmFuZHMgPSBfOwogICAgfQogICAgdmFyIEoyID0gVC5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLnByb2dyZXNzaW9uT3JkZXI7CiAgICBzd2l0Y2ggKEoyKSB7CiAgICAgIGNhc2UgMDoKICAgICAgICBULnBhY2tldHNJdGVyYXRvciA9IG5ldyBWMSgKICAgICAgICAgIHYyCiAgICAgICAgKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAxOgogICAgICAgIFQucGFja2V0c0l0ZXJhdG9yID0gbmV3IGllKAogICAgICAgICAgdjIKICAgICAgICApOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDI6CiAgICAgICAgVC5wYWNrZXRzSXRlcmF0b3IgPSBuZXcgWDEoCiAgICAgICAgICB2MgogICAgICAgICk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMzoKICAgICAgICBULnBhY2tldHNJdGVyYXRvciA9IG5ldyB1MSgKICAgICAgICAgIHYyCiAgICAgICAgKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSA0OgogICAgICAgIFQucGFja2V0c0l0ZXJhdG9yID0gbmV3IEswKAogICAgICAgICAgdjIKICAgICAgICApOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIHRocm93IG5ldyBFMShgVW5zdXBwb3J0ZWQgcHJvZ3Jlc3Npb24gb3JkZXIgJHtKMn1gKTsKICAgIH0KICB9CiAgZnVuY3Rpb24gU2kodjIsIGIsIEkyLCBUKSB7CiAgICB2YXIgTCA9IDAsIFoyLCBpMiA9IDAsICQgPSAhMTsKICAgIGZ1bmN0aW9uIGUyKHEwKSB7CiAgICAgIGZvciAoOyBpMiA8IHEwOyApIHsKICAgICAgICB2YXIgUjEgPSBiW0kyICsgTF07CiAgICAgICAgTCsrLCAkID8gKFoyID0gWjIgPDwgNyB8IFIxLCBpMiArPSA3LCAkID0gITEpIDogKFoyID0gWjIgPDwgOCB8IFIxLCBpMiArPSA4KSwgUjEgPT09IDI1NSAmJiAoJCA9ICEwKTsKICAgICAgfQogICAgICByZXR1cm4gaTIgLT0gcTAsIFoyID4+PiBpMiAmICgxIDw8IHEwKSAtIDE7CiAgICB9CiAgICBmdW5jdGlvbiBfKHEwKSB7CiAgICAgIHJldHVybiBiW0kyICsgTCAtIDFdID09PSAyNTUgJiYgYltJMiArIExdID09PSBxMCA/ICh0MigxKSwgITApIDogYltJMiArIExdID09PSAyNTUgJiYgYltJMiArIEwgKyAxXSA9PT0gcTAgPyAodDIoMiksICEwKSA6ICExOwogICAgfQogICAgZnVuY3Rpb24gdDIocTApIHsKICAgICAgTCArPSBxMDsKICAgIH0KICAgIGZ1bmN0aW9uIEIyKCkgewogICAgICBpMiA9IDAsICQgJiYgKEwrKywgJCA9ICExKTsKICAgIH0KICAgIGZ1bmN0aW9uIFYyKCkgewogICAgICBpZiAoZTIoMSkgPT09IDApCiAgICAgICAgcmV0dXJuIDE7CiAgICAgIGlmIChlMigxKSA9PT0gMCkKICAgICAgICByZXR1cm4gMjsKICAgICAgdmFyIHEwID0gZTIoMik7CiAgICAgIHJldHVybiBxMCA8IDMgPyBxMCArIDMgOiAocTAgPSBlMig1KSwgcTAgPCAzMSA/IHEwICsgNiA6IChxMCA9IGUyKDcpLCBxMCArIDM3KSk7CiAgICB9CiAgICBmb3IgKHZhciB5MiA9IHYyLmN1cnJlbnRUaWxlLmluZGV4LCBBMiA9IHYyLnRpbGVzW3kyXSwgbDIgPSB2Mi5DT0Quc29wTWFya2VyVXNlZCwgYTIgPSB2Mi5DT0QuZXBoTWFya2VyVXNlZCwgSjIgPSBBMi5wYWNrZXRzSXRlcmF0b3I7IEwgPCBUOyApIHsKICAgICAgQjIoKSwgbDIgJiYgXygxNDUpICYmIHQyKDQpOwogICAgICB2YXIgajIgPSBKMi5uZXh0UGFja2V0KCk7CiAgICAgIGlmIChlMigxKSkgewogICAgICAgIGZvciAodmFyIEsyID0gajIubGF5ZXJOdW1iZXIsIGIyID0gW10sIFQyLCB3MCA9IDAsICQyID0gajIuY29kZWJsb2Nrcy5sZW5ndGg7IHcwIDwgJDI7IHcwKyspIHsKICAgICAgICAgIFQyID0gajIuY29kZWJsb2Nrc1t3MF07CiAgICAgICAgICB2YXIgSDIgPSBUMi5wcmVjaW5jdCwgRjAgPSBUMi5jYnggLSBIMi5jYnhNaW4sIG0wID0gVDIuY2J5IC0gSDIuY2J5TWluLCBTMCA9ICExLCB2MCA9ICExLCBEMDsKICAgICAgICAgIGlmIChUMi5pbmNsdWRlZCAhPT0gdm9pZCAwKQogICAgICAgICAgICBTMCA9ICEhZTIoMSk7CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgSDIgPSBUMi5wcmVjaW5jdDsKICAgICAgICAgICAgdmFyICQwLCBHMDsKICAgICAgICAgICAgaWYgKEgyLmluY2x1c2lvblRyZWUgIT09IHZvaWQgMCkKICAgICAgICAgICAgICAkMCA9IEgyLmluY2x1c2lvblRyZWU7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHZhciBvMSA9IEgyLmNieE1heCAtIEgyLmNieE1pbiArIDEsIEMxID0gSDIuY2J5TWF4IC0gSDIuY2J5TWluICsgMTsKICAgICAgICAgICAgICAkMCA9IG5ldyByZShvMSwgQzEsIEsyKSwgRzAgPSBuZXcgTDEobzEsIEMxKSwgSDIuaW5jbHVzaW9uVHJlZSA9ICQwLCBIMi56ZXJvQml0UGxhbmVzVHJlZSA9IEcwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkMC5yZXNldChGMCwgbTAsIEsyKSkKICAgICAgICAgICAgICBmb3IgKDsgOyApCiAgICAgICAgICAgICAgICBpZiAoZTIoMSkpIHsKICAgICAgICAgICAgICAgICAgaWYgKEQwID0gISQwLm5leHRMZXZlbCgpLCBEMCkgewogICAgICAgICAgICAgICAgICAgIFQyLmluY2x1ZGVkID0gITAsIFMwID0gdjAgPSAhMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgJDAuaW5jcmVtZW50VmFsdWUoSzIpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChTMCkgewogICAgICAgICAgICBpZiAodjApIHsKICAgICAgICAgICAgICBmb3IgKEcwID0gSDIuemVyb0JpdFBsYW5lc1RyZWUsIEcwLnJlc2V0KEYwLCBtMCk7IDsgKQogICAgICAgICAgICAgICAgaWYgKGUyKDEpKSB7CiAgICAgICAgICAgICAgICAgIGlmIChEMCA9ICFHMC5uZXh0TGV2ZWwoKSwgRDApCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgRzAuaW5jcmVtZW50VmFsdWUoKTsKICAgICAgICAgICAgICBUMi56ZXJvQml0UGxhbmVzID0gRzAudmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICh2YXIgTTEgPSBWMigpOyBlMigxKTsgKQogICAgICAgICAgICAgIFQyLkxibG9jaysrOwogICAgICAgICAgICB2YXIgRjEgPSBKcihNMSksIFMxID0gKE0xIDwgMSA8PCBGMSA/IEYxIC0gMSA6IEYxKSArIFQyLkxibG9jaywgczEgPSBlMihTMSk7CiAgICAgICAgICAgIGIyLnB1c2goewogICAgICAgICAgICAgIGNvZGVibG9jazogVDIsCiAgICAgICAgICAgICAgY29kaW5ncGFzc2VzOiBNMSwKICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiBzMQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yIChCMigpLCBhMiAmJiBfKDE0Nik7IGIyLmxlbmd0aCA+IDA7ICkgewogICAgICAgICAgdmFyIEoxID0gYjIuc2hpZnQoKTsKICAgICAgICAgIFQyID0gSjEuY29kZWJsb2NrLCBUMi5kYXRhID09PSB2b2lkIDAgJiYgKFQyLmRhdGEgPSBbXSksIFQyLmRhdGEucHVzaCh7CiAgICAgICAgICAgIGRhdGE6IGIsCiAgICAgICAgICAgIHN0YXJ0OiBJMiArIEwsCiAgICAgICAgICAgIGVuZDogSTIgKyBMICsgSjEuZGF0YUxlbmd0aCwKICAgICAgICAgICAgY29kaW5ncGFzc2VzOiBKMS5jb2RpbmdwYXNzZXMKICAgICAgICAgIH0pLCBMICs9IEoxLmRhdGFMZW5ndGg7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gTDsKICB9CiAgZnVuY3Rpb24gRWUodjIsIGIsIEkyLCBULCBMLCBaMiwgaTIsICQpIHsKICAgIGZvciAodmFyIGUyID0gVC50YngwLCBfID0gVC50YnkwLCB0MiA9IFQudGJ4MSAtIFQudGJ4MCwgQjIgPSBULmNvZGVibG9ja3MsIFYyID0gVC50eXBlLmNoYXJBdCgwKSA9PT0gIkgiID8gMSA6IDAsIHkyID0gVC50eXBlLmNoYXJBdCgxKSA9PT0gIkgiID8gYiA6IDAsIEEyID0gMCwgbDIgPSBCMi5sZW5ndGg7IEEyIDwgbDI7ICsrQTIpIHsKICAgICAgdmFyIGEyID0gQjJbQTJdLCBKMiA9IGEyLnRieDFfIC0gYTIudGJ4MF8sIGoyID0gYTIudGJ5MV8gLSBhMi50YnkwXzsKICAgICAgaWYgKCEoSjIgPT09IDAgfHwgajIgPT09IDApICYmIGEyLmRhdGEgIT09IHZvaWQgMCkgewogICAgICAgIHZhciBLMiwgYjI7CiAgICAgICAgSzIgPSBuZXcgRDEoCiAgICAgICAgICBKMiwKICAgICAgICAgIGoyLAogICAgICAgICAgYTIuc3ViYmFuZFR5cGUsCiAgICAgICAgICBhMi56ZXJvQml0UGxhbmVzLAogICAgICAgICAgWjIKICAgICAgICApLCBiMiA9IDI7CiAgICAgICAgdmFyIFQyID0gYTIuZGF0YSwgdzAgPSAwLCAkMiA9IDAsIEgyLCBGMCwgbTA7CiAgICAgICAgZm9yIChIMiA9IDAsIEYwID0gVDIubGVuZ3RoOyBIMiA8IEYwOyBIMisrKQogICAgICAgICAgbTAgPSBUMltIMl0sIHcwICs9IG0wLmVuZCAtIG0wLnN0YXJ0LCAkMiArPSBtMC5jb2RpbmdwYXNzZXM7CiAgICAgICAgdmFyIFMwID0gbmV3IFVpbnQ4QXJyYXkodzApLCB2MCA9IDA7CiAgICAgICAgZm9yIChIMiA9IDAsIEYwID0gVDIubGVuZ3RoOyBIMiA8IEYwOyBIMisrKSB7CiAgICAgICAgICBtMCA9IFQyW0gyXTsKICAgICAgICAgIHZhciBEMCA9IG0wLmRhdGEuc3ViYXJyYXkobTAuc3RhcnQsIG0wLmVuZCk7CiAgICAgICAgICBTMC5zZXQoRDAsIHYwKSwgdjAgKz0gRDAubGVuZ3RoOwogICAgICAgIH0KICAgICAgICB2YXIgJDAgPSBuZXcgTnQoUzAsIDAsIHcwKTsKICAgICAgICBmb3IgKEsyLnNldERlY29kZXIoJDApLCBIMiA9IDA7IEgyIDwgJDI7IEgyKyspIHsKICAgICAgICAgIHN3aXRjaCAoYjIpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIEsyLnJ1blNpZ25pZmljYW5jZVByb3BhZ2F0aW9uUGFzcygpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgSzIucnVuTWFnbml0dWRlUmVmaW5lbWVudFBhc3MoKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIEsyLnJ1bkNsZWFudXBQYXNzKCksICQgJiYgSzIuY2hlY2tTZWdtZW50YXRpb25TeW1ib2woKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIGIyID0gKGIyICsgMSkgJSAzOwogICAgICAgIH0KICAgICAgICB2YXIgRzAgPSBhMi50YngwXyAtIGUyICsgKGEyLnRieTBfIC0gXykgKiB0MiwgbzEgPSBLMi5jb2VmZmljZW50c1NpZ24sIEMxID0gSzIuY29lZmZpY2VudHNNYWduaXR1ZGUsIE0xID0gSzIuYml0c0RlY29kZWQsIEYxID0gaTIgPyAwIDogMC41LCBTMSwgczEsIEoxOwogICAgICAgIHYwID0gMDsKICAgICAgICB2YXIgcTAgPSBULnR5cGUgIT09ICJMTCI7CiAgICAgICAgZm9yIChIMiA9IDA7IEgyIDwgajI7IEgyKyspIHsKICAgICAgICAgIHZhciBSMSA9IEcwIC8gdDIgfCAwLCBEZSA9IDIgKiBSMSAqIChiIC0gdDIpICsgVjIgKyB5MjsKICAgICAgICAgIGZvciAoUzEgPSAwOyBTMSA8IEoyOyBTMSsrKSB7CiAgICAgICAgICAgIGlmIChzMSA9IEMxW3YwXSwgczEgIT09IDApIHsKICAgICAgICAgICAgICBzMSA9IChzMSArIEYxKSAqIEwsIG8xW3YwXSAhPT0gMCAmJiAoczEgPSAtczEpLCBKMSA9IE0xW3YwXTsKICAgICAgICAgICAgICB2YXIgTzEgPSBxMCA/IERlICsgKEcwIDw8IDEpIDogRzA7CiAgICAgICAgICAgICAgaTIgJiYgSjEgPj0gWjIgPyB2MltPMV0gPSBzMSA6IHYyW08xXSA9IHMxICogKDEgPDwgWjIgLSBKMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgRzArKywgdjArKzsKICAgICAgICAgIH0KICAgICAgICAgIEcwICs9IHQyIC0gSjI7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogIGZ1bmN0aW9uIHZlKHYyLCBiLCBJMikgewogICAgZm9yICh2YXIgVCA9IGIuY29tcG9uZW50c1tJMl0sIEwgPSBULmNvZGluZ1N0eWxlUGFyYW1ldGVycywgWjIgPSBULnF1YW50aXphdGlvblBhcmFtZXRlcnMsIGkyID0gTC5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsICQgPSBaMi5TUHFjZHMsIGUyID0gWjIuc2NhbGFyRXhwb3VuZGVkLCBfID0gWjIuZ3VhcmRCaXRzLCB0MiA9IEwuc2VnbWVudGF0aW9uU3ltYm9sVXNlZCwgQjIgPSB2Mi5jb21wb25lbnRzW0kyXS5wcmVjaXNpb24sIFYyID0gTC5yZXZlcnNpYmxlVHJhbnNmb3JtYXRpb24sIHkyID0gVjIgPyBuZXcgVzEoKSA6IG5ldyBpaSgpLCBBMiA9IFtdLCBsMiA9IDAsIGEyID0gMDsgYTIgPD0gaTI7IGEyKyspIHsKICAgICAgZm9yICh2YXIgSjIgPSBULnJlc29sdXRpb25zW2EyXSwgajIgPSBKMi50cngxIC0gSjIudHJ4MCwgSzIgPSBKMi50cnkxIC0gSjIudHJ5MCwgYjIgPSBuZXcgRmxvYXQzMkFycmF5KGoyICogSzIpLCBUMiA9IDAsIHcwID0gSjIuc3ViYmFuZHMubGVuZ3RoOyBUMiA8IHcwOyBUMisrKSB7CiAgICAgICAgdmFyICQyLCBIMjsKICAgICAgICBlMiA/ICgkMiA9ICRbbDJdLm11LCBIMiA9ICRbbDJdLmVwc2lsb24sIGwyKyspIDogKCQyID0gJFswXS5tdSwgSDIgPSAkWzBdLmVwc2lsb24gKyAoYTIgPiAwID8gMSAtIGEyIDogMCkpOwogICAgICAgIHZhciBGMCA9IEoyLnN1YmJhbmRzW1QyXSwgbTAgPSB1MFtGMC50eXBlXSwgUzAgPSBWMiA/IDEgOiAyICoqIChCMiArIG0wIC0gSDIpICogKDEgKyAkMiAvIDIwNDgpLCB2MCA9IF8gKyBIMiAtIDE7CiAgICAgICAgRWUoCiAgICAgICAgICBiMiwKICAgICAgICAgIGoyLAogICAgICAgICAgSzIsCiAgICAgICAgICBGMCwKICAgICAgICAgIFMwLAogICAgICAgICAgdjAsCiAgICAgICAgICBWMiwKICAgICAgICAgIHQyCiAgICAgICAgKTsKICAgICAgfQogICAgICBBMi5wdXNoKHsKICAgICAgICB3aWR0aDogajIsCiAgICAgICAgaGVpZ2h0OiBLMiwKICAgICAgICBpdGVtczogYjIKICAgICAgfSk7CiAgICB9CiAgICB2YXIgRDAgPSB5Mi5jYWxjdWxhdGUoCiAgICAgIEEyLAogICAgICBULnRjeDAsCiAgICAgIFQudGN5MAogICAgKTsKICAgIHJldHVybiB7CiAgICAgIGxlZnQ6IFQudGN4MCwKICAgICAgdG9wOiBULnRjeTAsCiAgICAgIHdpZHRoOiBEMC53aWR0aCwKICAgICAgaGVpZ2h0OiBEMC5oZWlnaHQsCiAgICAgIGl0ZW1zOiBEMC5pdGVtcwogICAgfTsKICB9CiAgZnVuY3Rpb24gZWkodjIpIHsKICAgIGZvciAodmFyIGIgPSB2Mi5TSVosIEkyID0gdjIuY29tcG9uZW50cywgVCA9IGIuQ3NpeiwgTCA9IFtdLCBaMiA9IDAsIGkyID0gdjIudGlsZXMubGVuZ3RoOyBaMiA8IGkyOyBaMisrKSB7CiAgICAgIHZhciAkID0gdjIudGlsZXNbWjJdLCBlMiA9IFtdLCBfOwogICAgICBmb3IgKF8gPSAwOyBfIDwgVDsgXysrKQogICAgICAgIGUyW19dID0gdmUodjIsICQsIF8pOwogICAgICB2YXIgdDIgPSBlMlswXSwgQjIgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkodDIuaXRlbXMubGVuZ3RoICogVCksIFYyID0gewogICAgICAgIGxlZnQ6IHQyLmxlZnQsCiAgICAgICAgdG9wOiB0Mi50b3AsCiAgICAgICAgd2lkdGg6IHQyLndpZHRoLAogICAgICAgIGhlaWdodDogdDIuaGVpZ2h0LAogICAgICAgIGl0ZW1zOiBCMgogICAgICB9LCB5MiwgQTIsIGwyID0gMCwgYTIsIEoyLCBqMiwgSzIsIGIyOwogICAgICBpZiAoJC5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtKSB7CiAgICAgICAgdmFyIFQyID0gVCA9PT0gNCwgdzAgPSBlMlswXS5pdGVtcywgJDIgPSBlMlsxXS5pdGVtcywgSDIgPSBlMlsyXS5pdGVtcywgRjAgPSBUMiA/IGUyWzNdLml0ZW1zIDogbnVsbDsKICAgICAgICB5MiA9IEkyWzBdLnByZWNpc2lvbiAtIDgsIEEyID0gKDEyOCA8PCB5MikgKyAwLjU7CiAgICAgICAgdmFyIG0wID0gJC5jb21wb25lbnRzWzBdLCBTMCA9IFQgLSAzOwogICAgICAgIGlmIChKMiA9IHcwLmxlbmd0aCwgbTAuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbikKICAgICAgICAgIGZvciAoYTIgPSAwOyBhMiA8IEoyOyBhMisrLCBsMiArPSBTMCkgewogICAgICAgICAgICBqMiA9IHcwW2EyXSArIEEyLCBLMiA9ICQyW2EyXSwgYjIgPSBIMlthMl07CiAgICAgICAgICAgIGNvbnN0IEQwID0gajIgLSAoYjIgKyBLMiA+PiAyKTsKICAgICAgICAgICAgQjJbbDIrK10gPSBEMCArIGIyID4+IHkyLCBCMltsMisrXSA9IEQwID4+IHkyLCBCMltsMisrXSA9IEQwICsgSzIgPj4geTI7CiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgZm9yIChhMiA9IDA7IGEyIDwgSjI7IGEyKyssIGwyICs9IFMwKQogICAgICAgICAgICBqMiA9IHcwW2EyXSArIEEyLCBLMiA9ICQyW2EyXSwgYjIgPSBIMlthMl0sIEIyW2wyKytdID0gajIgKyAxLjQwMiAqIGIyID4+IHkyLCBCMltsMisrXSA9IGoyIC0gMC4zNDQxMyAqIEsyIC0gMC43MTQxNCAqIGIyID4+IHkyLCBCMltsMisrXSA9IGoyICsgMS43NzIgKiBLMiA+PiB5MjsKICAgICAgICBpZiAoVDIpCiAgICAgICAgICBmb3IgKGEyID0gMCwgbDIgPSAzOyBhMiA8IEoyOyBhMisrLCBsMiArPSA0KQogICAgICAgICAgICBCMltsMl0gPSBGMFthMl0gKyBBMiA+PiB5MjsKICAgICAgfSBlbHNlCiAgICAgICAgZm9yIChfID0gMDsgXyA8IFQ7IF8rKykgewogICAgICAgICAgdmFyIHYwID0gZTJbX10uaXRlbXM7CiAgICAgICAgICBmb3IgKHkyID0gSTJbX10ucHJlY2lzaW9uIC0gOCwgQTIgPSAoMTI4IDw8IHkyKSArIDAuNSwgbDIgPSBfLCBhMiA9IDAsIEoyID0gdjAubGVuZ3RoOyBhMiA8IEoyOyBhMisrKQogICAgICAgICAgICBCMltsMl0gPSB2MFthMl0gKyBBMiA+PiB5MiwgbDIgKz0gVDsKICAgICAgICB9CiAgICAgIEwucHVzaChWMik7CiAgICB9CiAgICByZXR1cm4gTDsKICB9CiAgZnVuY3Rpb24gTmkodjIsIGIpIHsKICAgIGZvciAodmFyIEkyID0gdjIuU0laLCBUID0gSTIuQ3NpeiwgTCA9IHYyLnRpbGVzW2JdLCBaMiA9IDA7IFoyIDwgVDsgWjIrKykgewogICAgICB2YXIgaTIgPSBMLmNvbXBvbmVudHNbWjJdLCAkID0gdjIuY3VycmVudFRpbGUuUUNDW1oyXSAhPT0gdm9pZCAwID8gdjIuY3VycmVudFRpbGUuUUNDW1oyXSA6IHYyLmN1cnJlbnRUaWxlLlFDRDsKICAgICAgaTIucXVhbnRpemF0aW9uUGFyYW1ldGVycyA9ICQ7CiAgICAgIHZhciBlMiA9IHYyLmN1cnJlbnRUaWxlLkNPQ1taMl0gIT09IHZvaWQgMCA/IHYyLmN1cnJlbnRUaWxlLkNPQ1taMl0gOiB2Mi5jdXJyZW50VGlsZS5DT0Q7CiAgICAgIGkyLmNvZGluZ1N0eWxlUGFyYW1ldGVycyA9IGUyOwogICAgfQogICAgTC5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzID0gdjIuY3VycmVudFRpbGUuQ09EOwogIH0KICB2YXIgTDEgPSBmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIGIoSTIsIFQpIHsKICAgICAgdmFyIEwgPSBKcihNYXRoLm1heChJMiwgVCkpICsgMTsKICAgICAgdGhpcy5sZXZlbHMgPSBbXTsKICAgICAgZm9yICh2YXIgWjIgPSAwOyBaMiA8IEw7IFoyKyspIHsKICAgICAgICB2YXIgaTIgPSB7CiAgICAgICAgICB3aWR0aDogSTIsCiAgICAgICAgICBoZWlnaHQ6IFQsCiAgICAgICAgICBpdGVtczogW10KICAgICAgICB9OwogICAgICAgIHRoaXMubGV2ZWxzLnB1c2goaTIpLCBJMiA9IE1hdGguY2VpbChJMiAvIDIpLCBUID0gTWF0aC5jZWlsKFQgLyAyKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIGIucHJvdG90eXBlID0gewogICAgICByZXNldDogZnVuY3Rpb24oVCwgTCkgewogICAgICAgIGZvciAodmFyIFoyID0gMCwgaTIgPSAwLCAkOyBaMiA8IHRoaXMubGV2ZWxzLmxlbmd0aDsgKSB7CiAgICAgICAgICAkID0gdGhpcy5sZXZlbHNbWjJdOwogICAgICAgICAgdmFyIGUyID0gVCArIEwgKiAkLndpZHRoOwogICAgICAgICAgaWYgKCQuaXRlbXNbZTJdICE9PSB2b2lkIDApIHsKICAgICAgICAgICAgaTIgPSAkLml0ZW1zW2UyXTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICAkLmluZGV4ID0gZTIsIFQgPj49IDEsIEwgPj49IDEsIFoyKys7CiAgICAgICAgfQogICAgICAgIFoyLS0sICQgPSB0aGlzLmxldmVsc1taMl0sICQuaXRlbXNbJC5pbmRleF0gPSBpMiwgdGhpcy5jdXJyZW50TGV2ZWwgPSBaMiwgZGVsZXRlIHRoaXMudmFsdWU7CiAgICAgIH0sCiAgICAgIGluY3JlbWVudFZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgVCA9IHRoaXMubGV2ZWxzW3RoaXMuY3VycmVudExldmVsXTsKICAgICAgICBULml0ZW1zW1QuaW5kZXhdKys7CiAgICAgIH0sCiAgICAgIG5leHRMZXZlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIFQgPSB0aGlzLmN1cnJlbnRMZXZlbCwgTCA9IHRoaXMubGV2ZWxzW1RdLCBaMiA9IEwuaXRlbXNbTC5pbmRleF07CiAgICAgICAgcmV0dXJuIFQtLSwgVCA8IDAgPyAodGhpcy52YWx1ZSA9IFoyLCAhMSkgOiAodGhpcy5jdXJyZW50TGV2ZWwgPSBULCBMID0gdGhpcy5sZXZlbHNbVF0sIEwuaXRlbXNbTC5pbmRleF0gPSBaMiwgITApOwogICAgICB9CiAgICB9LCBiOwogIH0oKSwgcmUgPSBmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIGIoSTIsIFQsIEwpIHsKICAgICAgdmFyIFoyID0gSnIoTWF0aC5tYXgoSTIsIFQpKSArIDE7CiAgICAgIHRoaXMubGV2ZWxzID0gW107CiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBaMjsgaTIrKykgewogICAgICAgIGZvciAodmFyICQgPSBuZXcgVWludDhBcnJheShJMiAqIFQpLCBlMiA9IDAsIF8gPSAkLmxlbmd0aDsgZTIgPCBfOyBlMisrKQogICAgICAgICAgJFtlMl0gPSBMOwogICAgICAgIHZhciB0MiA9IHsKICAgICAgICAgIHdpZHRoOiBJMiwKICAgICAgICAgIGhlaWdodDogVCwKICAgICAgICAgIGl0ZW1zOiAkCiAgICAgICAgfTsKICAgICAgICB0aGlzLmxldmVscy5wdXNoKHQyKSwgSTIgPSBNYXRoLmNlaWwoSTIgLyAyKSwgVCA9IE1hdGguY2VpbChUIC8gMik7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBiLnByb3RvdHlwZSA9IHsKICAgICAgcmVzZXQ6IGZ1bmN0aW9uKFQsIEwsIFoyKSB7CiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHRoaXMubGV2ZWxzLmxlbmd0aDsgKSB7CiAgICAgICAgICB2YXIgJCA9IHRoaXMubGV2ZWxzW2kyXSwgZTIgPSBUICsgTCAqICQud2lkdGg7CiAgICAgICAgICAkLmluZGV4ID0gZTI7CiAgICAgICAgICB2YXIgXyA9ICQuaXRlbXNbZTJdOwogICAgICAgICAgaWYgKF8gPT09IDI1NSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBpZiAoXyA+IFoyKQogICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGV2ZWwgPSBpMiwgdGhpcy5wcm9wYWdhdGVWYWx1ZXMoKSwgITE7CiAgICAgICAgICBUID4+PSAxLCBMID4+PSAxLCBpMisrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGV2ZWwgPSBpMiAtIDEsICEwOwogICAgICB9LAogICAgICBpbmNyZW1lbnRWYWx1ZTogZnVuY3Rpb24oVCkgewogICAgICAgIHZhciBMID0gdGhpcy5sZXZlbHNbdGhpcy5jdXJyZW50TGV2ZWxdOwogICAgICAgIEwuaXRlbXNbTC5pbmRleF0gPSBUICsgMSwgdGhpcy5wcm9wYWdhdGVWYWx1ZXMoKTsKICAgICAgfSwKICAgICAgcHJvcGFnYXRlVmFsdWVzOiBmdW5jdGlvbigpIHsKICAgICAgICBmb3IgKHZhciBUID0gdGhpcy5jdXJyZW50TGV2ZWwsIEwgPSB0aGlzLmxldmVsc1tUXSwgWjIgPSBMLml0ZW1zW0wuaW5kZXhdOyAtLVQgPj0gMDsgKQogICAgICAgICAgTCA9IHRoaXMubGV2ZWxzW1RdLCBMLml0ZW1zW0wuaW5kZXhdID0gWjI7CiAgICAgIH0sCiAgICAgIG5leHRMZXZlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIFQgPSB0aGlzLmN1cnJlbnRMZXZlbCwgTCA9IHRoaXMubGV2ZWxzW1RdLCBaMiA9IEwuaXRlbXNbTC5pbmRleF07CiAgICAgICAgcmV0dXJuIEwuaXRlbXNbTC5pbmRleF0gPSAyNTUsIFQtLSwgVCA8IDAgPyAhMSA6ICh0aGlzLmN1cnJlbnRMZXZlbCA9IFQsIEwgPSB0aGlzLmxldmVsc1tUXSwgTC5pdGVtc1tMLmluZGV4XSA9IFoyLCAhMCk7CiAgICAgIH0KICAgIH0sIGI7CiAgfSgpLCBEMSA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGIgPSAxNywgSTIgPSAxOCwgVCA9IG5ldyBVaW50OEFycmF5KFsKICAgICAgMCwKICAgICAgNSwKICAgICAgOCwKICAgICAgMCwKICAgICAgMywKICAgICAgNywKICAgICAgOCwKICAgICAgMCwKICAgICAgNCwKICAgICAgNywKICAgICAgOCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMSwKICAgICAgNiwKICAgICAgOCwKICAgICAgMCwKICAgICAgMywKICAgICAgNywKICAgICAgOCwKICAgICAgMCwKICAgICAgNCwKICAgICAgNywKICAgICAgOCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMiwKICAgICAgNiwKICAgICAgOCwKICAgICAgMCwKICAgICAgMywKICAgICAgNywKICAgICAgOCwKICAgICAgMCwKICAgICAgNCwKICAgICAgNywKICAgICAgOCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMiwKICAgICAgNiwKICAgICAgOCwKICAgICAgMCwKICAgICAgMywKICAgICAgNywKICAgICAgOCwKICAgICAgMCwKICAgICAgNCwKICAgICAgNywKICAgICAgOCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMiwKICAgICAgNiwKICAgICAgOCwKICAgICAgMCwKICAgICAgMywKICAgICAgNywKICAgICAgOCwKICAgICAgMCwKICAgICAgNCwKICAgICAgNywKICAgICAgOAogICAgXSksIEwgPSBuZXcgVWludDhBcnJheShbCiAgICAgIDAsCiAgICAgIDMsCiAgICAgIDQsCiAgICAgIDAsCiAgICAgIDUsCiAgICAgIDcsCiAgICAgIDcsCiAgICAgIDAsCiAgICAgIDgsCiAgICAgIDgsCiAgICAgIDgsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDEsCiAgICAgIDMsCiAgICAgIDQsCiAgICAgIDAsCiAgICAgIDYsCiAgICAgIDcsCiAgICAgIDcsCiAgICAgIDAsCiAgICAgIDgsCiAgICAgIDgsCiAgICAgIDgsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDIsCiAgICAgIDMsCiAgICAgIDQsCiAgICAgIDAsCiAgICAgIDYsCiAgICAgIDcsCiAgICAgIDcsCiAgICAgIDAsCiAgICAgIDgsCiAgICAgIDgsCiAgICAgIDgsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDIsCiAgICAgIDMsCiAgICAgIDQsCiAgICAgIDAsCiAgICAgIDYsCiAgICAgIDcsCiAgICAgIDcsCiAgICAgIDAsCiAgICAgIDgsCiAgICAgIDgsCiAgICAgIDgsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgIDIsCiAgICAgIDMsCiAgICAgIDQsCiAgICAgIDAsCiAgICAgIDYsCiAgICAgIDcsCiAgICAgIDcsCiAgICAgIDAsCiAgICAgIDgsCiAgICAgIDgsCiAgICAgIDgKICAgIF0pLCBaMiA9IG5ldyBVaW50OEFycmF5KFsKICAgICAgMCwKICAgICAgMSwKICAgICAgMiwKICAgICAgMCwKICAgICAgMSwKICAgICAgMiwKICAgICAgMiwKICAgICAgMCwKICAgICAgMiwKICAgICAgMiwKICAgICAgMiwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMywKICAgICAgNCwKICAgICAgNSwKICAgICAgMCwKICAgICAgNCwKICAgICAgNSwKICAgICAgNSwKICAgICAgMCwKICAgICAgNSwKICAgICAgNSwKICAgICAgNSwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgNiwKICAgICAgNywKICAgICAgNywKICAgICAgMCwKICAgICAgNywKICAgICAgNywKICAgICAgNywKICAgICAgMCwKICAgICAgNywKICAgICAgNywKICAgICAgNywKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgOCwKICAgICAgOCwKICAgICAgOCwKICAgICAgMCwKICAgICAgOCwKICAgICAgOCwKICAgICAgOCwKICAgICAgMCwKICAgICAgOCwKICAgICAgOCwKICAgICAgOCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgMCwKICAgICAgOCwKICAgICAgOCwKICAgICAgOCwKICAgICAgMCwKICAgICAgOCwKICAgICAgOCwKICAgICAgOCwKICAgICAgMCwKICAgICAgOCwKICAgICAgOCwKICAgICAgOAogICAgXSk7CiAgICBmdW5jdGlvbiBpMigkLCBlMiwgXywgdDIsIEIyKSB7CiAgICAgIHRoaXMud2lkdGggPSAkLCB0aGlzLmhlaWdodCA9IGUyOwogICAgICBsZXQgVjI7CiAgICAgIF8gPT09ICJISCIgPyBWMiA9IFoyIDogXyA9PT0gIkhMIiA/IFYyID0gTCA6IFYyID0gVCwgdGhpcy5jb250ZXh0TGFiZWxUYWJsZSA9IFYyOwogICAgICB2YXIgeTIgPSAkICogZTI7CiAgICAgIHRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlID0gbmV3IFVpbnQ4QXJyYXkoeTIpLCB0aGlzLmNvZWZmaWNlbnRzU2lnbiA9IG5ldyBVaW50OEFycmF5KHkyKTsKICAgICAgbGV0IEEyOwogICAgICBCMiA+IDE0ID8gQTIgPSBuZXcgVWludDMyQXJyYXkoeTIpIDogQjIgPiA2ID8gQTIgPSBuZXcgVWludDE2QXJyYXkoeTIpIDogQTIgPSBuZXcgVWludDhBcnJheSh5MiksIHRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUgPSBBMiwgdGhpcy5wcm9jZXNzaW5nRmxhZ3MgPSBuZXcgVWludDhBcnJheSh5Mik7CiAgICAgIHZhciBsMiA9IG5ldyBVaW50OEFycmF5KHkyKTsKICAgICAgaWYgKHQyICE9PSAwKQogICAgICAgIGZvciAodmFyIGEyID0gMDsgYTIgPCB5MjsgYTIrKykKICAgICAgICAgIGwyW2EyXSA9IHQyOwogICAgICB0aGlzLmJpdHNEZWNvZGVkID0gbDIsIHRoaXMucmVzZXQoKTsKICAgIH0KICAgIHJldHVybiBpMi5wcm90b3R5cGUgPSB7CiAgICAgIHNldERlY29kZXI6IGZ1bmN0aW9uKGUyKSB7CiAgICAgICAgdGhpcy5kZWNvZGVyID0gZTI7CiAgICAgIH0sCiAgICAgIHJlc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLmNvbnRleHRzID0gbmV3IEludDhBcnJheSgxOSksIHRoaXMuY29udGV4dHNbMF0gPSA4LCB0aGlzLmNvbnRleHRzW2JdID0gOTIsIHRoaXMuY29udGV4dHNbSTJdID0gNjsKICAgICAgfSwKICAgICAgc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlOiBmdW5jdGlvbihlMiwgXywgdDIpIHsKICAgICAgICB2YXIgQjIgPSB0aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSwgVjIgPSB0aGlzLndpZHRoLCB5MiA9IHRoaXMuaGVpZ2h0LCBBMiA9IF8gPiAwLCBsMiA9IF8gKyAxIDwgVjIsIGEyOwogICAgICAgIGUyID4gMCAmJiAoYTIgPSB0MiAtIFYyLCBBMiAmJiAoQjJbYTIgLSAxXSArPSAxNiksIGwyICYmIChCMlthMiArIDFdICs9IDE2KSwgQjJbYTJdICs9IDQpLCBlMiArIDEgPCB5MiAmJiAoYTIgPSB0MiArIFYyLCBBMiAmJiAoQjJbYTIgLSAxXSArPSAxNiksIGwyICYmIChCMlthMiArIDFdICs9IDE2KSwgQjJbYTJdICs9IDQpLCBBMiAmJiAoQjJbdDIgLSAxXSArPSAxKSwgbDIgJiYgKEIyW3QyICsgMV0gKz0gMSksIEIyW3QyXSB8PSAxMjg7CiAgICAgIH0sCiAgICAgIHJ1blNpZ25pZmljYW5jZVByb3BhZ2F0aW9uUGFzczogZnVuY3Rpb24oKSB7CiAgICAgICAgZm9yICh2YXIgZTIgPSB0aGlzLmRlY29kZXIsIF8gPSB0aGlzLndpZHRoLCB0MiA9IHRoaXMuaGVpZ2h0LCBCMiA9IHRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUsIFYyID0gdGhpcy5jb2VmZmljZW50c1NpZ24sIHkyID0gdGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2UsIEEyID0gdGhpcy5wcm9jZXNzaW5nRmxhZ3MsIGwyID0gdGhpcy5jb250ZXh0cywgYTIgPSB0aGlzLmNvbnRleHRMYWJlbFRhYmxlLCBKMiA9IHRoaXMuYml0c0RlY29kZWQsIGoyID0gLTIsIEsyID0gMSwgYjIgPSAyLCBUMiA9IDA7IFQyIDwgdDI7IFQyICs9IDQpCiAgICAgICAgICBmb3IgKHZhciB3MCA9IDA7IHcwIDwgXzsgdzArKykKICAgICAgICAgICAgZm9yICh2YXIgJDIgPSBUMiAqIF8gKyB3MCwgSDIgPSAwOyBIMiA8IDQ7IEgyKyssICQyICs9IF8pIHsKICAgICAgICAgICAgICB2YXIgRjAgPSBUMiArIEgyOwogICAgICAgICAgICAgIGlmIChGMCA+PSB0MikKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGlmIChBMlskMl0gJj0gajIsICEoQjJbJDJdIHx8ICF5MlskMl0pKSB7CiAgICAgICAgICAgICAgICB2YXIgbTAgPSBhMlt5MlskMl1dLCBTMCA9IGUyLnJlYWRCaXQobDIsIG0wKTsKICAgICAgICAgICAgICAgIGlmIChTMCkgewogICAgICAgICAgICAgICAgICB2YXIgdjAgPSB0aGlzLmRlY29kZVNpZ25CaXQoRjAsIHcwLCAkMik7CiAgICAgICAgICAgICAgICAgIFYyWyQyXSA9IHYwLCBCMlskMl0gPSAxLCB0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZShGMCwgdzAsICQyKSwgQTJbJDJdIHw9IGIyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgSjJbJDJdKyssIEEyWyQyXSB8PSBLMjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgfSwKICAgICAgZGVjb2RlU2lnbkJpdDogZnVuY3Rpb24oZTIsIF8sIHQyKSB7CiAgICAgICAgdmFyIEIyID0gdGhpcy53aWR0aCwgVjIgPSB0aGlzLmhlaWdodCwgeTIgPSB0aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLCBBMiA9IHRoaXMuY29lZmZpY2VudHNTaWduLCBsMiwgYTIsIEoyLCBqMiwgSzIsIGIyOwogICAgICAgIGoyID0gXyA+IDAgJiYgeTJbdDIgLSAxXSAhPT0gMCwgXyArIDEgPCBCMiAmJiB5Mlt0MiArIDFdICE9PSAwID8gKEoyID0gQTJbdDIgKyAxXSwgajIgPyAoYTIgPSBBMlt0MiAtIDFdLCBsMiA9IDEgLSBKMiAtIGEyKSA6IGwyID0gMSAtIEoyIC0gSjIpIDogajIgPyAoYTIgPSBBMlt0MiAtIDFdLCBsMiA9IDEgLSBhMiAtIGEyKSA6IGwyID0gMDsKICAgICAgICB2YXIgVDIgPSAzICogbDI7CiAgICAgICAgcmV0dXJuIGoyID0gZTIgPiAwICYmIHkyW3QyIC0gQjJdICE9PSAwLCBlMiArIDEgPCBWMiAmJiB5Mlt0MiArIEIyXSAhPT0gMCA/IChKMiA9IEEyW3QyICsgQjJdLCBqMiA/IChhMiA9IEEyW3QyIC0gQjJdLCBsMiA9IDEgLSBKMiAtIGEyICsgVDIpIDogbDIgPSAxIC0gSjIgLSBKMiArIFQyKSA6IGoyID8gKGEyID0gQTJbdDIgLSBCMl0sIGwyID0gMSAtIGEyIC0gYTIgKyBUMikgOiBsMiA9IFQyLCBsMiA+PSAwID8gKEsyID0gOSArIGwyLCBiMiA9IHRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsIEsyKSkgOiAoSzIgPSA5IC0gbDIsIGIyID0gdGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cywgSzIpIF4gMSksIGIyOwogICAgICB9LAogICAgICBydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzczogZnVuY3Rpb24oKSB7CiAgICAgICAgZm9yICh2YXIgZTIgPSB0aGlzLmRlY29kZXIsIF8gPSB0aGlzLndpZHRoLCB0MiA9IHRoaXMuaGVpZ2h0LCBCMiA9IHRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUsIFYyID0gdGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2UsIHkyID0gdGhpcy5jb250ZXh0cywgQTIgPSB0aGlzLmJpdHNEZWNvZGVkLCBsMiA9IHRoaXMucHJvY2Vzc2luZ0ZsYWdzLCBhMiA9IDEsIEoyID0gMiwgajIgPSBfICogdDIsIEsyID0gXyAqIDQsIGIyID0gMCwgVDI7IGIyIDwgajI7IGIyID0gVDIpIHsKICAgICAgICAgIFQyID0gTWF0aC5taW4oajIsIGIyICsgSzIpOwogICAgICAgICAgZm9yICh2YXIgdzAgPSAwOyB3MCA8IF87IHcwKyspCiAgICAgICAgICAgIGZvciAodmFyICQyID0gYjIgKyB3MDsgJDIgPCBUMjsgJDIgKz0gXykKICAgICAgICAgICAgICBpZiAoISghQjJbJDJdIHx8IGwyWyQyXSAmIGEyKSkgewogICAgICAgICAgICAgICAgdmFyIEgyID0gMTY7CiAgICAgICAgICAgICAgICBpZiAobDJbJDJdICYgSjIpIHsKICAgICAgICAgICAgICAgICAgbDJbJDJdIF49IEoyOwogICAgICAgICAgICAgICAgICB2YXIgRjAgPSBWMlskMl0gJiAxMjc7CiAgICAgICAgICAgICAgICAgIEgyID0gRjAgPT09IDAgPyAxNSA6IDE0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIG0wID0gZTIucmVhZEJpdCh5MiwgSDIpOwogICAgICAgICAgICAgICAgQjJbJDJdID0gQjJbJDJdIDw8IDEgfCBtMCwgQTJbJDJdKyssIGwyWyQyXSB8PSBhMjsKICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LAogICAgICBydW5DbGVhbnVwUGFzczogZnVuY3Rpb24oKSB7CiAgICAgICAgZm9yICh2YXIgZTIgPSB0aGlzLmRlY29kZXIsIF8gPSB0aGlzLndpZHRoLCB0MiA9IHRoaXMuaGVpZ2h0LCBCMiA9IHRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLCBWMiA9IHRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUsIHkyID0gdGhpcy5jb2VmZmljZW50c1NpZ24sIEEyID0gdGhpcy5jb250ZXh0cywgbDIgPSB0aGlzLmNvbnRleHRMYWJlbFRhYmxlLCBhMiA9IHRoaXMuYml0c0RlY29kZWQsIEoyID0gdGhpcy5wcm9jZXNzaW5nRmxhZ3MsIGoyID0gMSwgSzIgPSAyLCBiMiA9IF8sIFQyID0gXyAqIDIsIHcwID0gXyAqIDMsICQyLCBIMiA9IDA7IEgyIDwgdDI7IEgyID0gJDIpIHsKICAgICAgICAgICQyID0gTWF0aC5taW4oSDIgKyA0LCB0Mik7CiAgICAgICAgICBmb3IgKHZhciBGMCA9IEgyICogXywgbTAgPSBIMiArIDMgPCB0MiwgUzAgPSAwOyBTMCA8IF87IFMwKyspIHsKICAgICAgICAgICAgdmFyIHYwID0gRjAgKyBTMCwgRDAgPSBtMCAmJiBKMlt2MF0gPT09IDAgJiYgSjJbdjAgKyBiMl0gPT09IDAgJiYgSjJbdjAgKyBUMl0gPT09IDAgJiYgSjJbdjAgKyB3MF0gPT09IDAgJiYgQjJbdjBdID09PSAwICYmIEIyW3YwICsgYjJdID09PSAwICYmIEIyW3YwICsgVDJdID09PSAwICYmIEIyW3YwICsgdzBdID09PSAwLCAkMCA9IDAsIEcwID0gdjAsIG8xID0gSDIsIEMxOwogICAgICAgICAgICBpZiAoRDApIHsKICAgICAgICAgICAgICB2YXIgTTEgPSBlMi5yZWFkQml0KAogICAgICAgICAgICAgICAgQTIsCiAgICAgICAgICAgICAgICBJMgogICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgaWYgKCFNMSkgewogICAgICAgICAgICAgICAgYTJbdjBdKyssIGEyW3YwICsgYjJdKyssIGEyW3YwICsgVDJdKyssIGEyW3YwICsgdzBdKys7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgJDAgPSBlMi5yZWFkQml0KEEyLCBiKSA8PCAxIHwgZTIucmVhZEJpdChBMiwgYiksICQwICE9PSAwICYmIChvMSA9IEgyICsgJDAsIEcwICs9ICQwICogXyksIEMxID0gdGhpcy5kZWNvZGVTaWduQml0KG8xLCBTMCwgRzApLCB5MltHMF0gPSBDMSwgVjJbRzBdID0gMSwgdGhpcy5zZXROZWlnaGJvcnNTaWduaWZpY2FuY2UobzEsIFMwLCBHMCksIEoyW0cwXSB8PSBLMiwgRzAgPSB2MDsKICAgICAgICAgICAgICBmb3IgKHZhciBGMSA9IEgyOyBGMSA8PSBvMTsgRjErKywgRzAgKz0gXykKICAgICAgICAgICAgICAgIGEyW0cwXSsrOwogICAgICAgICAgICAgICQwKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChvMSA9IEgyICsgJDA7IG8xIDwgJDI7IG8xKyssIEcwICs9IF8pCiAgICAgICAgICAgICAgaWYgKCEoVjJbRzBdIHx8IEoyW0cwXSAmIGoyKSkgewogICAgICAgICAgICAgICAgdmFyIFMxID0gbDJbQjJbRzBdXSwgczEgPSBlMi5yZWFkQml0KEEyLCBTMSk7CiAgICAgICAgICAgICAgICBzMSA9PT0gMSAmJiAoQzEgPSB0aGlzLmRlY29kZVNpZ25CaXQobzEsIFMwLCBHMCksIHkyW0cwXSA9IEMxLCBWMltHMF0gPSAxLCB0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZShvMSwgUzAsIEcwKSwgSjJbRzBdIHw9IEsyKSwgYTJbRzBdKys7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgY2hlY2tTZWdtZW50YXRpb25TeW1ib2w6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlMiA9IHRoaXMuZGVjb2RlciwgXyA9IHRoaXMuY29udGV4dHMsIHQyID0gZTIucmVhZEJpdChfLCBiKSA8PCAzIHwgZTIucmVhZEJpdChfLCBiKSA8PCAyIHwgZTIucmVhZEJpdChfLCBiKSA8PCAxIHwgZTIucmVhZEJpdChfLCBiKTsKICAgICAgICBpZiAodDIgIT09IDEwKQogICAgICAgICAgdGhyb3cgbmV3IEUxKCJJbnZhbGlkIHNlZ21lbnRhdGlvbiBzeW1ib2wiKTsKICAgICAgfQogICAgfSwgaTI7CiAgfSgpLCBVMSA9IGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gYigpIHsKICAgIH0KICAgIHJldHVybiBiLnByb3RvdHlwZS5jYWxjdWxhdGUgPSBmdW5jdGlvbihULCBMLCBaMikgewogICAgICBmb3IgKHZhciBpMiA9IFRbMF0sICQgPSAxLCBlMiA9IFQubGVuZ3RoOyAkIDwgZTI7ICQrKykKICAgICAgICBpMiA9IHRoaXMuaXRlcmF0ZShpMiwgVFskXSwgTCwgWjIpOwogICAgICByZXR1cm4gaTI7CiAgICB9LCBiLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbihULCBMLCBaMikgewogICAgICB2YXIgaTIgPSBMIC0gMSwgJCA9IEwgKyAxLCBlMiA9IEwgKyBaMiAtIDIsIF8gPSBMICsgWjI7CiAgICAgIFRbaTItLV0gPSBUWyQrK10sIFRbXysrXSA9IFRbZTItLV0sIFRbaTItLV0gPSBUWyQrK10sIFRbXysrXSA9IFRbZTItLV0sIFRbaTItLV0gPSBUWyQrK10sIFRbXysrXSA9IFRbZTItLV0sIFRbaTJdID0gVFskXSwgVFtfXSA9IFRbZTJdOwogICAgfSwgYi5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uKFQsIEwsIFoyLCBpMikgewogICAgICB2YXIgJCA9IFQud2lkdGgsIGUyID0gVC5oZWlnaHQsIF8gPSBULml0ZW1zLCB0MiA9IEwud2lkdGgsIEIyID0gTC5oZWlnaHQsIFYyID0gTC5pdGVtcywgeTIsIEEyLCBsMiwgYTIsIEoyLCBqMjsKICAgICAgZm9yIChsMiA9IDAsIHkyID0gMDsgeTIgPCBlMjsgeTIrKykKICAgICAgICBmb3IgKGEyID0geTIgKiAyICogdDIsIEEyID0gMDsgQTIgPCAkOyBBMisrLCBsMisrLCBhMiArPSAyKQogICAgICAgICAgVjJbYTJdID0gX1tsMl07CiAgICAgIF8gPSBULml0ZW1zID0gbnVsbDsKICAgICAgdmFyIEsyID0gNCwgYjIgPSBuZXcgRmxvYXQzMkFycmF5KHQyICsgMiAqIEsyKTsKICAgICAgaWYgKHQyID09PSAxKSB7CiAgICAgICAgaWYgKFoyICYgMSkKICAgICAgICAgIGZvciAoajIgPSAwLCBsMiA9IDA7IGoyIDwgQjI7IGoyKyssIGwyICs9IHQyKQogICAgICAgICAgICBWMltsMl0gKj0gMC41OwogICAgICB9IGVsc2UKICAgICAgICBmb3IgKGoyID0gMCwgbDIgPSAwOyBqMiA8IEIyOyBqMisrLCBsMiArPSB0MikKICAgICAgICAgIGIyLnNldChWMi5zdWJhcnJheShsMiwgbDIgKyB0MiksIEsyKSwgdGhpcy5leHRlbmQoYjIsIEsyLCB0MiksIHRoaXMuZmlsdGVyKGIyLCBLMiwgdDIpLCBWMi5zZXQoCiAgICAgICAgICAgIGIyLnN1YmFycmF5KEsyLCBLMiArIHQyKSwKICAgICAgICAgICAgbDIKICAgICAgICAgICk7CiAgICAgIHZhciBUMiA9IDE2LCB3MCA9IFtdOwogICAgICBmb3IgKHkyID0gMDsgeTIgPCBUMjsgeTIrKykKICAgICAgICB3MC5wdXNoKG5ldyBGbG9hdDMyQXJyYXkoQjIgKyAyICogSzIpKTsKICAgICAgdmFyICQyLCBIMiA9IDA7CiAgICAgIGlmIChUID0gSzIgKyBCMiwgQjIgPT09IDEpIHsKICAgICAgICBpZiAoaTIgJiAxKQogICAgICAgICAgZm9yIChKMiA9IDA7IEoyIDwgdDI7IEoyKyspCiAgICAgICAgICAgIFYyW0oyXSAqPSAwLjU7CiAgICAgIH0gZWxzZQogICAgICAgIGZvciAoSjIgPSAwOyBKMiA8IHQyOyBKMisrKSB7CiAgICAgICAgICBpZiAoSDIgPT09IDApIHsKICAgICAgICAgICAgZm9yIChUMiA9IE1hdGgubWluKHQyIC0gSjIsIFQyKSwgbDIgPSBKMiwgYTIgPSBLMjsgYTIgPCBUOyBsMiArPSB0MiwgYTIrKykKICAgICAgICAgICAgICBmb3IgKCQyID0gMDsgJDIgPCBUMjsgJDIrKykKICAgICAgICAgICAgICAgIHcwWyQyXVthMl0gPSBWMltsMiArICQyXTsKICAgICAgICAgICAgSDIgPSBUMjsKICAgICAgICAgIH0KICAgICAgICAgIEgyLS07CiAgICAgICAgICB2YXIgRjAgPSB3MFtIMl07CiAgICAgICAgICBpZiAodGhpcy5leHRlbmQoRjAsIEsyLCBCMiksIHRoaXMuZmlsdGVyKEYwLCBLMiwgQjIpLCBIMiA9PT0gMCkKICAgICAgICAgICAgZm9yIChsMiA9IEoyIC0gVDIgKyAxLCBhMiA9IEsyOyBhMiA8IFQ7IGwyICs9IHQyLCBhMisrKQogICAgICAgICAgICAgIGZvciAoJDIgPSAwOyAkMiA8IFQyOyAkMisrKQogICAgICAgICAgICAgICAgVjJbbDIgKyAkMl0gPSB3MFskMl1bYTJdOwogICAgICAgIH0KICAgICAgcmV0dXJuIHsKICAgICAgICB3aWR0aDogdDIsCiAgICAgICAgaGVpZ2h0OiBCMiwKICAgICAgICBpdGVtczogVjIKICAgICAgfTsKICAgIH0sIGI7CiAgfSgpLCBpaSA9IGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gYigpIHsKICAgICAgVTEuY2FsbCh0aGlzKTsKICAgIH0KICAgIHJldHVybiBiLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVTEucHJvdG90eXBlKSwgYi5wcm90b3R5cGUuZmlsdGVyID0gZnVuY3Rpb24oVCwgTCwgWjIpIHsKICAgICAgdmFyIGkyID0gWjIgPj4gMTsKICAgICAgTCA9IEwgfCAwOwogICAgICB2YXIgJCwgZTIsIF8sIHQyLCBCMiA9IC0xLjU4NjEzNDM0MjA1OTkyNCwgVjIgPSAtMC4wNTI5ODAxMTg1NzI5NjEsIHkyID0gMC44ODI5MTEwNzU1MzA5MzQsIEEyID0gMC40NDM1MDY4NTIwNDM5NzEsIGwyID0gMS4yMzAxNzQxMDQ5MTQwMDEsIGEyID0gMSAvIGwyOwogICAgICBmb3IgKCQgPSBMIC0gMywgZTIgPSBpMiArIDQ7IGUyLS07ICQgKz0gMikKICAgICAgICBUWyRdICo9IGEyOwogICAgICBmb3IgKCQgPSBMIC0gMiwgXyA9IEEyICogVFskIC0gMV0sIGUyID0gaTIgKyAzOyBlMi0tICYmICh0MiA9IEEyICogVFskICsgMV0sIFRbJF0gPSBsMiAqIFRbJF0gLSBfIC0gdDIsIGUyLS0pOyAkICs9IDIpCiAgICAgICAgJCArPSAyLCBfID0gQTIgKiBUWyQgKyAxXSwgVFskXSA9IGwyICogVFskXSAtIF8gLSB0MjsKICAgICAgZm9yICgkID0gTCAtIDEsIF8gPSB5MiAqIFRbJCAtIDFdLCBlMiA9IGkyICsgMjsgZTItLSAmJiAodDIgPSB5MiAqIFRbJCArIDFdLCBUWyRdIC09IF8gKyB0MiwgZTItLSk7ICQgKz0gMikKICAgICAgICAkICs9IDIsIF8gPSB5MiAqIFRbJCArIDFdLCBUWyRdIC09IF8gKyB0MjsKICAgICAgZm9yICgkID0gTCwgXyA9IFYyICogVFskIC0gMV0sIGUyID0gaTIgKyAxOyBlMi0tICYmICh0MiA9IFYyICogVFskICsgMV0sIFRbJF0gLT0gXyArIHQyLCBlMi0tKTsgJCArPSAyKQogICAgICAgICQgKz0gMiwgXyA9IFYyICogVFskICsgMV0sIFRbJF0gLT0gXyArIHQyOwogICAgICBpZiAoaTIgIT09IDApCiAgICAgICAgZm9yICgkID0gTCArIDEsIF8gPSBCMiAqIFRbJCAtIDFdLCBlMiA9IGkyOyBlMi0tICYmICh0MiA9IEIyICogVFskICsgMV0sIFRbJF0gLT0gXyArIHQyLCBlMi0tKTsgJCArPSAyKQogICAgICAgICAgJCArPSAyLCBfID0gQjIgKiBUWyQgKyAxXSwgVFskXSAtPSBfICsgdDI7CiAgICB9LCBiOwogIH0oKSwgVzEgPSBmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIGIoKSB7CiAgICAgIFUxLmNhbGwodGhpcyk7CiAgICB9CiAgICByZXR1cm4gYi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFUxLnByb3RvdHlwZSksIGIucHJvdG90eXBlLmZpbHRlciA9IGZ1bmN0aW9uKFQsIEwsIFoyKSB7CiAgICAgIHZhciBpMiA9IFoyID4+IDE7CiAgICAgIEwgPSBMIHwgMDsKICAgICAgdmFyICQsIGUyOwogICAgICBmb3IgKCQgPSBMLCBlMiA9IGkyICsgMTsgZTItLTsgJCArPSAyKQogICAgICAgIFRbJF0gLT0gVFskIC0gMV0gKyBUWyQgKyAxXSArIDIgPj4gMjsKICAgICAgZm9yICgkID0gTCArIDEsIGUyID0gaTI7IGUyLS07ICQgKz0gMikKICAgICAgICBUWyRdICs9IFRbJCAtIDFdICsgVFskICsgMV0gPj4gMTsKICAgIH0sIGI7CiAgfSgpOwogIHJldHVybiBmMDsKfSgpLCB4dCA9IHsgSnB4SW1hZ2U6IFB0IH07CmNvbnN0IHsgSnB4SW1hZ2U6IFR0IH0gPSB4dDsKdmFyIF9mID0geyBKcHhJbWFnZTogVHQgfSwgenQgPSAvKiBAX19QVVJFX18gKi8gTGYoX2YpLCBkdCA9IC8qIEBfX1BVUkVfXyAqLyBFdCh7CiAgX19wcm90b19fOiBudWxsLAogIGRlZmF1bHQ6IHp0Cn0sIFtfZl0pLCBiZiA9IHsgZXhwb3J0czoge30gfSwgS3QgPSB7fSwganQgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSh7CiAgX19wcm90b19fOiBudWxsLAogIGRlZmF1bHQ6IEt0Cn0pLCBMdCA9IC8qIEBfX1BVUkVfXyAqLyBEdChqdCk7CihmdW5jdGlvbihPMiwgdTApIHsKICB2YXIgZjAgPSAoKCkgPT4gewogICAgdmFyIEIwOwogICAgdmFyIGwwID0gdHlwZW9mIGRvY3VtZW50IDwgInUiID8gKEIwID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdCkgPT0gbnVsbCA/IHZvaWQgMCA6IEIwLnNyYyA6IHZvaWQgMDsKICAgIHJldHVybiB0eXBlb2YgX19maWxlbmFtZSA8ICJ1IiAmJiAobDAgPSBsMCB8fCBfX2ZpbGVuYW1lKSwgZnVuY3Rpb24oWjAgPSB7fSkgewogICAgICB2YXIgczAsIEMyID0gWjAsIFEwLCBWMSwgaWUgPSBuZXcgUHJvbWlzZSgoViwgWSkgPT4gewogICAgICAgIFEwID0gViwgVjEgPSBZOwogICAgICB9KSwgWDEgPSB0eXBlb2Ygd2luZG93ID09ICJvYmplY3QiLCB1MSA9IHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSA8ICJ1IiwgSzAgPSB0eXBlb2YgcHJvY2VzcyA9PSAib2JqZWN0IiAmJiB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyA9PSAib2JqZWN0IiAmJiB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlID09ICJzdHJpbmciICYmIHByb2Nlc3MudHlwZSAhPSAicmVuZGVyZXIiLCBYMCA9IE9iamVjdC5hc3NpZ24oe30sIEMyKSwgUjAgPSAiLi90aGlzLnByb2dyYW0iLCBBMSA9ICIiOwogICAgICBmdW5jdGlvbiBTaShWKSB7CiAgICAgICAgcmV0dXJuIEMyLmxvY2F0ZUZpbGUgPyBDMi5sb2NhdGVGaWxlKFYsIEExKSA6IEExICsgVjsKICAgICAgfQogICAgICB2YXIgRWUsIHZlOwogICAgICBpZiAoSzApIHsKICAgICAgICB2YXIgZWkgPSBMdDsKICAgICAgICBBMSA9IF9fZGlybmFtZSArICIvIiwgdmUgPSAoVikgPT4gewogICAgICAgICAgViA9IEgyKFYpID8gbmV3IFVSTChWKSA6IFY7CiAgICAgICAgICB2YXIgWSA9IGVpLnJlYWRGaWxlU3luYyhWKTsKICAgICAgICAgIHJldHVybiBZOwogICAgICAgIH0sIEVlID0gYXN5bmMgKFYsIFkgPSAhMCkgPT4gewogICAgICAgICAgViA9IEgyKFYpID8gbmV3IFVSTChWKSA6IFY7CiAgICAgICAgICB2YXIgUyA9IGVpLnJlYWRGaWxlU3luYyhWLCBZID8gdm9pZCAwIDogInV0ZjgiKTsKICAgICAgICAgIHJldHVybiBTOwogICAgICAgIH0sICFDMi50aGlzUHJvZ3JhbSAmJiBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSAmJiAoUjAgPSBwcm9jZXNzLmFyZ3ZbMV0ucmVwbGFjZSgvXFwvZywgIi8iKSksIHByb2Nlc3MuYXJndi5zbGljZSgyKTsKICAgICAgfSBlbHNlIChYMSB8fCB1MSkgJiYgKHUxID8gQTEgPSBzZWxmLmxvY2F0aW9uLmhyZWYgOiB0eXBlb2YgZG9jdW1lbnQgPCAidSIgJiYgZG9jdW1lbnQuY3VycmVudFNjcmlwdCAmJiAoQTEgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyksIGwwICYmIChBMSA9IGwwKSwgQTEuc3RhcnRzV2l0aCgiYmxvYjoiKSA/IEExID0gIiIgOiBBMSA9IEExLnN1YnN0cigwLCBBMS5yZXBsYWNlKC9bPyNdLiovLCAiIikubGFzdEluZGV4T2YoIi8iKSArIDEpLCB1MSAmJiAodmUgPSAoVikgPT4gewogICAgICAgIHZhciBZID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgcmV0dXJuIFkub3BlbigiR0VUIiwgViwgITEpLCBZLnJlc3BvbnNlVHlwZSA9ICJhcnJheWJ1ZmZlciIsIFkuc2VuZChudWxsKSwgbmV3IFVpbnQ4QXJyYXkoWS5yZXNwb25zZSk7CiAgICAgIH0pLCBFZSA9IGFzeW5jIChWKSA9PiB7CiAgICAgICAgaWYgKEgyKFYpKQogICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChTLCBLKSA9PiB7CiAgICAgICAgICAgIHZhciByMiA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICAgICByMi5vcGVuKCJHRVQiLCBWLCAhMCksIHIyLnJlc3BvbnNlVHlwZSA9ICJhcnJheWJ1ZmZlciIsIHIyLm9ubG9hZCA9ICgpID0+IHsKICAgICAgICAgICAgICBpZiAocjIuc3RhdHVzID09IDIwMCB8fCByMi5zdGF0dXMgPT0gMCAmJiByMi5yZXNwb25zZSkgewogICAgICAgICAgICAgICAgUyhyMi5yZXNwb25zZSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIEsocjIuc3RhdHVzKTsKICAgICAgICAgICAgfSwgcjIub25lcnJvciA9IEssIHIyLnNlbmQobnVsbCk7CiAgICAgICAgICB9KTsKICAgICAgICB2YXIgWSA9IGF3YWl0IGZldGNoKFYsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CiAgICAgICAgaWYgKFkub2spCiAgICAgICAgICByZXR1cm4gWS5hcnJheUJ1ZmZlcigpOwogICAgICAgIHRocm93IG5ldyBFcnJvcihZLnN0YXR1cyArICIgOiAiICsgWS51cmwpOwogICAgICB9KTsKICAgICAgdmFyIE5pID0gQzIucHJpbnQgfHwgY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwgTDEgPSBDMi5wcmludEVyciB8fCBjb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSk7CiAgICAgIE9iamVjdC5hc3NpZ24oQzIsIFgwKSwgWDAgPSBudWxsLCBDMi5hcmd1bWVudHMgJiYgQzIuYXJndW1lbnRzLCBDMi50aGlzUHJvZ3JhbSAmJiAoUjAgPSBDMi50aGlzUHJvZ3JhbSk7CiAgICAgIHZhciByZSA9IEMyLndhc21CaW5hcnksIEQxID0geyBNZW1vcnk6IGZ1bmN0aW9uKFYpIHsKICAgICAgICB0aGlzLmJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihWLmluaXRpYWwgKiA2NTUzNik7CiAgICAgIH0sIE1vZHVsZTogZnVuY3Rpb24oVikgewogICAgICB9LCBJbnN0YW5jZTogZnVuY3Rpb24oViwgWSkgewogICAgICAgIHRoaXMuZXhwb3J0cyA9IC8vIEVNU0NSSVBURU5fU1RBUlRfQVNNCiAgICAgICAgZnVuY3Rpb24oSykgewogICAgICAgICAgZnVuY3Rpb24gcjIoVjApIHsKICAgICAgICAgICAgcmV0dXJuIFYwLnNldCA9IGZ1bmN0aW9uKGowLCBGKSB7CiAgICAgICAgICAgICAgdGhpc1tqMF0gPSBGOwogICAgICAgICAgICB9LCBWMC5nZXQgPSBmdW5jdGlvbihqMCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzW2owXTsKICAgICAgICAgICAgfSwgVjA7CiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKHZhciBNLCBXMiA9IG5ldyBVaW50OEFycmF5KDEyMyksIHMyID0gMjU7IHMyID49IDA7IC0tczIpCiAgICAgICAgICAgIFcyWzQ4ICsgczJdID0gNTIgKyBzMiwgVzJbNjUgKyBzMl0gPSBzMiwgVzJbOTcgKyBzMl0gPSAyNiArIHMyOwogICAgICAgICAgVzJbNDNdID0gNjIsIFcyWzQ3XSA9IDYzOwogICAgICAgICAgZnVuY3Rpb24gTihWMCwgajAsIEYpIHsKICAgICAgICAgICAgZm9yICh2YXIgdTIsIGUsIEkgPSAwLCBHMiA9IGowLCBkID0gRi5sZW5ndGgsIEcgPSBqMCArIChkICogMyA+PiAyKSAtIChGW2QgLSAyXSA9PSAiPSIpIC0gKEZbZCAtIDFdID09ICI9Iik7IEkgPCBkOyBJICs9IDQpCiAgICAgICAgICAgICAgdTIgPSBXMltGLmNoYXJDb2RlQXQoSSArIDEpXSwgZSA9IFcyW0YuY2hhckNvZGVBdChJICsgMildLCBWMFtHMisrXSA9IFcyW0YuY2hhckNvZGVBdChJKV0gPDwgMiB8IHUyID4+IDQsIEcyIDwgRyAmJiAoVjBbRzIrK10gPSB1MiA8PCA0IHwgZSA+PiAyKSwgRzIgPCBHICYmIChWMFtHMisrXSA9IGUgPDwgNiB8IFcyW0YuY2hhckNvZGVBdChJICsgMyldKTsKICAgICAgICAgIH0KICAgICAgICAgIGZ1bmN0aW9uIE4yKFYwKSB7CiAgICAgICAgICAgIE4oTSwgMTAyNCwgImMyVjBVWFZoYkdsMGVRQmpZVzV1YjNRZ1lXeHNiMk5oZEdVZ2IzQnFYM1JqWkY5elpXZGZaR0YwWVY5amFIVnVhMTkwS2lCaGNuSmhlUUJWYVc1ME9FTnNZVzF3WldSQmNuSmhlUUF0S3lBZ0lEQllNSGdBTFRCWUt6QllJREJZTFRCNEt6QjRJREI0QUhWdWMybG5ibVZrSUhOb2IzSjBBR052YlhCdmJtVnVkRU52ZFc1MEFGQnZhVzUwQUhWdWMybG5ibVZrSUdsdWRBQm9aV2xuYUhRQWMyVjBWR2xzWlU5bVpuTmxkQUJuWlhSVWFXeGxUMlptYzJWMEFITmxkRWx0WVdkbFQyWm1jMlYwQUdkbGRFbHRZV2RsVDJabWMyVjBBSE5sZEZCeVpXTnBibU4wQUdac2IyRjBBSFZwYm5RMk5GOTBBSE5sZEU1MWJWQnlaV05wYm1OMGN3Qm5aWFJPZFcxTVlYbGxjbk1BYzJWMFJHVmpiMjF3YjNOcGRHbHZibk1BWjJWMFRuVnRSR1ZqYjIxd2IzTnBkR2x2Ym5NQWMyVjBRbXh2WTJ0RWFXMWxibk5wYjI1ekFHZGxkRUpzYjJOclJHbHRaVzV6YVc5dWN3QWxjeVZ6QUZ0RlVsSlBVbDBnSlhNQVcwbE9SazlkSUNWekFGdFhRVkpPU1U1SFhTQWxjd0IyWldOMGIzSUFaMlYwUlc1amIyUmxaRUoxWm1abGNnQm5aWFJFWldOdlpHVmtRblZtWm1WeUFITmxkRkJ5YjJkeVpYTnphVzl1VDNKa1pYSUFaMlYwVUhKdlozSmxjM05wYjI1UGNtUmxjZ0JLTWt0RmJtTnZaR1Z5QUZ0RlVsSlBVbDBnYjNCcVgyUmxZMjl0Y0hKbGMzTTZJR1poYVd4bFpDQjBieUJ6WlhSMWNDQjBhR1VnWkdWamIyUmxjZ0JLTWt0RVpXTnZaR1Z5QUZ0RlVsSlBVbDBnYjNCcVgyUmxZMjl0Y0hKbGMzTTZJR1poYVd4bFpDQjBieUJ5WldGa0lIUm9aU0JvWldGa1pYSUFjbVZoWkVobFlXUmxjZ0IxYm5OcFoyNWxaQ0JqYUdGeUFDOXliMjkwTDNKbGNHOHZjR0ZqYTJGblpYTXZiM0JsYm1wd1pXY3ZjM0pqTDBveVMwUmxZMjlrWlhJdWFIQndBSE5sZEVOdmJYQnlaWE56YVc5dVVtRjBhVzhBWjJWMFJuSmhiV1ZKYm1adkFHUmxZMjlrWlZOMVlsSmxjMjlzZFhScGIyNEFjM1JrT2pwbGVHTmxjSFJwYjI0QVoyVjBWbVZ5YzJsdmJnQnVZVzRBWW05dmJBQmpZV3hqZFd4aGRHVlRhWHBsUVhSRVpXTnZiWEJ2YzJsMGFXOXVUR1YyWld3QVltRmtYMkZ5Y21GNVgyNWxkMTlzWlc1bmRHZ0FLbXhmZEdsc1pWOXNaVzRnUGlCVlNVNVVYMDFCV0NBdElFOVFTbDlEVDAxTlQwNWZRMEpNUzE5RVFWUkJYMFZZVkZKQklDMGdjRjlxTW1zdFBtMWZjM0JsWTJsbWFXTmZjR0Z5WVcwdWJWOWtaV052WkdWeUxtMWZjMjkwWDJ4bGJtZDBhQUIzYVdSMGFBQjFibk5wWjI1bFpDQnNiMjVuQUhOMFpEbzZkM04wY21sdVp3QmlZWE5wWTE5emRISnBibWNBYzNSa09qcHpkSEpwYm1jQWMzUmtPanAxTVRaemRISnBibWNBYzNSa09qcDFNekp6ZEhKcGJtY0FhVzVtQUhObGRGUnBiR1ZUYVhwbEFHZGxkRlJwYkdWVGFYcGxBR0pwZEhOUVpYSlRZVzF3YkdVQWMyVjBSRzkzYmxOaGJYQnNaUUJrYjNWaWJHVUFaMlYwU1hOU1pYWmxjbk5wWW14bEFFbHVkbUZzYVdRZ1lXTmpaWE56SUhSdklIQnBMVDVwYm1Oc2RXUmxBR1Z1WTI5a1pRQmtaV052WkdVQVoyVjBRMjlzYjNKVGNHRmpaUUIyYjJsa0FFcFFSVWNnTWpBd01DQlFjbTltYVd4bExUTWdZVzVrSURRZ0tESnJMelJySUdSaklIQnliMlpwYkdVcElISmxjWFZwY21Wek9nb3hJSE5wYm1kc1pTQnhkV0ZzYVhSNUlHeGhlV1Z5TFQ0Z1RuVnRZbVZ5SUc5bUlHeGhlV1Z5Y3lCbWIzSmpaV1FnZEc4Z01TQW9jbUYwYUdWeUlIUm9ZVzRnSldRcENpMCtJRkpoZEdVZ2IyWWdkR2hsSUd4aGMzUWdiR0Y1WlhJZ0tDVXpMakZtS1NCM2FXeHNJR0psSUhWelpXUUFkVzV6YVdkdVpXUUFhWE5UYVdkdVpXUUFjM1JrT2pwaVlXUmZZV3hzYjJNQVFVeE1YME5RVlZNQVVFeFVQVmxGVXdCVVRFMDlXVVZUQUU5UVNsOU9WVTFmVkVoU1JVRkVVd0JRVEZROVRrOEFWRXhOUFU1UEFFNUJUZ0JKVGtZQWNGOXFNbXN0UG0xZmMzQmxZMmxtYVdOZmNHRnlZVzB1YlY5a1pXTnZaR1Z5TG0xZmMyOTBYMnhsYm1kMGFDQStJRlZKVGxSZlRVRllJQzBnVDFCS1gwTlBUVTFQVGw5RFFreExYMFJCVkVGZlJWaFVVa0VBWlcxelkzSnBjSFJsYmpvNmJXVnRiM0o1WDNacFpYYzhjMmh2Y25RK0FHVnRjMk55YVhCMFpXNDZPbTFsYlc5eWVWOTJhV1YzUEhWdWMybG5ibVZrSUhOb2IzSjBQZ0JsYlhOamNtbHdkR1Z1T2pwdFpXMXZjbmxmZG1sbGR6eHBiblErQUdWdGMyTnlhWEIwWlc0Nk9tMWxiVzl5ZVY5MmFXVjNQSFZ1YzJsbmJtVmtJR2x1ZEQ0QVpXMXpZM0pwY0hSbGJqbzZiV1Z0YjNKNVgzWnBaWGM4Wm14dllYUStBR1Z0YzJOeWFYQjBaVzQ2T20xbGJXOXllVjkyYVdWM1BIVnBiblE0WDNRK0FHVnRjMk55YVhCMFpXNDZPbTFsYlc5eWVWOTJhV1YzUEdsdWREaGZkRDRBWlcxelkzSnBjSFJsYmpvNmJXVnRiM0o1WDNacFpYYzhkV2x1ZERFMlgzUStBR1Z0YzJOeWFYQjBaVzQ2T20xbGJXOXllVjkyYVdWM1BHbHVkREUyWDNRK0FHVnRjMk55YVhCMFpXNDZPbTFsYlc5eWVWOTJhV1YzUEhWcGJuUTJORjkwUGdCbGJYTmpjbWx3ZEdWdU9qcHRaVzF2Y25sZmRtbGxkenhwYm5RMk5GOTBQZ0JsYlhOamNtbHdkR1Z1T2pwdFpXMXZjbmxmZG1sbGR6eDFhVzUwTXpKZmRENEFaVzF6WTNKcGNIUmxiam82YldWdGIzSjVYM1pwWlhjOGFXNTBNekpmZEQ0QVpXMXpZM0pwY0hSbGJqbzZiV1Z0YjNKNVgzWnBaWGM4WTJoaGNqNEFaVzF6WTNKcGNIUmxiam82YldWdGIzSjVYM1pwWlhjOGRXNXphV2R1WldRZ1kyaGhjajRBWlcxelkzSnBjSFJsYmpvNmJXVnRiM0o1WDNacFpYYzhjMmxuYm1Wa0lHTm9ZWEkrQUdWdGMyTnlhWEIwWlc0Nk9tMWxiVzl5ZVY5MmFXVjNQR3h2Ym1jK0FHVnRjMk55YVhCMFpXNDZPbTFsYlc5eWVWOTJhV1YzUEhWdWMybG5ibVZrSUd4dmJtYytBR1Z0YzJOeWFYQjBaVzQ2T20xbGJXOXllVjkyYVdWM1BHUnZkV0pzWlQ0QVVFeFVQUUJIVlVGU1JGOUNTVlJUUFFCVVRFMDlBQWtKQ1NCd2NtVmpZMmx1ZEhOcGVtVWdLSGNzYUNrOUFBa0pDU0J6ZEdWd2MybDZaWE1nS0cwc1pTazlBREl1TlM0d0FFWmhhV3hsWkNCMGJ5QmhiR3h2WTJGMFpTQnBiV0ZuWlNCb1pXRmtaWEl1QUZSb1pTQm5hWFpsYmlCMGFXeGxJR2x1WkdWNElHUnZaWE1nYm05MElHMWhkR05vTGdCVGFYcGxJRzFwYzIxaGRHTm9JR0psZEhkbFpXNGdkR2xzWlNCa1lYUmhJR0Z1WkNCelpXNTBJR1JoZEdFdUFFVnljbTl5SUdGc2JHOWpZWFJwYm1jZ2RHbHNaU0JqYjIxd2IyNWxiblFnWkdGMFlTNEFLRzUxYkd3cEFITjBaRG82WDE5c2FXSmpjSEJmZEd4elgyTnlaV0YwWlNncElHWmhhV3hsWkNCcGJpQmZYMk40WVY5MGFISmxZV1JmWVhSbGVHbDBLQ2tBVzBWU1VrOVNYU0J2Y0dwZlpHVmpiMjF3Y21WemN6b2dabUZwYkdWa0lIUnZJR1JsWTI5a1pTQjBhV3hsSVFBb0pXUXNKV1FwSUFBbGMzMEtBQWtKSUgwS0FGdEVSVlpkSUVSMWJYQWdZVzRnYVcxaFoyVmZZMjl0Y0Y5b1pXRmtaWElnYzNSeWRXTjBJSHNLQUZ0RVJWWmRJRVIxYlhBZ1lXNGdhVzFoWjJWZmFHVmhaR1Z5SUhOMGNuVmpkQ0I3Q2dCSmJXRm5aU0JwYm1adklIc0tBQWtnWkdWbVlYVnNkQ0IwYVd4bElIc0tBQ1Z6Q1NCamIyMXdiMjVsYm5RZ0pXUWdld29BQ1FrZ1kyOXRjQ0FsWkNCN0NnQUpJRlJwYkdVZ2FXNWtaWGc2SUhzS0FBa2dUV0Z5YTJWeUlHeHBjM1E2SUhzS0FFTnZaR1Z6ZEhKbFlXMGdhVzVrWlhnZ1puSnZiU0J0WVdsdUlHaGxZV1JsY2pvZ2V3b0FRMjlrWlhOMGNtVmhiU0JwYm1adklHWnliMjBnYldGcGJpQm9aV0ZrWlhJNklIc0tBRU5oYm01dmRDQmhiR3h2WTJGMFpTQnRaVzF2Y25rS0FGTjBjbVZoYlNCbGNuSnZjaUIzYUdsc1pTQjNjbWwwYVc1bklFcFFNaUJJWldGa1pYSWdZbTk0Q2dCVGRISmxZVzBnWlhKeWIzSWdkMmhwYkdVZ2NtVmhaR2x1WnlCS1VESWdTR1ZoWkdWeUlHSnZlQW9BUm05MWJtUWdZU0J0YVhOd2JHRmpaV1FnSnlWakpXTWxZeVZqSnlCaWIzZ2diM1YwYzJsa1pTQnFjREpvSUdKdmVBb0FUV0ZzWm05eWJXVmtJRXBRTWlCbWFXeGxJR1p2Y20xaGREb2dabWx5YzNRZ1ltOTRJRzExYzNRZ1ltVWdTbEJGUnlBeU1EQXdJSE5wWjI1aGRIVnlaU0JpYjNnS0FFMWhiR1p2Y20xbFpDQktVRElnWm1sc1pTQm1iM0p0WVhRNklITmxZMjl1WkNCaWIzZ2diWFZ6ZENCaVpTQm1hV3hsSUhSNWNHVWdZbTk0Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5Qm9ZVzVrYkdVZ2FuQmxaekl3TURBZ1ltOTRDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IzYVhSb0lFWlVXVkFnUW05NENnQkJJRzFoY210bGNpQkpSQ0IzWVhNZ1pYaHdaV04wWldRZ0tEQjRabVl0TFNrZ2FXNXpkR1ZoWkNCdlppQWxMamg0Q2dBSkNTQnRZM1E5SlhnS0FBa0pDU0JqWW14cmMzUjVQU1VqZUFvQUNRa0pJR056ZEhrOUpTTjRDZ0FKQ1NCd2NtYzlKU040Q2dCSmJuUmxaMlZ5SUc5MlpYSm1iRzkzQ2dCdmNHcGZkREpmWlc1amIyUmxYM0JoWTJ0bGRDZ3BPaUJoWTJObGMzTnBibWNnY0hKbFkyNXZQU1YxSUQ0OUlDVjFDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0JwYm1SbGVEb2dKWFVLQUZOMGNtVmhiU0IwYjI4Z2MyaHZjblFLQUUxaGNtdGxjaUJvWVc1a2JHVnlJR1oxYm1OMGFXOXVJR1poYVd4bFpDQjBieUJ5WldGa0lIUm9aU0J0WVhKclpYSWdjMlZuYldWdWRBb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dabTl5SUdOMWNuSmxiblFnY0hKbFkybHVZM1FnWTI5a1pXSnNiMk5ySUdWc1pXMWxiblFLQUVWeWNtOXlJSGR5YVhScGJtY2dVMUJEYjJRZ1UxQkRiMk1nWld4bGJXVnVkQW9BUlhKeWIzSWdjbVZoWkdsdVp5QlRVRU52WkNCVFVFTnZZeUJsYkdWdFpXNTBDZ0JGY25KdmNpQnlaV0ZrYVc1bklGTlJZMlFnYjNJZ1UxRmpZeUJsYkdWdFpXNTBDZ0JGY25KdmNpQjNjbWwwYVc1bklGTlJZMlFnVTFGall5QmxiR1Z0Wlc1MENnQkJJRUpRUTBNZ2FHVmhaR1Z5SUdKdmVDQnBjeUJoZG1GcGJHRmliR1VnWVd4MGFHOTFaMmdnUWxCRElHZHBkbVZ1SUdKNUlIUm9aU0JKU0VSU0lHSnZlQ0FvSldRcElHbHVaR2xqWVhSbElHTnZiWEJ2Ym1WdWRITWdZbWwwSUdSbGNIUm9JR2x6SUdOdmJuTjBZVzUwQ2dCSmJuWmhiR2xrSUhScGJHVWdhR1ZwWjJoMENnQkZjbkp2Y2lCM2FYUm9JRk5KV2lCdFlYSnJaWEk2SUdsc2JHVm5ZV3dnZEdsc1pTQnZabVp6WlhRS0FFbHVkbUZzYVdRZ2NISmxZMmx1WTNRS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJR2hoYm1Sc1pTQmlZVzVrSUhCeVpXTnBiblJ6Q2dCR1lXbHNaV1FnZEc4Z1pHVmpiMlJsSUdGc2JDQjFjMlZrSUdOdmJYQnZibVZ1ZEhNS0FGTnBlbVVnYjJZZ1kyOWtaU0JpYkc5amF5QmtZWFJoSUdWNFkyVmxaSE1nYzNsemRHVnRJR3hwYldsMGN3b0FVMmw2WlNCdlppQjBhV3hsSUdSaGRHRWdaWGhqWldWa2N5QnplWE4wWlcwZ2JHbHRhWFJ6Q2dCbVlXbHNaV1FnZEc4Z1pXNWpiMlJsSUdsdFlXZGxPaUJ2Y0dwZmMzUmhjblJmWTI5dGNISmxjM01LQUdaaGFXeGxaQ0IwYnlCbGJtTnZaR1VnYVcxaFoyVTZJRzl3YWw5bGJtUmZZMjl0Y0hKbGMzTUtBRlJvWlNCa1pYTnBjbVZrSUcxaGVHbHRkVzBnWTI5a1pYTjBjbVZoYlNCemFYcGxJR2hoY3lCc2FXMXBkR1ZrQ21GMElHeGxZWE4wSUc5dVpTQnZaaUIwYUdVZ1pHVnphWEpsWkNCeGRXRnNhWFI1SUd4aGVXVnljd29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z1lXeHNiMk5oZEdVZ2RHbHNaU0JqYjIxd2IyNWxiblFnWTI5a2FXNW5JSEJoY21GdFpYUmxjbk1LQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHRnNiRzlqWVhSbElIUnBiR1VnWTI5a2FXNW5JSEJoY21GdFpYUmxjbk1LQUVOaGJtNXZkQ0IwWVd0bElHbHVJR05vWVhKblpTQnRkV3gwYVhCc1pTQk5RMVFnYldGeWEyVnljd29BUTI5eWNuVndkR1ZrSUZCUVRTQnRZWEpyWlhKekNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQm1iM0lnZEdsc1pTQnlaWE52YkhWMGFXOXVjd29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHMTFiSFJwY0d4bElHTnZiR3hsWTNScGIyNXpDZ0JKYm5aaGJHbGtJRkJEVEZJZ1ltOTRMaUJTWlhCdmNuUnpJREFnY0dGc1pYUjBaU0JqYjJ4MWJXNXpDZ0JFWlhCeVpXTmhkR1ZrSUdacFpXeGtjeUJqY0Y5amFXNWxiV0VnYjNJZ1kzQmZjbk5wZWlCaGNtVWdkWE5sWkFwUWJHVmhjMlVnWTI5dWMybGtaWElnZFhOcGJtY2diMjVzZVNCMGFHVWdjbk5wZWlCbWFXVnNaQXBUWldVZ2IzQmxibXB3WldjdWFDQmtiMk4xYldWdWRHRjBhVzl1SUdadmNpQnRiM0psSUdSbGRHRnBiSE1LQUZkbElHUnZJRzV2ZENCemRYQndiM0owSUZKUFNTQnBiaUJrWldOdlpHbHVaeUJJVkNCamIyUmxZbXh2WTJ0ekNnQkRZVzV1YjNRZ2FHRnVaR3hsSUdKdmVDQnZaaUIxYm1SbFptbHVaV1FnYzJsNlpYTUtBRU5oYm01dmRDQjBZV3RsSUdsdUlHTm9ZWEpuWlNCamIyeHNaV04wYVc5dWN5QjNhWFJvYjNWMElITmhiV1VnYm5WdFltVnlJRzltSUdsdVpHbDRaWE1LQUVsdWRtRnNhV1FnZEdsc1pXTXRQbmRwYmw5NGVIZ2dkbUZzZFdWekNnQkRZVzV1YjNRZ2FHRnVaR3hsSUdKdmVDQnZaaUJzWlhOeklIUm9ZVzRnT0NCaWVYUmxjd29BUTJGdWJtOTBJR2hoYm1Sc1pTQllUQ0JpYjNnZ2IyWWdiR1Z6Y3lCMGFHRnVJREUySUdKNWRHVnpDZ0JEYjIxd2IyNWxiblFnYVc1a1pYZ2dKWFVnZFhObFpDQnpaWFpsY21Gc0lIUnBiV1Z6Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmxibU52WkdVZ1lXeHNJSFJwYkdWekNnQk9kVzFpWlhJZ2IyWWdjbVZ6YjJ4MWRHbHZibk1nYVhNZ2RHOXZJR2hwWjJnZ2FXNGdZMjl0Y0dGeWFYTnZiaUIwYnlCMGFHVWdjMmw2WlNCdlppQjBhV3hsY3dvQVNXNTJZV3hwWkNCUVEweFNJR0p2ZUM0Z1VtVndiM0owY3lBbFpDQmxiblJ5YVdWekNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJqY21WaGRHVWdWR0ZuTFhSeVpXVWdibTlrWlhNS0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0J0WTNRZ1pHRjBZU0IzYVhSb2FXNGdiWFZzZEdsd2JHVWdUVU5VSUhKbFkyOXlaSE1LQUVOaGJtNXZkQ0JrWldOdlpHVWdkR2xzWlN3Z2JXVnRiM0o1SUdWeWNtOXlDZ0J2Y0dwZmFqSnJYMkZ3Y0d4NVgyNWlYM1JwYkdWZmNHRnlkSE5mWTI5eWNtVmpkR2x2YmlCbGNuSnZjZ29BVUhKdllteGxiU0IzYVhSb0lITnJhWEJ3YVc1bklFcFFSVWN5TURBd0lHSnZlQ3dnYzNSeVpXRnRJR1Z5Y205eUNnQlFjbTlpYkdWdElIZHBkR2dnY21WaFpHbHVaeUJLVUVWSE1qQXdNQ0JpYjNnc0lITjBjbVZoYlNCbGNuSnZjZ29BVlc1cmJtOTNiaUJ0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdGa1pDQjBiQ0J0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdGa1pDQnRhQ0J0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJR1p2Y2lCMGFHVWdVMGxhSUcxaGNtdGxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2RHRnJaU0JwYmlCamFHRnlaMlVnVTBsYUlHMWhjbXRsY2dvQVJYSnliM0lnY21WaFpHbHVaeUJRVUZRZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QnlaV0ZrSUZCUVZDQnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVTA5VUlHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQmllWFJsY3lCcGJpQnZkWFJ3ZFhRZ1luVm1abVZ5SUhSdklIZHlhWFJsSUZOUFZDQnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVUV4VUlHMWhjbXRsY2dvQVJYSnliM0lnY21WaFpHbHVaeUJOUTFRZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QjNjbWwwWlNCTlExUWdiV0Z5YTJWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJ5WldGa0lFMURWQ0J0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYzNCaFkyVWdabTl5SUdWNGNHVmpkR1ZrSUZOUFVDQnRZWEpyWlhJS0FFVjRjR1ZqZEdWa0lGTlBVQ0J0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1RVTlBJRzFoY210bGNnb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnZDNKcGRHVWdUVU5QSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlNSMDRnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklGQlFUU0J0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhKbFlXUWdVRkJOSUcxaGNtdGxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2QzSnBkR1VnZEdobElFTlBUU0J0WVhKclpYSUtBRUVnYldGNGFXMTFiU0J2WmlBeE1Ea3lNU0IwYVd4bExYQmhjblJ6SUdGeVpTQnpkWEJ3YjNKMFpXUWdZM1Z5Y21WdWRHeDVJSGRvWlc0Z2QzSnBkR2x1WnlCVVRFMGdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZSTVRTQnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSGR5YVhSbElGUk1UU0J0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1VFeE5JRzFoY210bGNnb0FUbTkwSUdWdWIzVm5hQ0J6Y0dGalpTQm1iM0lnWlhod1pXTjBaV1FnUlZCSUlHMWhjbXRsY2dvQVJYaHdaV04wWldRZ1JWQklJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCRFVrY2diV0Z5YTJWeUNnQk9iM1FnWlc1dmRXZG9JR0o1ZEdWeklHbHVJRzkxZEhCMWRDQmlkV1ptWlhJZ2RHOGdkM0pwZEdVZ1UwOUVJRzFoY210bGNnb0FWVzVyYm05M2JpQndjbTluY21WemMybHZiaUJ2Y21SbGNpQnBiaUJEVDBRZ2JXRnlhMlZ5Q2dCVmJtdHViM2R1SUZOamIyUWdkbUZzZFdVZ2FXNGdRMDlFSUcxaGNtdGxjZ29BUlhKeWIzSWdkM0pwZEdsdVp5QkRUMFFnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklFTlBSQ0J0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhkeWFYUmxJRU5QUkNCdFlYSnJaWElLQUVWeWNtOXlJSGR5YVhScGJtY2dVVU5FSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlJRMFFnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCM2NtbDBaU0JSUTBRZ2JXRnlhMlZ5Q2dCRGNuSnZjaUJ5WldGa2FXNW5JRU5DUkNCdFlYSnJaWElLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklIZHlhWFJsSUVOQ1JDQnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVUU5RElHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdkM0pwZEdVZ1VFOURJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCRFQwTWdiV0Z5YTJWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUIzY21sMFpTQkRUME1nYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklGRkRReUJ0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhkeWFYUmxJRkZEUXlCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dUVU5ESUcxaGNtdGxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2QzSnBkR1VnVFVORElHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdjbVZoWkNCTlEwTWdiV0Z5YTJWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJoYkd4dlkyRjBaU0IwWlcxd0lHSjFabVpsY2dvQVptRnBiR1ZrSUhSdklHVnVZMjlrWlNCcGJXRm5aVG9nYjNCcVgzTmxkSFZ3WDJWdVkyOWtaWElLQUVsdWRtRnNhV1FnYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZEhNZ2MzQmxZMmxtYVdWa0lIZG9hV3hsSUhObGRIUnBibWNnZFhBZ1NsQXlJR1Z1WTI5a1pYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhObGRIVndJSFJvWlNCS1VESWdaVzVqYjJSbGNnb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkMmhsYmlCelpYUjFjQ0IwYUdVZ1NsQXlJR1Z1WTI5a1pYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdOeVpXRjBaU0JVYVd4bElFTnZaR1Z5Q2dCeVpYRjFhWEpsWkNCVFNWb2diV0Z5YTJWeUlHNXZkQ0JtYjNWdVpDQnBiaUJ0WVdsdUlHaGxZV1JsY2dvQWNtVnhkV2x5WldRZ1EwOUVJRzFoY210bGNpQnViM1FnWm05MWJtUWdhVzRnYldGcGJpQm9aV0ZrWlhJS0FISmxjWFZwY21Wa0lGRkRSQ0J0WVhKclpYSWdibTkwSUdadmRXNWtJR2x1SUcxaGFXNGdhR1ZoWkdWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJvWVc1a2JHVWdhbkJsWnpJd01EQWdabWxzWlNCb1pXRmtaWElLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklISmxZV1FnYUdWaFpHVnlDZ0JGY25KdmNpQjNhWFJvSUVwUUlGTnBaMjVoZEhWeVpTQTZJR0poWkNCdFlXZHBZeUJ1ZFcxaVpYSUtBRWx1SUZOUFZDQnRZWEpyWlhJc0lGUlFVMjkwSUNnbFpDa2dhWE1nYm05MElIWmhiR2xrSUhKbFoyRnlaSE1nZEc4Z2RHaGxJR04xY25KbGJuUWdiblZ0WW1WeUlHOW1JSFJwYkdVdGNHRnlkQ0FvSldRcExDQm5hWFpwYm1jZ2RYQUtBRWx1SUZOUFZDQnRZWEpyWlhJc0lGUlFVMjkwSUNnbFpDa2dhWE1nYm05MElIWmhiR2xrSUhKbFoyRnlaSE1nZEc4Z2RHaGxJSEJ5WlhacGIzVnpJRzUxYldKbGNpQnZaaUIwYVd4bExYQmhjblFnS0NWa0tTd2daMmwyYVc1bklIVndDZ0JKYmlCVFQxUWdiV0Z5YTJWeUxDQlVVRk52ZENBb0pXUXBJR2x6SUc1dmRDQjJZV3hwWkNCeVpXZGhjbVJ6SUhSdklIUm9aU0JqZFhKeVpXNTBJRzUxYldKbGNpQnZaaUIwYVd4bExYQmhjblFnS0dobFlXUmxjaWtnS0NWa0tTd2daMmwyYVc1bklIVndDZ0IwYVd4bGN5QnlaWEYxYVhKbElHRjBJR3hsWVhOMElHOXVaU0J5WlhOdmJIVjBhVzl1Q2dCTllYSnJaWElnYVhNZ2JtOTBJR052YlhCc2FXRnVkQ0IzYVhSb0lHbDBjeUJ3YjNOcGRHbHZiZ29BVUhKdllteGxiU0IzYVhSb0lITmxaV3NnWm5WdVkzUnBiMjRLQUVWeWNtOXlJSEpsWVdScGJtY2dVMUJEYjJRZ1UxQkRiMk1nWld4bGJXVnVkQ3dnU1c1MllXeHBaQ0JqWW14cmR5OWpZbXhyYUNCamIyMWlhVzVoZEdsdmJnb0FTVzUyWVd4cFpDQnRkV3gwYVhCc1pTQmpiMjF3YjI1bGJuUWdkSEpoYm5ObWIzSnRZWFJwYjI0S0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0JqYjJ4c1pXTjBhVzl1Y3lCdmRHaGxjaUIwYUdGdUlHRnljbUY1SUdSbFkyOXljbVZzWVhScGIyNEtBRTV2ZENCbGJtOTFaMmdnWW5sMFpYTWdkRzhnY21WaFpDQk9jSEJ0Q2dCaVlXUWdjR3hoWTJWa0lHcHdaV2NnWTI5a1pYTjBjbVZoYlFvQVJYSnliM0lnZDJocGJHVWdkM0pwZEdsdVp5Qm1kSGx3SUdSaGRHRWdkRzhnYzNSeVpXRnRDZ0FKSUUxaGFXNGdhR1ZoWkdWeUlITjBZWEowSUhCdmMybDBhVzl1UFNWc2JHa0tDU0JOWVdsdUlHaGxZV1JsY2lCbGJtUWdjRzl6YVhScGIyNDlKV3hzYVFvQVRXRnlhMlZ5SUhOcGVtVWdhVzVqYjI1emFYTjBaVzUwSUhkcGRHZ2djM1J5WldGdElHeGxibWQwYUFvQVZHbHNaU0J3WVhKMElHeGxibWQwYUNCemFYcGxJR2x1WTI5dWMybHpkR1Z1ZENCM2FYUm9JSE4wY21WaGJTQnNaVzVuZEdnS0FFbHVkbUZzYVdRZ2RHbHNaU0IzYVdSMGFBb0FZM0JmWm1sNFpXUmZZV3hzYjJNZ2MyVjBMQ0JpZFhRZ1kzQmZiV0YwY21salpTQnRhWE56YVc1bkNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJoYkd4dlkyRjBaU0JqYjNCNUlHOW1JR052YlcxbGJuUWdjM1J5YVc1bkNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJoYkd4dlkyRjBaU0JqYjIxdFpXNTBJSE4wY21sdVp3b0FRMkZ1Ym05MElIUmhhMlVnYVc0Z1kyaGhjbWRsSUcxMWJIUnBjR3hsSUdSaGRHRWdjM0JoYm01cGJtY0tBRVpoYVd4bFpDQjBieUJ6WlhSMWNDQnFNbXNnYldOMElHVnVZMjlrYVc1bkNnQlhjbTl1WnlCbWJHRm5DZ0IwWTNCZmNtRjBaWE5iSldSZFBTVm1JSE5vYjNWc1pDQmlaU0J6ZEhKcFkzUnNlU0JzWlhOelpYSWdkR2hoYmlCMFkzQmZjbUYwWlhOYkpXUmRQU1ZtQ2dCMFkzQmZjbUYwWlhOYkpXUmRQU1ZtSUNoamIzSnlaV04wWldRZ1lYTWdKV1lwSUhOb2IzVnNaQ0JpWlNCemRISnBZM1JzZVNCc1pYTnpaWElnZEdoaGJpQjBZM0JmY21GMFpYTmJKV1JkUFNWbUNnQjBZM0JmWkdsemRHOXlZWFJwYjFzbFpGMDlKV1lnYzJodmRXeGtJR0psSUhOMGNtbGpkR3g1SUdkeVpXRjBaWElnZEdoaGJpQjBZM0JmWkdsemRHOXlZWFJwYjFzbFpGMDlKV1lLQUVWeWNtOXlJSGRwZEdnZ1JsUlpVQ0J6YVdkdVlYUjFjbVVnUW05NElITnBlbVVLQUVWeWNtOXlJSGRwZEdnZ1NsQWdjMmxuYm1GMGRYSmxJRUp2ZUNCemFYcGxDZ0JKYm5aaGJHbGtJSEJ5WldOcGJtTjBJSE5wZW1VS0FFbHVZMjl1YzJsemRHVnVkQ0J0WVhKclpYSWdjMmw2WlFvQVNXNTJZV3hwWkNCdFlYSnJaWElnYzJsNlpRb0FSWEp5YjNJZ2QybDBhQ0JUU1ZvZ2JXRnlhMlZ5SUhOcGVtVUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdGa1pDQmhJRzVsZHlCMllXeHBaR0YwYVc5dUlIQnliMk5sWkhWeVpRb0FRMkZ1Ym05MElHVnVZMjlrWlNCMGFXeGxDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCa1pXTnZaR1VnZEdsc1pRb0FSbUZwYkdWa0lIUnZJR1JsWTI5a1pTQjBhR1VnWTI5a1pYTjBjbVZoYlNCcGJpQjBhR1VnU2xBeUlHWnBiR1VLQUVOaGJtNXZkQ0IwWVd0bElHbHVJR05vWVhKblpTQmpiMnhzWldOMGFXOXVjeUIzYVhSb0lHbHVaR2w0SUhOb2RXWm1iR1VLQUVOaGJtNXZkQ0JoYkd4dlkyRjBaU0JVYVdWeUlERWdhR0Z1Wkd4bENnQk9ieUJrWldOdlpHVmtJR0Z5WldFZ2NHRnlZVzFsZEdWeWN5d2djMlYwSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnZEc4Z2RHaGxJSGRvYjJ4bElHbHRZV2RsQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmpjbVZoZEdVZ1ZHRm5MWFJ5WldVS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsYVc1cGRHbGhiR2w2WlNCMGFHVWdkR0ZuSUhSeVpXVUtBR1poYVd4bFpDQjBieUJsYm1OdlpHVWdhVzFoWjJVNklHOXdhbDlsYm1OdlpHVUtBRVZ5Y205eUlISmxZV1JwYm1jZ1UxQkRiMlFnVTFCRGIyTWdaV3hsYldWdWRDd2dTVzUyWVd4cFpDQjBjbUZ1YzJadmNtMWhkR2x2YmlCbWIzVnVaQW9BUlhKeWIzSWdjbVZoWkdsdVp5QlRVRU52WkNCVFVFTnZZeUJsYkdWdFpXNTBMaUJWYm5OMWNIQnZjblJsWkNCTmFYaGxaQ0JJVkNCamIyUmxMV0pzYjJOcklITjBlV3hsSUdadmRXNWtDZ0JVYVd4bElGa2dZMjl2Y21ScGJtRjBaWE1nWVhKbElHNXZkQ0J6ZFhCd2IzSjBaV1FLQUZScGJHVWdXQ0JqYjI5eVpHbHVZWFJsY3lCaGNtVWdibTkwSUhOMWNIQnZjblJsWkFvQVNXMWhaMlVnWTI5dmNtUnBibUYwWlhNZ1lXSnZkbVVnU1U1VVgwMUJXQ0JoY21VZ2JtOTBJSE4xY0hCdmNuUmxaQW9BU2xCRlJ5QXlNREF3SUVKeWIyRmtZMkZ6ZENCd2NtOW1hV3hsY3lCdWIzUWdlV1YwSUhOMWNIQnZjblJsWkFvQVNsQkZSeUF5TURBd0lGTmpZV3hoWW14bElFUnBaMmwwWVd3Z1EybHVaVzFoSUhCeWIyWnBiR1Z6SUc1dmRDQjVaWFFnYzNWd2NHOXlkR1ZrQ2dCS1VFVkhJREl3TURBZ1RHOXVaeUJVWlhKdElGTjBiM0poWjJVZ2NISnZabWxzWlNCdWIzUWdlV1YwSUhOMWNIQnZjblJsWkFvQVNVMUdJREpMWDFJdk5FdGZVaTg0UzE5U0lITnBibWRzWlM5dGRXeDBhWEJzWlNCMGFXeGxJSEJ5YjJacGJHVnpJSEpsY1hWcGNtVWdkR2xzWlNCMGJ5QmlaU0JuY21WaGRHVnlJRzl5SUdWeGRXRnNJSFJ2SUdsdFlXZGxJSE5wZW1Vc0NtOXlJSFJ2SUdKbElDZ3hNREkwTERFd01qUXBMQ0J2Y2lBb01qQTBPQ3d5TURRNEtTQm1iM0lnTkV0ZlVpODRTMTlTSUc5eUlDZzBNRGsyTERRd09UWXBJR1p2Y2lBNFMxOVNMZ290UGlBbFpDd2xaQ0JwY3lCdWIyNGdZMjl1Wm05eWJXRnVkQW90UGlCT2IyNHRTVTFHSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0JpWlNCblpXNWxjbUYwWldRS0FFbE5SaUJ3Y205bWFXeGxJSEpsY1hWcGNtVWdjM1ZpYkdWMlpXd2dQRDBnSldRZ1ptOXlJRzFoYVc1c1pYWmxiQ0E5SUNWa0xnb3RQaUFsWkNCcGN5QjBhSFZ6SUc1dmRDQmpiMjF3YkdsaGJuUUtMVDRnVG05dUxVbE5SaUJqYjJSbGMzUnlaV0Z0SUhkcGJHd2dZbVVnWjJWdVpYSmhkR1ZrQ2dCSlRVWWdjSEp2Wm1sc1pTQnlaWEYxYVhKbElHMWhhVzVzWlhabGJDQThQU0F4TVM0S0xUNGdKV1FnYVhNZ2RHaDFjeUJ1YjNRZ1kyOXRjR3hwWVc1MENpMCtJRTV2YmkxSlRVWWdZMjlrWlhOMGNtVmhiU0IzYVd4c0lHSmxJR2RsYm1WeVlYUmxaQW9BU1UxR0lIQnliMlpwYkdWeklISmxjWFZwY21VZ2RHbHNaU0J2Y21sbmFXNGdkRzhnWW1VZ1lYUWdNQ3d3TGdvdFBpQWxaQ3dsWkNCcGN5QnViM1FnWTI5dGNHeHBZVzUwQ2kwK0lFNXZiaTFKVFVZZ1kyOWtaWE4wY21WaGJTQjNhV3hzSUdKbElHZGxibVZ5WVhSbFpBb0FTVTFHSUhCeWIyWnBiR1Z6SUhKbGNYVnBjbVVnYVcxaFoyVWdiM0pwWjJsdUlIUnZJR0psSUdGMElEQXNNQzRLTFQ0Z0pXUXNKV1FnYVhNZ2JtOTBJR052YlhCc2FXRnVkQW90UGlCT2IyNHRTVTFHSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0JpWlNCblpXNWxjbUYwWldRS0FFbE5SaUF5U3k4eVMxOVNJSEJ5YjJacGJHVWdjbVZ4ZFdseVpUb0tkMmxrZEdnZ1BEMGdNakEwT0NCaGJtUWdhR1ZwWjJoMElEdzlJREUxTlRZS0xUNGdTVzV3ZFhRZ2FXMWhaMlVnYzJsNlpTQWxaQ0I0SUNWa0lHbHpJRzV2ZENCamIyMXdiR2xoYm5RS0xUNGdUbTl1TFVsTlJpQmpiMlJsYzNSeVpXRnRJSGRwYkd3Z1ltVWdaMlZ1WlhKaGRHVmtDZ0JKVFVZZ09Fc3ZPRXRmVWlCd2NtOW1hV3hsSUhKbGNYVnBjbVU2Q25kcFpIUm9JRHc5SURneE9USWdZVzVrSUdobGFXZG9kQ0E4UFNBMk1qSTBDaTArSUVsdWNIVjBJR2x0WVdkbElITnBlbVVnSldRZ2VDQWxaQ0JwY3lCdWIzUWdZMjl0Y0d4cFlXNTBDaTArSUU1dmJpMUpUVVlnWTI5a1pYTjBjbVZoYlNCM2FXeHNJR0psSUdkbGJtVnlZWFJsWkFvQVNVMUdJRFJMTHpSTFgxSWdjSEp2Wm1sc1pTQnlaWEYxYVhKbE9ncDNhV1IwYUNBOFBTQTBNRGsySUdGdVpDQm9aV2xuYUhRZ1BEMGdNekV4TWdvdFBpQkpibkIxZENCcGJXRm5aU0J6YVhwbElDVmtJSGdnSldRZ2FYTWdibTkwSUdOdmJYQnNhV0Z1ZEFvdFBpQk9iMjR0U1UxR0lHTnZaR1Z6ZEhKbFlXMGdkMmxzYkNCaVpTQm5aVzVsY21GMFpXUUtBRWxOUmlCd2NtOW1hV3hsY3lCeVpYRjFhWEpsSUhCeVpXTnBjMmx2YmlCdlppQmxZV05vSUdOdmJYQnZibVZ1ZENCMGJ5QmlJR2x1SUZzNExURTJYU0JpYVhSeklIVnVjMmxuYm1Wa0xUNGdRWFFnYkdWaGMzUWdZMjl0Y0c5dVpXNTBJQ1ZrSUc5bUlHbHVjSFYwSUdsdFlXZGxJQ2dsWkNCaWFYUnpMQ0FsY3lrZ2FYTWdibTkwSUdOdmJYQnNhV0Z1ZEFvdFBpQk9iMjR0U1UxR0lHTnZaR1Z6ZEhKbFlXMGdkMmxzYkNCaVpTQm5aVzVsY21GMFpXUUtBRWxOUmlCd2NtOW1hV3hsY3lCeVpYRjFhWEpsSUdGMElHMXZjM1FnTXlCamIyMXdiMjVsYm5Sekxnb3RQaUJPZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwY3lCdlppQnBibkIxZENCcGJXRm5aU0FvSldRcElHbHpJRzV2ZENCamIyMXdiR2xoYm5RS0xUNGdUbTl1TFVsTlJpQmpiMlJsYzNSeVpXRnRJSGRwYkd3Z1ltVWdaMlZ1WlhKaGRHVmtDZ0JKVFVZZ01rc3ZORXN2T0VzZ2MybHVaMnhsSUhScGJHVWdjSEp2Wm1sc1pYTWdjbVZ4ZFdseVpTQjBhV3hsSUhSdklHSmxJR2R5WldGMFpYSWdiM0lnWlhGMVlXd2dkRzhnYVcxaFoyVWdjMmw2WlM0S0xUNGdKV1FzSldRZ2FYTWdiR1Z6YzJWeUlIUm9ZVzRnSldRc0pXUUtMVDRnVG05dUxVbE5SaUJqYjJSbGMzUnlaV0Z0SUhkcGJHd2dZbVVnWjJWdVpYSmhkR1ZrQ2dCSlRVWWdjSEp2Wm1sc1pTQm1iM0ppYVdRZ1VrZE9JQzhnY21WbmFXOXVJRzltSUdsdWRHVnlaWE4wSUcxaGNtdGxjaTRLTFQ0Z1EyOXRjSEpsYzNOcGIyNGdjR0Z5WVcxbGRHVnljeUJ6Y0dWamFXWjVJR0VnVWs5SkNpMCtJRTV2YmkxSlRVWWdZMjlrWlhOMGNtVmhiU0IzYVd4c0lHSmxJR2RsYm1WeVlYUmxaQW9BU1UxR0lIQnliMlpwYkdWeklISmxjWFZwY21VZ1VGQjRJRDBnVUZCNUlEMGdOeUJtYjNJZ1RreE1UQ0JpWVc1a0xDQmxiSE5sSURndUNpMCtJRk4xY0hCc2FXVmtJSFpoYkhWbGN5QmhjbVVnWkdsbVptVnlaVzUwSUdaeWIyMGdkR2hoZEM0S0xUNGdUbTl1TFVsTlJpQmpiMlJsYzNSeVpXRnRJSGRwYkd3Z1ltVWdaMlZ1WlhKaGRHVmtDZ0JKVFVZZ01rc3ZORXN2T0VzZ2NISnZabWxzWlhNZ2NtVnhkV2x5WlNBMUxUTWdjbVYyWlhKemFXSnNaU0JVY21GdWMyWnZjbTB1Q2kwK0lFTnZiWEJ5WlhOemFXOXVJSEJoY21GdFpYUmxjbk1nYzJWMElHbDBJSFJ2SUdseWNtVjJaWEp6YVdKc1pTNEtMVDRnVG05dUxVbE5SaUJqYjJSbGMzUnlaV0Z0SUhkcGJHd2dZbVVnWjJWdVpYSmhkR1ZrQ2dCSlRVWWdNa3N2TkVzdk9Fc2djSEp2Wm1sc1pYTWdjbVZ4ZFdseVpTQTVMVGNnU1hKeVpYWmxjbk5wWW14bElGUnlZVzV6Wm05eWJTNEtMVDRnUTI5dGNISmxjM05wYjI0Z2NHRnlZVzFsZEdWeWN5QnpaWFFnYVhRZ2RHOGdjbVYyWlhKemFXSnNaUzRLTFQ0Z1RtOXVMVWxOUmlCamIyUmxjM1J5WldGdElIZHBiR3dnWW1VZ1oyVnVaWEpoZEdWa0NnQkpUVVlnY0hKdlptbHNaU0J5WlhGMWFYSmxJR052WkdVZ1lteHZZMnNnYzJsNlpTQjBieUJpWlNBek1uZ3pNaTRLTFQ0Z1EyOXRjSEpsYzNOcGIyNGdjR0Z5WVcxbGRHVnljeUJ6WlhRZ2FYUWdkRzhnSldSNEpXUXVDaTArSUU1dmJpMUpUVVlnWTI5a1pYTjBjbVZoYlNCM2FXeHNJR0psSUdkbGJtVnlZWFJsWkFvQVNVMUdJSEJ5YjJacGJHVnpJSEpsY1hWcGNtVWdXVkp6YVhvZ1BUMGdNUzRnU0dWeVpTQnBkQ0JwY3lCelpYUWdkRzhnSldRZ1ptOXlJR052YlhCdmJtVnVkQ0FsWkM0S0xUNGdUbTl1TFVsTlJpQmpiMlJsYzNSeVpXRnRJSGRwYkd3Z1ltVWdaMlZ1WlhKaGRHVmtDZ0JKVFVZZ01rc3ZORXN2T0VzZ2NISnZabWxzWlhNZ2NtVnhkV2x5WlNBeElITnBibWRzWlNCeGRXRnNhWFI1SUd4aGVXVnlMZ290UGlCT2RXMWlaWElnYjJZZ2JHRjVaWEp6SUdseklDVmtMZ290UGlCT2IyNHRTVTFHSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0JpWlNCblpXNWxjbUYwWldRS0FFbE5SaUEwUzE5U0lIQnliMlpwYkdVZ2NtVnhkV2x5WlhNZ01TQThQU0JPVENBOFBTQTBJR1p2Y2lCWVZITnBlaUJwYmlCYk1UQXlOQ3d5TURRNFd6b0tMVDRnVG5WdFltVnlJRzltSUdSbFkyOXRjRzl6YVhScGIyNGdiR1YyWld4eklHbHpJQ1ZrTGdvdFBpQk9iMjR0U1UxR0lHTnZaR1Z6ZEhKbFlXMGdkMmxzYkNCaVpTQm5aVzVsY21GMFpXUUtBRWxOUmlBeVMxOVNJSEJ5YjJacGJHVWdjbVZ4ZFdseVpYTWdNU0E4UFNCT1RDQThQU0EwSUdadmNpQllWSE5wZWlCcGJpQmJNVEF5TkN3eU1EUTRXem9LTFQ0Z1RuVnRZbVZ5SUc5bUlHUmxZMjl0Y0c5emFYUnBiMjRnYkdWMlpXeHpJR2x6SUNWa0xnb3RQaUJPYjI0dFNVMUdJR052WkdWemRISmxZVzBnZDJsc2JDQmlaU0JuWlc1bGNtRjBaV1FLQUVsTlJpQTBTMTlTSUhCeWIyWnBiR1VnY21WeGRXbHlaWE1nTVNBOFBTQk9UQ0E4UFNBMUlHWnZjaUJZVkhOcGVpQnBiaUJiTWpBME9DdzBNRGsyV3pvS0xUNGdUblZ0WW1WeUlHOW1JR1JsWTI5dGNHOXphWFJwYjI0Z2JHVjJaV3h6SUdseklDVmtMZ290UGlCT2IyNHRTVTFHSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0JpWlNCblpXNWxjbUYwWldRS0FFbE5SaUEwUzE5U0lIQnliMlpwYkdVZ2NtVnhkV2x5WlhNZ01TQThQU0JPVENBOFBTQTJJR1p2Y2lCWVZITnBlaUJwYmlCYk5EQTVOaXc0TVRreVd6b0tMVDRnVG5WdFltVnlJRzltSUdSbFkyOXRjRzl6YVhScGIyNGdiR1YyWld4eklHbHpJQ1ZrTGdvdFBpQk9iMjR0U1UxR0lHTnZaR1Z6ZEhKbFlXMGdkMmxzYkNCaVpTQm5aVzVsY21GMFpXUUtBRWxOUmlBeVMxOVNJSEJ5YjJacGJHVWdjbVZ4ZFdseVpYTWdNU0E4UFNCT1RDQThQU0ExSUdadmNpQllWSE5wZWlBK1BTQXlNRFE0T2dvdFBpQk9kVzFpWlhJZ2IyWWdaR1ZqYjIxd2IzTnBkR2x2YmlCc1pYWmxiSE1nYVhNZ0pXUXVDaTArSUU1dmJpMUpUVVlnWTI5a1pYTjBjbVZoYlNCM2FXeHNJR0psSUdkbGJtVnlZWFJsWkFvQVNVMUdJRGhMSUhCeWIyWnBiR1VnY21WeGRXbHlaWE1nTVNBOFBTQk9UQ0E4UFNBM09nb3RQaUJPZFcxaVpYSWdiMllnWkdWamIyMXdiM05wZEdsdmJpQnNaWFpsYkhNZ2FYTWdKV1F1Q2kwK0lFNXZiaTFKVFVZZ1kyOWtaWE4wY21WaGJTQjNhV3hzSUdKbElHZGxibVZ5WVhSbFpBb0FTVTFHSURSTFgxSWdjSEp2Wm1sc1pTQnlaWEYxYVhKbGN5QXhJRHc5SUU1TUlEdzlJRFlnWm05eUlGaFVjMmw2SUQ0OUlEUXdPVFk2Q2kwK0lFNTFiV0psY2lCdlppQmtaV052YlhCdmMybDBhVzl1SUd4bGRtVnNjeUJwY3lBbFpDNEtMVDRnVG05dUxVbE5SaUJqYjJSbGMzUnlaV0Z0SUhkcGJHd2dZbVVnWjJWdVpYSmhkR1ZrQ2dCSlRVWWdORXNnY0hKdlptbHNaU0J5WlhGMWFYSmxjeUF4SUR3OUlFNU1JRHc5SURZNkNpMCtJRTUxYldKbGNpQnZaaUJrWldOdmJYQnZjMmwwYVc5dUlHeGxkbVZzY3lCcGN5QWxaQzRLTFQ0Z1RtOXVMVWxOUmlCamIyUmxjM1J5WldGdElIZHBiR3dnWW1VZ1oyVnVaWEpoZEdWa0NnQkpUVVlnTWtzZ2NISnZabWxzWlNCeVpYRjFhWEpsY3lBeElEdzlJRTVNSUR3OUlEVTZDaTArSUU1MWJXSmxjaUJ2WmlCa1pXTnZiWEJ2YzJsMGFXOXVJR3hsZG1Wc2N5QnBjeUFsWkM0S0xUNGdUbTl1TFVsTlJpQmpiMlJsYzNSeVpXRnRJSGRwYkd3Z1ltVWdaMlZ1WlhKaGRHVmtDZ0JKVFVZZ05FdGZVaUJ3Y205bWFXeGxJSEpsY1hWcGNtVnpJREVnUEQwZ1Rrd2dQRDBnTnlCbWIzSWdXRlJ6YVhvZ1BqMGdPREU1TWpvS0xUNGdUblZ0WW1WeUlHOW1JR1JsWTI5dGNHOXphWFJwYjI0Z2JHVjJaV3h6SUdseklDVmtMZ290UGlCT2IyNHRTVTFHSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0JpWlNCblpXNWxjbUYwWldRS0FFbE5SaUJ3Y205bWFXeGxJSEpsY1hWcGNtVWdjSEp2WjNKbGMzTnBiMjRnYjNKa1pYSWdkRzhnWW1VZ1ExQlNUQzRLTFQ0Z1EyOXRjSEpsYzNOcGIyNGdjR0Z5WVcxbGRHVnljeUJ6WlhRZ2FYUWdkRzhnSldRdUNpMCtJRTV2YmkxSlRVWWdZMjlrWlhOMGNtVmhiU0IzYVd4c0lHSmxJR2RsYm1WeVlYUmxaQW9BU1UxR0lIQnliMlpwYkdWeklISmxjWFZwY21VZ1dGSlRhWG95SUQwOUlERWdiM0lnTWk0Z1NHVnlaU0JwZENCcGN5QnpaWFFnZEc4Z0pXUXVDaTArSUU1dmJpMUpUVVlnWTI5a1pYTjBjbVZoYlNCM2FXeHNJR0psSUdkbGJtVnlZWFJsWkFvQVNVMUdJSEJ5YjJacGJHVnpJSEpsY1hWcGNtVWdXRkpUYVhveElEMDlJREV1SUVobGNtVWdhWFFnYVhNZ2MyVjBJSFJ2SUNWa0xnb3RQaUJPYjI0dFNVMUdJR052WkdWemRISmxZVzBnZDJsc2JDQmlaU0JuWlc1bGNtRjBaV1FLQUVsTlJpQndjbTltYVd4bElHWnZjbUpwWkNCdGIyUmxJSE4zYVhSamFDQnBiaUJqYjJSbElHSnNiMk5ySUhOMGVXeGxMZ290UGlCRGIyMXdjbVZ6YzJsdmJpQndZWEpoYldWMFpYSnpJSE5sZENCamIyUmxJR0pzYjJOcklITjBlV3hsSUhSdklDVmtMZ290UGlCT2IyNHRTVTFHSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0JpWlNCblpXNWxjbUYwWldRS0FFbE5SaUJ3Y205bWFXeGxjeUJ5WlhGMWFYSmxJRmhTVTJsNkpXUWdkRzhnWW1VZ2RHaGxJSE5oYldVZ1lYTWdXRkpUYVhveUxpQklaWEpsSUdsMElHbHpJSE5sZENCMGJ5QWxaQ0JwYm5OMFpXRmtJRzltSUNWa0xnb3RQaUJPYjI0dFNVMUdJR052WkdWemRISmxZVzBnZDJsc2JDQmlaU0JuWlc1bGNtRjBaV1FLQUVsTlJpQndjbTltYVd4bElHWnZjbUpwWkNCUVQwTWdiV0Z5YTJWeWN5NEtMVDRnUTI5dGNISmxjM05wYjI0Z2NHRnlZVzFsZEdWeWN5QnpaWFFnSldRZ1VFOURMZ290UGlCT2IyNHRTVTFHSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0JpWlNCblpXNWxjbUYwWldRS0FFcFFSVWNnTWpBd01DQlFjbTltYVd4bExUUWdLRFJySUdSaklIQnliMlpwYkdVcElISmxjWFZwY21Wek9ncDNhV1IwYUNBOFBTQTBNRGsySUdGdVpDQm9aV2xuYUhRZ1BEMGdNakUyTUFvdFBpQkpiV0ZuWlNCemFYcGxJQ1ZrSUhnZ0pXUWdhWE1nYm05MElHTnZiWEJzYVdGdWRBb3RQaUJPYjI0dGNISnZabWxzWlMwMElHTnZaR1Z6ZEhKbFlXMGdkMmxzYkNCaVpTQm5aVzVsY21GMFpXUUtBRXBRUlVjZ01qQXdNQ0JRY205bWFXeGxMVE1nS0RKcklHUmpJSEJ5YjJacGJHVXBJSEpsY1hWcGNtVnpPZ3AzYVdSMGFDQThQU0F5TURRNElHRnVaQ0JvWldsbmFIUWdQRDBnTVRBNE1Bb3RQaUJKYm5CMWRDQnBiV0ZuWlNCemFYcGxJQ1ZrSUhnZ0pXUWdhWE1nYm05MElHTnZiWEJzYVdGdWRBb3RQaUJPYjI0dGNISnZabWxzWlMweklHTnZaR1Z6ZEhKbFlXMGdkMmxzYkNCaVpTQm5aVzVsY21GMFpXUUtBRXBRUlVjZ01qQXdNQ0JRY205bWFXeGxMVE1nS0RKcklHUmpJSEJ5YjJacGJHVXBJSEpsY1hWcGNtVnpPZ3BRY21WamFYTnBiMjRnYjJZZ1pXRmphQ0JqYjIxd2IyNWxiblFnYzJoaGJHd2dZbVVnTVRJZ1ltbDBjeUIxYm5OcFoyNWxaQzArSUVGMElHeGxZWE4wSUdOdmJYQnZibVZ1ZENBbFpDQnZaaUJwYm5CMWRDQnBiV0ZuWlNBb0pXUWdZbWwwY3l3Z0pYTXBJR2x6SUc1dmRDQmpiMjF3YkdsaGJuUUtMVDRnVG05dUxYQnliMlpwYkdVdE15QmpiMlJsYzNSeVpXRnRJSGRwYkd3Z1ltVWdaMlZ1WlhKaGRHVmtDZ0JLVUVWSElESXdNREFnVUhKdlptbHNaUzB6SUNneWF5QmtZeUJ3Y205bWFXeGxLU0J5WlhGMWFYSmxjem9LTXlCamIyMXdiMjVsYm5SekxUNGdUblZ0WW1WeUlHOW1JR052YlhCdmJtVnVkSE1nYjJZZ2FXNXdkWFFnYVcxaFoyVWdLQ1ZrS1NCcGN5QnViM1FnWTI5dGNHeHBZVzUwQ2kwK0lFNXZiaTF3Y205bWFXeGxMVE1nWTI5a1pYTjBjbVZoYlNCM2FXeHNJR0psSUdkbGJtVnlZWFJsWkFvQVNsQkZSekl3TURBZ1NHVmhaR1Z5SUdKdmVDQnViM1FnY21WaFpDQjVaWFFzSUNjbFl5VmpKV01sWXljZ1ltOTRJSGRwYkd3Z1ltVWdhV2R1YjNKbFpBb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnWVd4c2IyTmhkR1VnYlY5bGJtTnZaR1ZrWDNScGJHVmZaR0YwWVM0Z0pYVWdUVUlnY21WeGRXbHlaV1FLQUc5d2FsOXFNbXRmYldWeVoyVmZjSEIwS0NrZ2FHRnpJR0ZzY21WaFpIa2dZbVZsYmlCallXeHNaV1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklISmxZV1FnVTA5VUlHMWhjbXRsY2k0Z1ZHbHNaU0JwYm1SbGVDQmhiR3h2WTJGMGFXOXVJR1poYVd4bFpBb0FRMkZ1Ym05MElHVnVZMjlrWlNCMGFXeGxPaUJ2Y0dwZmRHTmtYMjFoY210bGNsOXBibVp2WDJOeVpXRjBaU2dwSUdaaGFXeGxaQW9BU1dkdWIzSnBibWNnYVdoa2NpQmliM2d1SUVacGNuTjBJR2xvWkhJZ1ltOTRJR0ZzY21WaFpIa2djbVZoWkFvQVduQndkQ0FsZFNCaGJISmxZV1I1SUhKbFlXUUtBRnB3Y0cwZ0pYVWdZV3h5WldGa2VTQnlaV0ZrQ2dCUVZFVlNUU0JqYUdWamF5Qm1ZV2xzZFhKbE9pQWxaQ0J6ZVc1MGFHVjBhWHBsWkNBd2VFWkdJRzFoY210bGNuTWdjbVZoWkFvQUNRa0pJR05pYkd0M1BUSmVKV1FLQUFrSkNTQmpZbXhyYUQweVhpVmtDZ0FKQ1FrZ2NXNTBjM1I1UFNWa0NnQUpJSFJrZUQwbFpDd2dkR1I1UFNWa0NnQWxjeUJrZUQwbFpDd2daSGs5SldRS0FBa0pDU0J5YjJsemFHbG1kRDBsWkFvQUNRa0pJRzUxYldkaWFYUnpQU1ZrQ2dBSkNTQnVkVzFzWVhsbGNuTTlKV1FLQUNWeklHNTFiV052YlhCelBTVmtDZ0J2Y0dwZmFuQXlYMkZ3Y0d4NVgyTmtaV1k2SUdGamJqMGxaQ3dnYm5WdFkyOXRjSE05SldRS0FHOXdhbDlxY0RKZllYQndiSGxmWTJSbFpqb2dZMjQ5SldRc0lHNTFiV052YlhCelBTVmtDZ0FKQ1FrZ2JuVnRjbVZ6YjJ4MWRHbHZibk05SldRS0FBa0pJSFI1Y0dVOUpTTjRMQ0J3YjNNOUpXeHNhU3dnYkdWdVBTVmtDZ0FKSUhSM1BTVmtMQ0IwYUQwbFpBb0FKWE1nYzJkdVpEMGxaQW9BQ1FrSklIRnRabUpwWkQwbFpBb0FKWE1nY0hKbFl6MGxaQW9BQ1FrZ2JtSWdiMllnZEdsc1pTMXdZWEowSUdsdUlIUnBiR1VnV3lWa1hUMGxaQW9BSlhNZ2VERTlKV1FzSUhreFBTVmtDZ0FKSUhSNE1EMGxaQ3dnZEhrd1BTVmtDZ0FsY3lCNE1EMGxaQ3dnZVRBOUpXUUtBRVpoYVd4bFpDQjBieUJrWldOdlpHVWdkR2xzWlNBbFpDOGxaQW9BVTJWMGRHbHVaeUJrWldOdlpHbHVaeUJoY21WaElIUnZJQ1ZrTENWa0xDVmtMQ1ZrQ2dCR1lXbHNaV1FnZEc4Z1pHVmpiMlJsSUdOdmJYQnZibVZ1ZENBbFpBb0FTVzUyWVd4cFpDQjJZV3gxWlNCbWIzSWdiblZ0Y21WemIyeDFkR2x2Ym5NZ09pQWxaQ3dnYldGNElIWmhiSFZsSUdseklITmxkQ0JwYmlCdmNHVnVhbkJsWnk1b0lHRjBJQ1ZrQ2dCSmJuWmhiR2xrSUdOdmJYQnZibVZ1ZENCdWRXMWlaWEk2SUNWa0xDQnlaV2RoY21ScGJtY2dkR2hsSUc1MWJXSmxjaUJ2WmlCamIyMXdiMjVsYm5SeklDVmtDZ0JVYjI4Z2JXRnVlU0JRVDBOeklDVmtDZ0JKYm5aaGJHbGtJSFJwYkdVZ2JuVnRZbVZ5SUNWa0NnQkpiblpoYkdsa0lIUnBiR1VnY0dGeWRDQnBibVJsZUNCbWIzSWdkR2xzWlNCdWRXMWlaWElnSldRdUlFZHZkQ0FsWkN3Z1pYaHdaV04wWldRZ0pXUUtBSFJqY0Y5dWRXMXNZWGxsY25NZ2QyaGxiaUJqY0Y5bWFYaGxaRjloYkd4dll5QnpaWFFnYzJodmRXeGtJRzV2ZENCbGVHTmxaV1FnSldRS0FHNTFiWEpsYzI5c2RYUnBiMjRnZDJobGJpQmpjRjltYVhobFpGOWhiR3h2WXlCelpYUWdjMmh2ZFd4a0lHNXZkQ0JsZUdObFpXUWdKV1FLQUVsdWRtRnNhV1FnWTI5dGNHNXZNQ0JtYjNJZ1VFOURJQ1ZrQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJRzUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblFnYVhNZ2FXeHNaV2RoYkNBdFBpQWxaQW9BUlhKeWIzSWdkMmhwYkdVZ2IzQnFYMm95YTE5d2IzTjBYM2R5YVhSbFgzUnBiR1VnZDJsMGFDQjBhV3hsSUdsdVpHVjRJRDBnSldRS0FFVnljbTl5SUhkb2FXeGxJRzl3YWw5cU1tdGZjSEpsWDNkeWFYUmxYM1JwYkdVZ2QybDBhQ0IwYVd4bElHbHVaR1Y0SUQwZ0pXUUtBSFJwYkdVZ2JuVnRZbVZ5SUNWa0lDOGdKV1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUdadmNpQmphV1ZzWVdJS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCallteHJMVDVrWldOdlpHVmtYMlJoZEdFS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJR2h2YkdRZ1NsQXlJRWhsWVdSbGNpQmtZWFJoQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5Qm9ZVzVrYkdVZ1puUjVjQ0JrWVhSaENnQk5hWE56YVc1bklIQmhZMnRsZEhNZ2NHOXpjMmxpYkdVZ2JHOXpjeUJ2WmlCa1lYUmhDZ0JHWVdsc1pXUWdkRzhnYldWeVoyVWdVRkJVSUdSaGRHRUtBRVpoYVd4bFpDQjBieUJ0WlhKblpTQlFVRTBnWkdGMFlRb0FTVzUyWVd4cFpDQnVkVzFpWlhJZ2IyWWdjbVZ6YjJ4MWRHbHZibk1nT2lBbFpDQnViM1FnYVc0Z2NtRnVaMlVnV3pFc0pXUmRDZ0JKYm5aaGJHbGtJSFpoYkhWbElHWnZjaUJ2Y0hScGIyNDZJQ1Z6TGlCVGFHOTFiR1FnWW1VZ2FXNGdXekFzTjEwS0FFbHVkbUZzYVdRZ2JuVnRZbVZ5SUc5bUlHeGhlV1Z5Y3lCcGJpQkRUMFFnYldGeWEyVnlJRG9nSldRZ2JtOTBJR2x1SUhKaGJtZGxJRnN4TFRZMU5UTTFYUW9BU1c1MllXeHBaQ0IyWVd4MVpTQm1iM0lnWTJKc2IyTnJhRjlwYm1sME9pQWxaQ0J1YjNRZ1lTQndiM2RsY2lCdlppQXlJRzV2ZENCcGJpQnlZVzVuWlNCYk5Dd3hNREkwWFFvQVNXNTJZV3hwWkNCMllXeDFaU0JtYjNJZ1kySnNiMk5yZDE5cGJtbDBPaUFsWkNCdWIzUWdZU0J3YjNkbGNpQnZaaUF5SUdsdUlISmhibWRsSUZzMExERXdNalJkQ2dBbGN6b2xaRHBqYjJ4dmNsOWpiWGxyWDNSdlgzSm5ZZ29KUTBGT0lFNVBWQ0JEVDA1V1JWSlVDZ0FsY3pvbFpEcGpiMnh2Y2w5bGMzbGpZMTkwYjE5eVoySUtDVU5CVGlCT1QxUWdRMDlPVmtWU1ZBb0FKWE02SldRNlkyOXNiM0pmYzNsalkxOTBiMTl5WjJJS0NVTkJUaUJPVDFRZ1EwOU9Wa1ZTVkFvQVUzUnlaV0Z0SUhSdmJ5QnphRzl5ZEN3Z1pYaHdaV04wWldRZ1UwOVVDZ0JWYm1GaWJHVWdkRzhnYzJWMElIUXhJR2hoYm1Sc1pTQmhjeUJVVEZNS0FGTjBjbVZoYlNCa2IyVnpJRzV2ZENCbGJtUWdkMmwwYUNCRlQwTUtBRWx1ZG1Gc2FXUWdkbUZzZFdVZ1ptOXlJR05pYkc5amEzZGZhVzVwZENBcUlHTmliRzlqYTJoZmFXNXBkRG9nYzJodmRXeGtJR0psSUR3OUlEUXdPVFlLQUVOaGJtNXZkQ0JvWVc1a2JHVWdZbTk0SUhOcGVtVnpJR2hwWjJobGNpQjBhR0Z1SURKZU16SUtBRzl3YWw5d2FWOXVaWGgwWDJ4eVkzQW9LVG9nYVc1MllXeHBaQ0JqYjIxd2JtOHdMMk52YlhCdWJ6RUtBRzl3YWw5d2FWOXVaWGgwWDNKc1kzQW9LVG9nYVc1MllXeHBaQ0JqYjIxd2JtOHdMMk52YlhCdWJ6RUtBRzl3YWw5d2FWOXVaWGgwWDJOd2Ntd29LVG9nYVc1MllXeHBaQ0JqYjIxd2JtOHdMMk52YlhCdWJ6RUtBRzl3YWw5d2FWOXVaWGgwWDNCamNtd29LVG9nYVc1MllXeHBaQ0JqYjIxd2JtOHdMMk52YlhCdWJ6RUtBRzl3YWw5d2FWOXVaWGgwWDNKd1kyd29LVG9nYVc1MllXeHBaQ0JqYjIxd2JtOHdMMk52YlhCdWJ6RUtBRzl3YWw5ME1WOWtaV052WkdWZlkySnNheWdwT2lCMWJuTjFjSEJ2Y25SbFpDQmljRzV2WDNCc2RYTmZiMjVsSUQwZ0pXUWdQajBnTXpFS0FFWmhhV3hsWkNCMGJ5QmtaV052WkdVZ2RHbHNaU0F4THpFS0FFbHVjM1ZtWm1samFXVnVkQ0JrWVhSaElHWnZjaUJEVFVGUUlHSnZlQzRLQUU1bFpXUWdkRzhnY21WaFpDQmhJRkJEVEZJZ1ltOTRJR0psWm05eVpTQjBhR1VnUTAxQlVDQmliM2d1Q2dCSmJuTjFabVpwWTJsbGJuUWdaR0YwWVNCbWIzSWdRMFJGUmlCaWIzZ3VDZ0JPZFcxaVpYSWdiMllnWTJoaGJtNWxiQ0JrWlhOamNtbHdkR2x2YmlCcGN5QmxjWFZoYkNCMGJ5QjZaWEp2SUdsdUlFTkVSVVlnWW05NExnb0FVM1J5WldGdElHVnljbTl5SUhkb2FXeGxJSEpsWVdScGJtY2dTbEF5SUVobFlXUmxjaUJpYjNnNklHNXZJQ2RwYUdSeUp5QmliM2d1Q2dCT2IyNGdZMjl1Wm05eWJXRnVkQ0JqYjJSbGMzUnlaV0Z0SUZSUWMyOTBQVDFVVG5OdmRDNEtBRk4wY21WaGJTQmxjbkp2Y2lCM2FHbHNaU0J5WldGa2FXNW5JRXBRTWlCSVpXRmtaWElnWW05NE9pQmliM2dnYkdWdVozUm9JR2x6SUdsdVkyOXVjMmx6ZEdWdWRDNEtBRUp2ZUNCc1pXNW5kR2dnYVhNZ2FXNWpiMjV6YVhOMFpXNTBMZ29BVW1WemIyeDFkR2x2YmlCbVlXTjBiM0lnYVhNZ1ozSmxZWFJsY2lCMGFHRnVJSFJvWlNCdFlYaHBiWFZ0SUhKbGMyOXNkWFJwYjI0Z2FXNGdkR2hsSUdOdmJYQnZibVZ1ZEM0S0FFTnZiWEJ2Ym1WdWRDQnRZWEJ3YVc1bklITmxaVzF6SUhkeWIyNW5MaUJVY25scGJtY2dkRzhnWTI5eWNtVmpkQzRLQUVsdVkyOXRjR3hsZEdVZ1kyaGhibTVsYkNCa1pXWnBibWwwYVc5dWN5NEtBRTFoYkdadmNtMWxaQ0JJVkNCamIyUmxZbXh2WTJzdUlFbHVkbUZzYVdRZ1kyOWtaV0pzYjJOcklHeGxibWQwYUNCMllXeDFaWE11Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCbWIzSWdZMmhsWTJ0cGJtY2dkR2hsSUhCdll5QjJZV3gxWlhNdUNnQktVRVZISURJd01EQWdVSEp2Wm1sc1pTMHpJR0Z1WkNBMElDZ3lheTgwYXlCa1l5QndjbTltYVd4bEtTQnlaWEYxYVhKbGN6b0tUV0Y0YVcxMWJTQXhNRFF4TmpZMklHTnZiWEJ5WlhOelpXUWdZbmwwWlhNZ1FDQXlOR1p3Y3dvdFBpQlRjR1ZqYVdacFpXUWdjbUYwWlNCbGVHTmxaV1J6SUhSb2FYTWdiR2x0YVhRdUlGSmhkR1VnZDJsc2JDQmlaU0JtYjNKalpXUWdkRzhnTVRBME1UWTJOaUJpZVhSbGN5NEtBRXBRUlVjZ01qQXdNQ0JRY205bWFXeGxMVE1nWVc1a0lEUWdLREpyTHpScklHUmpJSEJ5YjJacGJHVXBJSEpsY1hWcGNtVnpPZ3BOWVhocGJYVnRJREV6TURJd09ETWdZMjl0Y0hKbGMzTmxaQ0JpZVhSbGN5QkFJREkwWm5CekNpMCtJRk53WldOcFptbGxaQ0J5WVhSbElHVjRZMlZsWkhNZ2RHaHBjeUJzYVcxcGRDNGdVbUYwWlNCM2FXeHNJR0psSUdadmNtTmxaQ0IwYnlBeE16QXlNRGd6SUdKNWRHVnpMZ29BVjJVZ1pHOGdibTkwSUhOMWNIQnZjblFnYlc5eVpTQjBhR0Z1SURNZ1kyOWthVzVuSUhCaGMzTmxjeUJwYmlCaGJpQklWQ0JqYjJSbFlteHZZMnM3SUZSb2FYTWdZMjlrWldKc2IyTnJjeUJvWVhNZ0pXUWdjR0Z6YzJWekxnb0FUV0ZzWm05eWJXVmtJRWhVSUdOdlpHVmliRzlqYXk0Z1JHVmpiMlJwYm1jZ2RHaHBjeUJqYjJSbFlteHZZMnNnYVhNZ2MzUnZjSEJsWkM0Z1ZHaGxjbVVnWVhKbElDVmtJSHBsY204Z1ltbDBjR3hoYm1WeklHbHVJQ1ZrSUdKcGRIQnNZVzVsY3k0S0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0J0ZFd4MGFYQnNaU0IwY21GdWMyWnZjbTFoZEdsdmJpQnpkR0ZuWlhNdUNnQkpiblpoYkdsa0lIWmhiSFZsSUdadmNpQnZjSFJwYjI0NklDVnpMZ29BU1c1MllXeHBaQ0J2Y0hScGIyNDZJQ1Z6TGdvQVZXNXJibTkzYmlCdFlYSnJaWElnYUdGeklHSmxaVzRnWkdWMFpXTjBaV1FnWVc1a0lHZGxibVZ5WVhSbFpDQmxjbkp2Y2k0S0FFTnZaR1ZqSUhCeWIzWnBaR1ZrSUhSdklIUm9aU0J2Y0dwZmMyVjBkWEJmWkdWamIyUmxjaUJtZFc1amRHbHZiaUJwY3lCdWIzUWdZU0JrWldOdmJYQnlaWE56YjNJZ2FHRnVaR3hsY2k0S0FFTnZaR1ZqSUhCeWIzWnBaR1ZrSUhSdklIUm9aU0J2Y0dwZmNtVmhaRjlvWldGa1pYSWdablZ1WTNScGIyNGdhWE1nYm05MElHRWdaR1ZqYjIxd2NtVnpjMjl5SUdoaGJtUnNaWEl1Q2dCVWFXeGxjeUJrYjI0bmRDQmhiR3dnYUdGMlpTQjBhR1VnYzJGdFpTQmthVzFsYm5OcGIyNHVJRk5yYVhBZ2RHaGxJRTFEVkNCemRHVndMZ29BVG5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZEhNZ0tDVmtLU0JwY3lCcGJtTnZibk5wYzNSbGJuUWdkMmwwYUNCaElFMURWQzRnVTJ0cGNDQjBhR1VnVFVOVUlITjBaWEF1Q2dCS1VESWdZbTk0SUhkb2FXTm9JR0Z5WlNCaFpuUmxjaUIwYUdVZ1kyOWtaWE4wY21WaGJTQjNhV3hzSUc1dmRDQmlaU0J5WldGa0lHSjVJSFJvYVhNZ1puVnVZM1JwYjI0dUNnQkJiSEJvWVNCamFHRnVibVZzSUhOd1pXTnBabWxsWkNCaWRYUWdibTkwSUdWdWIzVm5hQ0JwYldGblpTQmpiMjF3YjI1bGJuUnpJR1p2Y2lCaGJpQmhkWFJ2YldGMGFXTWdZMlJsWmlCaWIzZ2dZM0psWVhScGIyNHVDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQlhhR1Z1SUhSb1pTQnVkVzFpWlhJZ2IyWWdlbVZ5YnlCd2JHRnVaWE1nWW1sMGNHeGhibVZ6SUdseklHVnhkV0ZzSUhSdklIUm9aU0J1ZFcxaVpYSWdiMllnWW1sMGNHeGhibVZ6TENCdmJteDVJSFJvWlNCamJHVmhiblZ3SUhCaGMzTWdiV0ZyWlhNZ2MyVnVjMlVzSUdKMWRDQjNaU0JvWVhabElDVmtJSEJoYzNObGN5QnBiaUIwYUdseklHTnZaR1ZpYkc5amF5NGdWR2hsY21WbWIzSmxMQ0J2Ym14NUlIUm9aU0JqYkdWaGJuVndJSEJoYzNNZ2QybHNiQ0JpWlNCa1pXTnZaR1ZrTGlCVWFHbHpJRzFsYzNOaFoyVWdkMmxzYkNCdWIzUWdZbVVnWkdsemNHeGhlV1ZrSUdGbllXbHVMZ29BU1cxaFoyVWdhR0Z6SUd4bGMzTWdZMjl0Y0c5dVpXNTBjeUIwYUdGdUlHTnZaR1Z6ZEhKbFlXMHVDZ0JPWldWa0lIUnZJR1JsWTI5a1pTQjBhR1VnYldGcGJpQm9aV0ZrWlhJZ1ltVm1iM0psSUdKbFoybHVJSFJ2SUdSbFkyOWtaU0IwYUdVZ2NtVnRZV2x1YVc1bklHTnZaR1Z6ZEhKbFlXMHVDZ0JRYzI5MElIWmhiSFZsSUc5bUlIUm9aU0JqZFhKeVpXNTBJSFJwYkdVdGNHRnlkQ0JwY3lCbGNYVmhiQ0IwYnlCNlpYSnZMQ0IzWlNCaGMzTjFiV2x1WnlCcGRDQnBjeUIwYUdVZ2JHRnpkQ0IwYVd4bExYQmhjblFnYjJZZ2RHaGxJR052WkdWemRISmxZVzB1Q2dCR1lXbHNaV1FnZEc4Z2MyVmxheUJwYmlCMGFHVWdjM1J5WldGdExnb0FRU0J0WVd4bWIzSnRaV1FnWTI5a1pXSnNiMk5ySUhSb1lYUWdhR0Z6SUcxdmNtVWdkR2hoYmlCdmJtVWdZMjlrYVc1bklIQmhjM01zSUdKMWRDQjZaWEp2SUd4bGJtZDBhQ0JtYjNJZ01tNWtJR0Z1WkNCd2IzUmxiblJwWVd4c2VTQjBhR1VnTTNKa0lIQmhjM01nYVc0Z1lXNGdTRlFnWTI5a1pXSnNiMk5yTGdvQUNRa0pJSFJwYkdVdGNHRnlkRnNsWkYwNklITjBZWEpmY0c5elBTVnNiR2tzSUdWdVpGOW9aV0ZrWlhJOUpXeHNhU3dnWlc1a1gzQnZjejBsYkd4cExnb0FWR2xzWlNBbGRTQm9ZWE1nVkZCemIzUWdQVDBnTUNCaGJtUWdWRTV6YjNRZ1BUMGdNQ3dnWW5WMElHNXZJRzkwYUdWeUlIUnBiR1V0Y0dGeWRITWdkMlZ5WlNCbWIzVnVaQzRnUlU5RElHbHpJR0ZzYzI4Z2JXbHpjMmx1Wnk0S0FFTnZiWEJ2Ym1WdWRDQWxaQ0JrYjJWemJpZDBJR2hoZG1VZ1lTQnRZWEJ3YVc1bkxnb0FRU0JqYjI1bWIzSnRhVzVuSUVwUU1pQnlaV0ZrWlhJZ2MyaGhiR3dnYVdkdWIzSmxJR0ZzYkNCRGIyeHZkWElnVTNCbFkybG1hV05oZEdsdmJpQmliM2hsY3lCaFpuUmxjaUIwYUdVZ1ptbHljM1FzSUhOdklIZGxJR2xuYm05eVpTQjBhR2x6SUc5dVpTNEtBRlJvWlNCemFXZHVZWFIxY21VZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNBZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNCbWRIbHdJR0p2ZUNCdGRYTjBJR0psSUhSb1pTQnpaV052Ym1RZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlM0S0FFMWhiR1p2Y20xbFpDQklWQ0JqYjJSbFlteHZZMnN1SUVsdVkyOXljbVZqZENCTlJVd2djMlZuYldWdWRDQnpaWEYxWlc1alpTNEtBRU52YlhCdmJtVnVkQ0FsWkNCcGN5QnRZWEJ3WldRZ2RIZHBZMlV1Q2dCUGJteDVJRzl1WlNCRFRVRlFJR0p2ZUNCcGN5QmhiR3h2ZDJWa0xnb0FWMlVnYm1WbFpDQmhiaUJwYldGblpTQndjbVYyYVc5MWMyeDVJR055WldGMFpXUXVDZ0JCYkhCb1lTQmphR0Z1Ym1Wc0lITndaV05wWm1sbFpDQmlkWFFnZFc1cmJtOTNiaUJsYm5WdFkzTXVJRTV2SUdOa1pXWWdZbTk0SUhkcGJHd2dZbVVnWTNKbFlYUmxaQzRLQUVGc2NHaGhJR05vWVc1dVpXd2djRzl6YVhScGIyNGdZMjl1Wm14cFkzUnpJSGRwZEdnZ1kyOXNiM0lnWTJoaGJtNWxiQzRnVG04Z1kyUmxaaUJpYjNnZ2QybHNiQ0JpWlNCamNtVmhkR1ZrTGdvQVRYVnNkR2x3YkdVZ1lXeHdhR0VnWTJoaGJtNWxiSE1nYzNCbFkybG1hV1ZrTGlCT2J5QmpaR1ZtSUdKdmVDQjNhV3hzSUdKbElHTnlaV0YwWldRdUNnQktVRVZISURJd01EQWdVSEp2Wm1sc1pTMHpJR0Z1WkNBMElDZ3lheTgwYXlCa1l5QndjbTltYVd4bEtTQnlaWEYxYVhKbGN6b0tUV0Y0YVcxMWJTQXhNRFF4TmpZMklHTnZiWEJ5WlhOelpXUWdZbmwwWlhNZ1FDQXlOR1p3Y3dwQmN5QnVieUJ5WVhSbElHaGhjeUJpWldWdUlHZHBkbVZ1TENCMGFHbHpJR3hwYldsMElIZHBiR3dnWW1VZ2RYTmxaQzRLQUVwUVJVY2dNakF3TUNCUWNtOW1hV3hsTFRNZ1lXNWtJRFFnS0RKckx6UnJJR1JqSUhCeWIyWnBiR1VwSUhKbGNYVnBjbVZ6T2dwTllYaHBiWFZ0SURFek1ESXdPRE1nWTI5dGNISmxjM05sWkNCaWVYUmxjeUJBSURJMFpuQnpDa0Z6SUc1dklISmhkR1VnYUdGeklHSmxaVzRnWjJsMlpXNHNJSFJvYVhNZ2JHbHRhWFFnZDJsc2JDQmlaU0IxYzJWa0xnb0FTVWhFVWlCaWIzaGZiV2x6YzJsdVp5NGdVbVZ4ZFdseVpXUXVDZ0JLVURKSUlHSnZlQ0J0YVhOemFXNW5MaUJTWlhGMWFYSmxaQzRLQUU1dmRDQnpkWEpsSUdodmR5QjBhR0YwSUdoaGNIQmxibVZrTGdvQVRXRnBiaUJvWldGa1pYSWdhR0Z6SUdKbFpXNGdZMjl5Y21WamRHeDVJR1JsWTI5a1pXUXVDZ0JVYVd4bElDVmtMeVZrSUdoaGN5QmlaV1Z1SUdSbFkyOWtaV1F1Q2dCdmNHcGZkREpmWlc1amIyUmxYM0JoWTJ0bGRDZ3BPaUJ2Ym14NUlDVjFJR0o1ZEdWeklISmxiV0ZwYm1sdVp5QnBiaUJ2ZFhSd2RYUWdZblZtWm1WeUxpQWxkU0J1WldWa1pXUXVDZ0JJWldGa1pYSWdiMllnZEdsc1pTQWxaQ0F2SUNWa0lHaGhjeUJpWldWdUlISmxZV1F1Q2dCRmJYQjBlU0JUVDFRZ2JXRnlhMlZ5SUdSbGRHVmpkR1ZrT2lCUWMyOTBQU1ZrTGdvQVJHbHlaV04wSUhWelpTQmhkQ0FqSldRZ2FHOTNaWFpsY2lCd1kyOXNQU1ZrTGdvQVNXMXdiR1Z0Wlc1MFlYUnBiMjRnYkdsdGFYUmhkR2x2YmpvZ1ptOXlJSEJoYkdWMGRHVWdiV0Z3Y0dsdVp5d2djR052YkZzbFpGMGdjMmh2ZFd4a0lHSmxJR1Z4ZFdGc0lIUnZJQ1ZrTENCaWRYUWdhWE1nWlhGMVlXd2dkRzhnSldRdUNnQkpiblpoYkdsa0lHTnZiWEJ2Ym1WdWRDOXdZV3hsZEhSbElHbHVaR1Y0SUdadmNpQmthWEpsWTNRZ2JXRndjR2x1WnlBbFpDNEtBRWx1ZG1Gc2FXUWdkbUZzZFdVZ1ptOXlJR050WVhCYkpXUmRMbTEwZVhBZ1BTQWxaQzRLQUZCemIzUWdkbUZzZFdVZ2FYTWdibTkwSUdOdmNuSmxZM1FnY21WbllYSmtjeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlRvZ0pXUXVDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQldURU1nWTI5a1pTQndjbTlrZFdObGN5QnphV2R1YVdacFkyRnVkQ0J6WVcxd2JHVnpJRzkxZEhOcFpHVWdkR2hsSUdOdlpHVmliRzlqYXlCaGNtVmhMZ29BUTJGdWJtOTBJSEJsY21admNtMGdUVU5VSUc5dUlHTnZiWEJ2Ym1WdWRITWdkMmwwYUNCa2FXWm1aWEpsYm5RZ2MybDZaWE11SUVScGMyRmliR2x1WnlCTlExUXVDZ0JWYm1WNGNHVmpkR1ZrSUU5UFRTNEtBRlZ1YzNWd2NHOXlkR1ZrSUZCaGNuUXRNaUJsZUhSbGJuTnBiMjRnWlc1aFlteGxaQXBRY205bWFXeGxJSE5sZENCMGJ5Qk9UMDVGTGdvQVNsQkZSeUF5TURBd0lGQmhjblF0TWlCd2NtOW1hV3hsSUdSbFptbHVaV1FLWW5WMElHNXZJRkJoY25RdE1pQmxlSFJsYm5OcGIyNGdaVzVoWW14bFpDNEtVSEp2Wm1sc1pTQnpaWFFnZEc4Z1RrOU9SUzRLQURNeUlHSnBkSE1nWVhKbElHNXZkQ0JsYm05MVoyZ2dkRzhnWkdWamIyUmxJSFJvYVhNZ1kyOWtaV0pzYjJOckxDQnphVzVqWlNCMGFHVWdiblZ0WW1WeUlHOW1JR0pwZEhCc1lXNWxMQ0FsWkN3Z2FYTWdiR0Z5WjJWeUlIUm9ZVzRnTXpBdUNnQkNiM1IwYjIwZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgza3hQU1ZrS1NCemFHOTFiR1FnWW1VZ1BpQXdMZ29BVW1sbmFIUWdjRzl6YVhScGIyNGdiMllnZEdobElHUmxZMjlrWldRZ1lYSmxZU0FvY21WbmFXOXVYM2d4UFNWa0tTQnphRzkxYkdRZ1ltVWdQaUF3TGdvQVZYQWdjRzl6YVhScGIyNGdiMllnZEdobElHUmxZMjlrWldRZ1lYSmxZU0FvY21WbmFXOXVYM2t3UFNWa0tTQnphRzkxYkdRZ1ltVWdQajBnTUM0S0FFeGxablFnY0c5emFYUnBiMjRnYjJZZ2RHaGxJR1JsWTI5a1pXUWdZWEpsWVNBb2NtVm5hVzl1WDNnd1BTVmtLU0J6YUc5MWJHUWdZbVVnUGowZ01DNEtBRVZ5Y205eUlISmxZV1JwYm1jZ1VGQlVJRzFoY210bGNqb2djR0ZqYTJWMElHaGxZV1JsY2lCb1lYWmxJR0psWlc0Z2NISmxkbWx2ZFhOc2VTQm1iM1Z1WkNCcGJpQjBhR1VnYldGcGJpQm9aV0ZrWlhJZ0tGQlFUU0J0WVhKclpYSXBMZ29BVTNSaGNuUWdkRzhnY21WaFpDQnFNbXNnYldGcGJpQm9aV0ZrWlhJZ0tDVnNiR1FwTGdvQVFtOTBkRzl0SUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NU1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV1hOcGVqMGxaQ2t1Q2dCVmNDQndiM05wZEdsdmJpQnZaaUIwYUdVZ1pHVmpiMlJsWkNCaGNtVmhJQ2h5WldkcGIyNWZlVEE5SldRcElHbHpJRzkxZEhOcFpHVWdkR2hsSUdsdFlXZGxJR0Z5WldFZ0tGbHphWG85SldRcExnb0FVbWxuYUhRZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgzZ3hQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWWMybDZQU1ZrS1M0S0FFeGxablFnY0c5emFYUnBiMjRnYjJZZ2RHaGxJR1JsWTI5a1pXUWdZWEpsWVNBb2NtVm5hVzl1WDNnd1BTVmtLU0JwY3lCdmRYUnphV1JsSUhSb1pTQnBiV0ZuWlNCaGNtVmhJQ2hZYzJsNlBTVmtLUzRLQUVKdmRIUnZiU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZVRFOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmxQYzJsNlBTVmtLUzRLQUZWd0lIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTVNRDBsWkNrZ2FYTWdiM1YwYzJsa1pTQjBhR1VnYVcxaFoyVWdZWEpsWVNBb1dVOXphWG85SldRcExnb0FVbWxuYUhRZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgzZ3hQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWVQzTnBlajBsWkNrdUNnQk1aV1owSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1EMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0U5emFYbzlKV1FwTGdvQVUybDZaU0I0SUc5bUlIUm9aU0JrWldOdlpHVmtJR052YlhCdmJtVnVkQ0JwYldGblpTQnBjeUJwYm1OdmNuSmxZM1FnS0dOdmJYQmJKV1JkTG5jOUpXUXBMZ29BVTJsNlpTQjVJRzltSUhSb1pTQmtaV052WkdWa0lHTnZiWEJ2Ym1WdWRDQnBiV0ZuWlNCcGN5QnBibU52Y25KbFkzUWdLR052YlhCYkpXUmRMbWc5SldRcExnb0FWR2xzWlNCeVpXRmtMQ0JrWldOdlpHVmtJR0Z1WkNCMWNHUmhkR1ZrSUdseklHNXZkQ0IwYUdVZ1pHVnphWEpsWkNCdmJtVWdLQ1ZrSUhaeklDVmtLUzRLQUVsdWRtRnNhV1FnWTI5dGNHOXVaVzUwSUdsdVpHVjRJQ1ZrSUNnK1BTQWxaQ2t1Q2dCdmNHcGZjbVZoWkY5b1pXRmtaWElvS1NCemFHOTFiR1FnWW1VZ1kyRnNiR1ZrSUdKbFptOXlaU0J2Y0dwZmMyVjBYMlJsWTI5a1pXUmZZMjl0Y0c5dVpXNTBjeWdwTGdvQVRXVnRiM0o1SUdGc2JHOWpZWFJwYjI0Z1ptRnBiSFZ5WlNCcGJpQnZjR3BmYW5BeVgyRndjR3g1WDNCamJISW9LUzRLQUdsdFlXZGxMVDVqYjIxd2Mxc2xaRjB1WkdGMFlTQTlQU0JPVlV4TUlHbHVJRzl3YWw5cWNESmZZWEJ3YkhsZmNHTnNjaWdwTGdvQWFXNTJZV3hwWkNCaWIzZ2djMmw2WlNBbFpDQW9KWGdwQ2dCR1lXbHNJSFJ2SUhKbFlXUWdkR2hsSUdOMWNuSmxiblFnYldGeWEyVnlJSE5sWjIxbGJuUWdLQ1VqZUNrS0FFVnljbTl5SUhkcGRHZ2dVMGxhSUcxaGNtdGxjam9nU1VoRVVpQjNLQ1YxS1NCb0tDVjFLU0IyY3k0Z1UwbGFJSGNvSlhVcElHZ29KWFVwQ2dCRmNuSnZjaUJ5WldGa2FXNW5JRU5QUXlCdFlYSnJaWElnS0dKaFpDQnVkVzFpWlhJZ2IyWWdZMjl0Y0c5dVpXNTBjeWtLQUVsdWRtRnNhV1FnYm5WdFltVnlJRzltSUhScGJHVnpJRG9nSlhVZ2VDQWxkU0FvYldGNGFXMTFiU0JtYVhobFpDQmllU0JxY0dWbk1qQXdNQ0J1YjNKdElHbHpJRFkxTlRNMUlIUnBiR1Z6S1FvQVNXNTJZV3hwWkNCdWRXMWlaWElnYjJZZ1kyOXRjRzl1Wlc1MGN5QW9hV2hrY2lrS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJR2hoYm1Sc1pTQnBiV0ZuWlNCb1pXRmtaWElnS0dsb1pISXBDZ0JYY205dVp5QjJZV3gxWlhNZ1ptOXlPaUIzS0NWa0tTQm9LQ1ZrS1NCdWRXMWpiMjF3Y3lnbFpDa2dLR2xvWkhJcENnQkpiblpoYkdsa0lIWmhiSFZsY3lCbWIzSWdZMjl0Y0NBOUlDVmtJRG9nWkhnOUpYVWdaSGs5SlhVZ0tITm9iM1ZzWkNCaVpTQmlaWFIzWldWdUlERWdZVzVrSURJMU5TQmhZMk52Y21ScGJtY2dkRzhnZEdobElFcFFSVWN5TURBd0lHNXZjbTBwQ2dCMFkzQmZjbUYwWlhOYkpXUmRQU1ZtSUhOb2IzVnNaQ0JpWlNCemRISnBZM1JzZVNCc1pYTnpaWElnZEdoaGJpQjBZM0JmY21GMFpYTmJKV1JkUFNWbUlDaGpiM0p5WldOMFpXUWdZWE1nSldZcENnQjBZM0JmY21GMFpYTmJKV1JkUFNWbUlDaGpiM0p5WldOMFpXUWdZWE1nSldZcElITm9iM1ZzWkNCaVpTQnpkSEpwWTNSc2VTQnNaWE56WlhJZ2RHaGhiaUIwWTNCZmNtRjBaWE5iSldSZFBTVm1JQ2hqYjNKeVpXTjBaV1FnWVhNZ0pXWXBDZ0JDWVdRZ2FXMWhaMlVnYUdWaFpHVnlJR0p2ZUNBb1ltRmtJSE5wZW1VcENnQkNZV1FnUTA5TVVpQm9aV0ZrWlhJZ1ltOTRJQ2hpWVdRZ2MybDZaU2tLQUVKaFpDQkNVRU5ESUdobFlXUmxjaUJpYjNnZ0tHSmhaQ0J6YVhwbEtRb0FSWEp5YjNJZ2QybDBhQ0JUU1ZvZ2JXRnlhMlZ5T2lCdVpXZGhkR2wyWlNCdmNpQjZaWEp2SUdsdFlXZGxJSE5wZW1VZ0tDVnNiR1FnZUNBbGJHeGtLUW9BYzJ0cGNEb2djMlZuYldWdWRDQjBiMjhnYkc5dVp5QW9KV1FwSUhkcGRHZ2diV0Y0SUNnbFpDa2dabTl5SUdOdlpHVmliRzlqYXlBbFpDQW9jRDBsWkN3Z1lqMGxaQ3dnY2owbFpDd2dZejBsWkNrS0FISmxZV1E2SUhObFoyMWxiblFnZEc5dklHeHZibWNnS0NWa0tTQjNhWFJvSUcxaGVDQW9KV1FwSUdadmNpQmpiMlJsWW14dlkyc2dKV1FnS0hBOUpXUXNJR0k5SldRc0lISTlKV1FzSUdNOUpXUXBDZ0JFWlhOd2FYUmxJRXBRTWlCQ1VFTWhQVEkxTlN3Z2NISmxZMmx6YVc5dUlHRnVaQzl2Y2lCeloyNWtJSFpoYkhWbGN5Qm1iM0lnWTI5dGNGc2xaRjBnYVhNZ1pHbG1abVZ5Wlc1MElIUm9ZVzRnWTI5dGNGc3dYVG9LSUNBZ0lDQWdJQ0JiTUYwZ2NISmxZeWdsWkNrZ2MyZHVaQ2dsWkNrZ1d5VmtYU0J3Y21WaktDVmtLU0J6WjI1a0tDVmtLUW9BWW1Ga0lHTnZiWEJ2Ym1WdWRDQnVkVzFpWlhJZ2FXNGdVa2RPSUNnbFpDQjNhR1Z1SUhSb1pYSmxJR0Z5WlNCdmJteDVJQ1ZrS1FvQVJYSnliM0lnZDJsMGFDQlRTVm9nYldGeWEyVnlPaUJ1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwSUdseklHNXZkQ0JqYjIxd1lYUnBZbXhsSUhkcGRHZ2dkR2hsSUhKbGJXRnBibWx1WnlCdWRXMWlaWElnYjJZZ2NHRnlZVzFsZEdWeWN5QW9JQ1ZrSUhaeklDVmtLUW9BU2xCRlJ5QXlNREF3SUZCeWIyWnBiR1V0TkNBb05Hc2daR01nY0hKdlptbHNaU2tnY21WeGRXbHlaWE02Q2s1MWJXSmxjaUJ2WmlCa1pXTnZiWEJ2YzJsMGFXOXVJR3hsZG1Wc2N5QStQU0F4SUNZbUlEdzlJRFlLTFQ0Z1RuVnRZbVZ5SUc5bUlHUmxZMjl0Y0c5emFYUnBiMjRnYkdWMlpXeHpJR1p2Y21ObFpDQjBieUEySUNoeVlYUm9aWElnZEdoaGJpQWxaQ2tLQUVwUVJVY2dNakF3TUNCUWNtOW1hV3hsTFRNZ0tESnJJR1JqSUhCeWIyWnBiR1VwSUhKbGNYVnBjbVZ6T2dwT2RXMWlaWElnYjJZZ1pHVmpiMjF3YjNOcGRHbHZiaUJzWlhabGJITWdQRDBnTlFvdFBpQk9kVzFpWlhJZ2IyWWdaR1ZqYjIxd2IzTnBkR2x2YmlCc1pYWmxiSE1nWm05eVkyVmtJSFJ2SURVZ0tISmhkR2hsY2lCMGFHRnVJQ1ZrS1FvQVNsQkZSeUF5TURBd0lGQnliMlpwYkdVdE5DQW9OR3NnWkdNZ2NISnZabWxzWlNrZ2NtVnhkV2x5WlhNNkNrNTFiV0psY2lCdlppQmtaV052YlhCdmMybDBhVzl1SUd4bGRtVnNjeUErUFNBeElDWW1JRHc5SURZS0xUNGdUblZ0WW1WeUlHOW1JR1JsWTI5dGNHOXphWFJwYjI0Z2JHVjJaV3h6SUdadmNtTmxaQ0IwYnlBeElDaHlZWFJvWlhJZ2RHaGhiaUFsWkNrS0FFVnljbTl5SUhkcGRHZ2dVMGxhSUcxaGNtdGxjam9nYVc1MllXeHBaQ0IwYVd4bElITnBlbVVnS0hSa2VEb2dKV1FzSUhSa2VUb2dKV1FwQ2dCQ1lXUWdRMDlNVWlCb1pXRmtaWElnWW05NElDaGlZV1FnYzJsNlpUb2dKV1FwQ2dCQ1lXUWdRMDlNVWlCb1pXRmtaWElnWW05NElDaERTVVZNWVdJc0lHSmhaQ0J6YVhwbE9pQWxaQ2tLQUZCVVJWSk5JR05vWldOcklHWmhhV3gxY21VNklDVmtJSEpsYldGcGJtbHVaeUJpZVhSbGN5QnBiaUJqYjJSbElHSnNiMk5ySUNnbFpDQjFjMlZrSUM4Z0pXUXBDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQlBibVVnYjJZZ2RHaGxJR1p2Ykd4dmQybHVaeUJqYjI1a2FYUnBiMjRnYVhNZ2JtOTBJRzFsZERvZ01pQThQU0JUWTNWd0lEdzlJRzFwYmloTVkzVndMQ0EwTURjNUtRb0FTVzUyWVd4cFpDQjJZV3gxWlhNZ1ptOXlJR052YlhBZ1BTQWxaQ0E2SUhCeVpXTTlKWFVnS0hOb2IzVnNaQ0JpWlNCaVpYUjNaV1Z1SURFZ1lXNWtJRE00SUdGalkyOXlaR2x1WnlCMGJ5QjBhR1VnU2xCRlJ6SXdNREFnYm05eWJTNGdUM0JsYmtwd1pXY2diMjVzZVNCemRYQndiM0owY3lCMWNDQjBieUF6TVNrS0FFbHVkbUZzYVdRZ1ltbDBJRzUxYldKbGNpQWxaQ0JwYmlCdmNHcGZkREpmY21WaFpGOXdZV05yWlhSZmFHVmhaR1Z5S0NrS0FGTjBjbVZoYlNCbGNuSnZjaUVLQUVWeWNtOXlJRzl1SUhkeWFYUnBibWNnYzNSeVpXRnRJUW9BVFc5eVpTQjBhR0Z1SURJMU5TQlFURlFnYldGeWEyVnljeUIzYjNWc1pDQmlaU0J1WldWa1pXUWdabTl5SUdOMWNuSmxiblFnZEdsc1pTMXdZWEowSUNFS0FGTjBjbVZoYlNCeVpXRmphR1ZrSUdsMGN5QmxibVFnSVFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZV3hzYjJOaGRHVWdZMjl3ZVNCdlppQjFjMlZ5SUdWdVkyOWthVzVuSUhCaGNtRnRaWFJsY25NZ2JXRjBjbWw0SUFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZV3hzYjJOaGRHVWdaVzVqYjJSbGNpQk5RMVFnWkdWamIyUnBibWNnYldGMGNtbDRJQW9BUm1GcGJHVmtJSFJ2SUdsdWRtVnljMlVnWlc1amIyUmxjaUJOUTFRZ1pHVmpiMlJwYm1jZ2JXRjBjbWw0SUFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZV3hzYjJOaGRHVWdaVzVqYjJSbGNpQk5RMVFnWTI5a2FXNW5JRzFoZEhKcGVDQUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdGc2JHOWpZWFJsSUdWdVkyOWtaWElnVFVOVUlHNXZjbTF6SUFvQVJYaHdaV04wWldRZ1lTQlRUME1nYldGeWEyVnlJQW9BU1c1MllXeHBaQ0JpYjNnZ2MybDZaU0FsWkNCbWIzSWdZbTk0SUNjbFl5VmpKV01sWXljdUlFNWxaV1FnSldRZ1lubDBaWE1zSUNWa0lHSjVkR1Z6SUhKbGJXRnBibWx1WnlBS0FFMWhiR1p2Y20xbFpDQklWQ0JqYjJSbFlteHZZMnN1SUVSbFkyOWthVzVuSUhSb2FYTWdZMjlrWldKc2IyTnJJR2x6SUhOMGIzQndaV1F1SUZWZmNTQnBjeUJzWVhKblpYSWdkR2hoYmlCNlpYSnZJR0pwZEhCc1lXNWxjeUFySURFZ0NnQk5ZV3htYjNKdFpXUWdTRlFnWTI5a1pXSnNiMk5yTGlCRVpXTnZaR2x1WnlCMGFHbHpJR052WkdWaWJHOWpheUJwY3lCemRHOXdjR1ZrTGlCVlgzRWdhWE5zWVhKblpYSWdkR2hoYmlCaWFYUndiR0Z1WlhNZ0t5QXhJQW9BUTA5TVVpQkNUMWdnYldWMGFDQjJZV3gxWlNCcGN5QnViM1FnWVNCeVpXZDFiR0Z5SUhaaGJIVmxJQ2dsWkNrc0lITnZJSGRsSUhkcGJHd2dhV2R1YjNKbElIUm9aU0JsYm5ScGNtVWdRMjlzYjNWeUlGTndaV05wWm1sallYUnBiMjRnWW05NExpQUtBRmRvYVd4bElISmxZV1JwYm1jZ1EwTlFYMUZPVkZOVVdTQmxiR1Z0Wlc1MElHbHVjMmxrWlNCUlEwUWdiM0lnVVVORElHMWhjbXRsY2lCelpXZHRaVzUwTENCdWRXMWlaWElnYjJZZ2MzVmlZbUZ1WkhNZ0tDVmtLU0JwY3lCbmNtVmhkR1Z5SUhSdklFOVFTbDlLTWt0ZlRVRllRa0ZPUkZNZ0tDVmtLUzRnVTI4Z2QyVWdiR2x0YVhRZ2RHaGxJRzUxYldKbGNpQnZaaUJsYkdWdFpXNTBjeUJ6ZEc5eVpXUWdkRzhnVDFCS1gwb3lTMTlOUVZoQ1FVNUVVeUFvSldRcElHRnVaQ0J6YTJsd0lIUm9aU0J5WlhOMExpQUtBRXBRTWlCSlNFUlNJR0p2ZURvZ1kyOXRjSEpsYzNOcGIyNGdkSGx3WlNCcGJtUnBZMkYwWlNCMGFHRjBJSFJvWlNCbWFXeGxJR2x6SUc1dmRDQmhJR052Ym1admNtMXBibWNnU2xBeUlHWnBiR1VnS0NWa0tTQUtBRlJwYkdVZ2FXNWtaWGdnY0hKdmRtbGtaV1FnWW5rZ2RHaGxJSFZ6WlhJZ2FYTWdhVzVqYjNKeVpXTjBJQ1ZrSUNodFlYZ2dQU0FsWkNrZ0NnQkZjbkp2Y2lCa1pXTnZaR2x1WnlCamIyMXdiMjVsYm5RZ0pXUXVDbFJvWlNCdWRXMWlaWElnYjJZZ2NtVnpiMngxZEdsdmJuTWdkRzhnY21WdGIzWmxJQ2dsWkNrZ2FYTWdaM0psWVhSbGNpQnZjaUJsY1hWaGJDQjBhR0Z1SUhSb1pTQnVkVzFpWlhJZ2IyWWdjbVZ6YjJ4MWRHbHZibk1nYjJZZ2RHaHBjeUJqYjIxd2IyNWxiblFnS0NWa0tRcE5iMlJwWm5rZ2RHaGxJR053WDNKbFpIVmpaU0J3WVhKaGJXVjBaWEl1Q2dvQVNXMWhaMlVnWkdGMFlTQm9ZWE1nWW1WbGJpQjFjR1JoZEdWa0lIZHBkR2dnZEdsc1pTQWxaQzRLQ2dBQTJMOEFBRXh4QUFCT1UzUXpYMTh5TVRKaVlYTnBZMTl6ZEhKcGJtZEpkMDVUWHpFeFkyaGhjbDkwY21GcGRITkpkMFZGVGxOZk9XRnNiRzlqWVhSdmNrbDNSVVZGUlFBQTJMOEFBSlJ4QUFCT1UzUXpYMTh5TVRKaVlYTnBZMTl6ZEhKcGJtZEpSSE5PVTE4eE1XTm9ZWEpmZEhKaGFYUnpTVVJ6UlVWT1UxODVZV3hzYjJOaGRHOXlTVVJ6UlVWRlJRQUFBTmkvQUFEZ2NRQUFUbE4wTTE5Zk1qRXlZbUZ6YVdOZmMzUnlhVzVuU1VScFRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsRWFVVkZUbE5mT1dGc2JHOWpZWFJ2Y2tsRWFVVkZSVVVBQUFEWXZ3QUFMSElBQUU0eE1HVnRjMk55YVhCMFpXNHhNVzFsYlc5eWVWOTJhV1YzU1dORlJRQUEyTDhBQUZSeUFBQk9NVEJsYlhOamNtbHdkR1Z1TVRGdFpXMXZjbmxmZG1sbGQwbGhSVVVBQU5pL0FBQjhjZ0FBVGpFd1pXMXpZM0pwY0hSbGJqRXhiV1Z0YjNKNVgzWnBaWGRKYzBWRkFBRFl2d0FBcEhJQUFFNHhNR1Z0YzJOeWFYQjBaVzR4TVcxbGJXOXllVjkyYVdWM1NYUkZSUUFBMkw4QUFNeHlBQUJPTVRCbGJYTmpjbWx3ZEdWdU1URnRaVzF2Y25sZmRtbGxkMGxwUlVVQUFOaS9BQUQwY2dBQVRqRXdaVzF6WTNKcGNIUmxiakV4YldWdGIzSjVYM1pwWlhkSmFrVkZBQURZdndBQUhITUFBRTR4TUdWdGMyTnlhWEIwWlc0eE1XMWxiVzl5ZVY5MmFXVjNTV3hGUlFBQTJMOEFBRVJ6QUFCT01UQmxiWE5qY21sd2RHVnVNVEZ0WlcxdmNubGZkbWxsZDBsdFJVVUFBTmkvQUFCc2N3QUFUakV3WlcxelkzSnBjSFJsYmpFeGJXVnRiM0o1WDNacFpYZEplRVZGQUFEWXZ3QUFsSE1BQUU0eE1HVnRjMk55YVhCMFpXNHhNVzFsYlc5eWVWOTJhV1YzU1hsRlJRQUEyTDhBQUx4ekFBQk9NVEJsYlhOamNtbHdkR1Z1TVRGdFpXMXZjbmxmZG1sbGQwbG1SVVVBQU5pL0FBRGtjd0FBVGpFd1pXMXpZM0pwY0hSbGJqRXhiV1Z0YjNKNVgzWnBaWGRKWkVWRkFBQUlkQUFBMkw4QUFCQjBBQUJPVTNRelgxOHlNVEppWVhOcFkxOXpkSEpwYm1kSlkwNVRYekV4WTJoaGNsOTBjbUZwZEhOSlkwVkZUbE5mT1dGc2JHOWpZWFJ2Y2tsalJVVkZSUUJ3Y0FBQUFOaS9BQUJjZEFBQU9VWnlZVzFsU1c1bWJ3QndBSFp3QUdsd2NBQjJjSEJwQUFBQUFOaS9BQUNBZEFBQU5WQnZhVzUwQUFEWXZ3QUFrSFFBQURSVGFYcGxBQUFBMkw4QUFLQjBBQUF4TUVveVMwUmxZMjlrWlhJQUFBQUFYTUFBQU1CMEFBQUFBQUFBbUhRQUFGQXhNRW95UzBSbFkyOWtaWElBQUFCY3dBQUE0SFFBQUFFQUFBQ1lkQUFBVUVzeE1Fb3lTMFJsWTI5a1pYSUFkZ0FBQUFDd2RBQUFCSFVBQUxCMEFBQ1V2d0FBMkw4QUFBeDFBQUJPTVRCbGJYTmpjbWx3ZEdWdU0zWmhiRVVBY0hCd2NBRFl2d0FBTEhVQUFFNHhNR1Z0YzJOeWFYQjBaVzR4TVcxbGJXOXllVjkyYVdWM1NXaEZSUUFBQkhVQUFMQjBBQUJ3Y0hBQUJIVUFBQ1IxQUFBUXZ3QUFzSFFBQUhad2NBQ0lkQUFBc0hRQUFIQy9BQUJ3Y0hCcEFBQUFBQkMvQUFDd2RBQUFsTDhBQUpTL0FBQjJjSEJ3Y0FBQUFGUjBBQURRZEFBQWxMOEFBTkIwQUFCd2NIQUFLTDhBQU5CMEFBQnd2d0FBMEhRQUFIaDBBQURRZEFBQWlIUUFBTkIwQUFCd3Z3QUEwSFFBQUpTL0FBRFFkQUFBMkw4QUFPUjFBQUF4TUVveVMwVnVZMjlrWlhJQUFBQUFYTUFBQUFSMkFBQUFBQUFBM0hVQUFGQXhNRW95UzBWdVkyOWtaWElBQUFCY3dBQUFKSFlBQUFFQUFBRGNkUUFBVUVzeE1Fb3lTMFZ1WTI5a1pYSUFBUFIxQUFBRWRRQUE5SFVBQUZSMEFBQndjSEJ3QUFBQUFBUjFBQUQwZFFBQUVMOEFBUFIxQUFBUXZ3QUE5SFVBQUpTL0FBQjJjSEJ3QUFBQUFCQy9BQUQwZFFBQUtMOEFBSlMvQUFCMmNIQnBjQT09IiksIE4oTSwgMzAzNTIsICJFTDhBQVBSMUFBQ1V2d0FBZUhRQUFIWndjSEJ3QUFBQUVMOEFBUFIxQUFCNGRBQUFkbkJ3Y0FBQUFBQVF2d0FBOUhVQUFJaDAiKSwgTihNLCAzMDQxNiwgIkVMOEFBUFIxQUFDVXZ3QUFpSFFBQUJDL0FBRDBkUUFBbEw4QUFMaS9BQUIyY0hCd1pnPT0iKSwgTihNLCAzMDQ2NCwgImc4REtvVVcyK3o5Lyt6cHd6b2pxUDMvN09uRE9pT28vQUFBQUFBQUFBQUNEd01xaFJiYjdQK0Y2Rks1SDRmdy9YcnBKREFJcitUOD0iKSwgTihNLCAzMDUzNCwgIjhEOEFBQUFBQUFENFB3QUFBQUFBQUFaQUFBQUFBQUNBRlVCY2o4TDFLRndsUU5lamNEMEtWelZBOWloY2o4SlZSVUNGNjFHNEhsVlZRR1ptWm1abVZtVkF6Y3pNek14VWRVRFA5MVBqcFp2d1AwYTI4LzNVZVBrL0p6RUlyQnhhQjBBZFdtUTczODhXUUNsY2o4TDFxQ1pBcEhBOUN0ZWpOa0FBQUFBQUFLQkdRQitGNjFHNG5sWkF6Y3pNek15Y1prQUFBQUFBQUFBQUFNLzNVK09sbS9BL1JyYnovZFI0K1Q4bk1RaXNIRm9IUUIxYVpEdmZ6eFpBS1Z5UHd2V29Ka0NrY0QwSzE2TTJRQUFBQUFBQW9FWkFINFhyVWJpZVZrRE56TXpNekp4bVFBQUFBQUFBQUFBQXJmcGNiY1grNWo5V2ZhNjJZbi90UDhkTE40bEJZUGsvOHRKTlloQllDRUQ2Zm1xOGRCTVlRSVhyVWJnZUJTaEFBQUFBQUFBQU9FQmNqOEwxS1B4SFFPeFJ1QjZGKzFkQSIpLCBOKE0sIDMwODU0LCAiOEQ5eFBRclhvM0QvUDJpUjdYdy90UkJBZFpNWUJGYk9JRUJtWm1abVp1WXdRT3hSdUI2RjYwQkFYSS9DOVNqc1VFQ2FtWm1abWVsZ1FKcVptWm1aNlhCQU16TXpNelBuZ0VDVEdBUldEaTBBUUxiei9kUjQ2UTlBOWloY2o4SzFJRUFLMTZOd1BRb3hRTVAxS0Z5UElrRkF1QjZGNjFFb1VVQ2FtWm1abVNsaFFKcVptWm1aS1hGQUFBQUFBQUFvZ1VBQUFBQUFBQUFBQUpNWUJGWU9MUUJBdHZQOTFIanBEMEQyS0Z5UHdyVWdRQXJYbzNBOUNqRkF3L1VvWEk4aVFVQzRIb1hyVVNoUlFKcVptWm1aS1dGQW1wbVptWmtwY1VBQUFBQUFBQ2lCUUFBQUFBQUFBQUFBcEhBOUN0ZWpBRURzVWJnZWhlc09RSGUrbnhvdm5TQkFya2ZoZWhRdU1VQjdGSzVINFZwQlFQWW9YSS9DWlZGQW1wbVptWmxwWVVDYW1abVptV2x4UUpxWm1abVphWUZBQUFBQUFBQUFBQUJEY21WaGRHVmtJR0o1SUU5d1pXNUtVRVZISUhabGNuTnBiMjRnQUFBQUFBSUFBQUFFQUFBQUJBQUFBQWdBQUFDWEFBQUFtQUFBQUprQUFBQ2FBQUFBQkFBQUFFTlFVa3dBQUFBQUFBQUFBRXhTUTFBQUFBQUFBd0FBQUZCRFVrd0FBQUFBQVFBQUFGSk1RMUFBQUFBQUFnQUFBRkpRUTB3QUFBQUEvLy8vL3c9PSIpLCBOKE0sIDMxMzEyLCAiRHdBQkFBRUFBUUFDQUFNQUJBQUZBQVlBQndBSUFBaz0iKSwgTihNLCAzMTM0NCwgImtQOEFBQXdBQUFDYkFBQUFVdjhBQUJRQUFBQ2NBQUFBVS84QUFCUUFBQUNkQUFBQVh2OEFBQlFBQUFDZUFBQUFYUDhBQUJRQUFBQ2ZBQUFBWGY4QUFCUUFBQUNnQUFBQVgvOEFBQlFBQUFDaEFBQUFVZjhBQUFJQUFBQ2lBQUFBVmY4QUFBUUFBQUNqQUFBQVYvOEFBQVFBQUFDa0FBQUFXUDhBQUJBQUFBQ2xBQUFBWVA4QUFBUUFBQUNtQUFBQVlmOEFBQkFBQUFDbkFBQUFrZjg9IiksIE4oTSwgMzE1MTIsICJZLzhBQUFRQUFBQ29BQUFBWlA4QUFCUUFBQUNwQUFBQWRQOEFBQlFBQUFDcUFBQUFlUDhBQUFRQUFBQ3JBQUFBVVA4QUFBUUFBQUNzQUFBQVdmOEFBQVFBQUFDdEFBQUFkZjhBQUJRQUFBQ3VBQUFBZC84QUFCUUFBQUN2QUFBQUFBQUFBQlE9IiksIE4oTSwgMzE2MzIsICJzQUFBQUxFQUFBQ3lBQUFBc3dBQUFMUUFBQUMxQUFBQXRnQUFBTGNBQUFCRDNoTUFJZThKQUVQZUV3QUM1UThBZ2ZJSEFBTGxEdz09IiksIE4oTSwgMzE2OTYsICJJQ0JRYXNRQUFBQndlWFJteFFBQUFHZ3ljR3JHIiksIE4oTSwgMzE3MjgsICJjbVJvYWNjQUFBQnliRzlqeUFBQUFHTmpjR0xKQUFBQWNteGpjTW9BQUFCd1lXMWp5d0FBQUdabFpHUE1BQUFBQXdBQUFBRUFBQUFEQUFBQUFBQUFBQ01BcFFCREFHWUFnd0R1cUJRQTM5Z2pBTDRRUXdELzlZTUFmaUJWQUY5Ukl3QTFBRU1BVGtTREFNN0VGQURQekNNQS91SkRBUCtaZ3dDV0FNVUFQekVqQUtVQVF3QmVSSU1BenNnVUFOOFJJd0QrOUVNQS8veURBSjRBVlFCM0FDTUFOUUJEQVAveGd3Q3VpQlFBdHdBakFQNzRRd0R2NUlNQWpvakZBQjhSSXdDbEFFTUFaZ0NEQU82b0ZBRGZWQ01BdmhCREFPOGlnd0IrSUZVQWZ5SWpBRFVBUXdCT1JJTUF6c1FVQUw4Ukl3RCs0a01BOXdDREFKWUF4UUEvSWlNQXBRQkRBRjVFZ3dET3lCUUExd0FqQVA3MFF3RC91b01BbmdCVkFHOEFJd0ExQUVNQS8rYURBSzZJRkFDdm9pTUEvdmhEQU9jQWd3Q09pTVVBTHlJQ0FNVUFoQUIrSUFJQXpzUWtBUGNBQWdEK29rUUFWZ0FDQUo0QUZBRFhBQUlBdmhDRUFHWUFBZ0N1aUNRQTN4RUNBTzZvUkFBMkFBSUFqb2dVQUI4UkFnREZBSVFBYmdBQ0FNNklKQUQvaUFJQS9yaEVBRTVFQWdDV0FCUUF0d0FDQVA3a2hBQmVSQUlBcGdBa0FPY0FBZ0RlVkVRQUxpSUNBRDRBRkFCM0FBSUF4UUNFQUg0Z0FnRE94Q1FBLy9FQ0FQNmlSQUJXQUFJQW5nQVVBTDhSQWdDK0VJUUFaZ0FDQUs2SUpBRHZJZ0lBN3FoRUFEWUFBZ0NPaUJRQWZ5SUNBTVVBaEFCdUFBSUF6b2drQU8va0FnRCt1RVFBVGtRQ0FKWUFGQUN2b2dJQS91U0VBRjVFQWdDbUFDUUEzOWdDQU41VVJBQXVJZ0lBUGdBVUFGOVJBZ0JWQUlRQVpnQUNBTjZJSkFEL01nSUEvaEZFQUU1RUFnQ3VBQlFBdHdBQ0FINHhoQUJlVVFJQXhnQWtBTmNBQWdEdUlFUUFIaEVDQUo0QUZBQjNBQUlBVlFDRUFGNVVBZ0RPUkNRQTV3QUNBUDd4UkFBMkFBSUFwZ0FVQUY5VkFnRCtkSVFBUGhFQ0FMNGdKQUIvZEFJQTNzUkVBUC80QWdDV0FCUUFMeUlDQUZVQWhBQm1BQUlBM29na0FQY0FBZ0QrRVVRQVRrUUNBSzRBRkFDUGlBSUFmakdFQUY1UkFnREdBQ1FBejhnQ0FPNGdSQUFlRVFJQW5nQVVBRzhBQWdCVkFJUUFYbFFDQU01RUpBRGYwUUlBL3ZGRUFEWUFBZ0NtQUJRQWZ5SUNBUDUwaEFBK0VRSUF2aUFrQUw4aUFnRGV4RVFBN3lJQ0FKWUFGQUEvTWdNQTN0VDk5UC84RkFBK0VWVUFqNGdEQUw0eWhRRG5BQ1VBWGxIK3FuOXlBd0RPUlAzNDcwUVVBSDVrUlFDdm9nTUFwZ0JkVmQrWi9mRTJBUDcxYjJJREFON1IvZlQvNWhRQWZuRlZBTCt4QXdDdWlJVUEzOVVsQUU1RS92Si9aZ01BeGdEOStPL2lGQUJlVkVVQW54RURBSllBWFZYUHlQM3hIaEh1eUdjQUF3RGUxUDMwLy9NVUFENFJWUUMvRVFNQXZqS0ZBTi9ZSlFCZVVmNnFMeUlEQU01RS9majNBQlFBZm1SRkFKK1lBd0NtQUYxVjF3RDk4VFlBL3ZWdlJBTUEzdEg5OVArNUZBQitjVlVBdHdBREFLNkloUURmM0NVQVRrVCs4bmNBQXdER0FQMzQ3K1FVQUY1VVJRQi9jd01BbGdCZFZiKzQvZkVlRWU3SVB6SUNBS1VBaEFCK1FBSUEzaEFrQU44UkFnRCtja1FBVmdBQ0FLNm9GQUMvc2dJQWxnQ0VBR1lBQWdER0FDUUE1d0FDQU83SVJBQXVJZ0lBam9nVUFIY0FBZ0NsQUlRQWJnQUNBTTZJSkFEM0FBSUEvcEZFQURZQUFnQ3VvaFFBcjZvQ0FQNjRoQUJlQUFJQXZnQWtBTS9FQWdEdVJFUUEvL1FDQUQ0aUZBQWZFUUlBcFFDRUFINUFBZ0RlRUNRQS81a0NBUDV5UkFCV0FBSUFycWdVQUxjQUFnQ1dBSVFBWmdBQ0FNWUFKQURYQUFJQTdzaEVBQzRpQWdDT2lCUUFUMFFDQUtVQWhBQnVBQUlBem9na0FPL2lBZ0Qra1VRQU5nQUNBSzZpRkFCL1JBSUEvcmlFQUY0QUFnQytBQ1FBbndBQ0FPNUVSQUQvZGdJQVBpSVVBRDh4QXdER0FJVUEvOW45OG41ay92Ry9tUU1BcnFJbEFPOW0vZlJXQU83aWYzTURBTDZZUlFEM0FQMzRaZ0QrZHArSUF3Q09pQlVBMzlXbEFDNGkzcGhQUkFNQXZyS0ZBUC84L2ZKdUlwWUF0d0FEQUs2cUpRRGYwZjMwTmdEZTFHOWtBd0N1cUVVQTcrcjkrRjVFN3VoL2NRTUFQaklWQU0vRXBRRC8rczZJUHpFREFNWUFoUUQvZC8zeWZtVCs4Yit6QXdDdW9pVUE1d0Q5OUZZQTd1SjNBQU1BdnBoRkFPL2svZmhtQVA1MmYyWURBSTZJRlFEWEFLVUFMaUxlbUQ4ekF3Qytzb1VBLzNYOThtNGlsZ0Nma1FNQXJxb2xBTitaL2ZRMkFON1VYMUVEQUs2b1JRRHY3UDM0WGtUdTZIOXlBd0ErTWhVQXY3R2xBUC96em9nZkVRTUEzbFQ5OGg0UkZBQitaUDc0ejh3REFMNlJSUUR2SWlVQUxpTCs4NCtJQXdER0FJVUE5d0FVQUY0Ui92eXZxQU1BcGdBMUFOL0kvZkUrTWY1bWIyUURBTTdJL2ZMLzlSUUFaZ0QrOUwrNkF3Q3VJa1VBNXdBbEFENHkvdXAvY3dNQXZyS0ZBTjlWRkFCV0FINXhueEVEQUpZQU5RRFB4UDN4UGpQdTZFOUVBd0RlVlAzeUhoRVVBSDVrL3ZpL21RTUF2cEZGQU8vaUpRQXVJdjd6ZjJZREFNWUFoUUR2NUJRQVhoSCsvSitZQXdDbUFEVUExd0Q5OFQ0eC9tWnZJZ01BenNqOTh2KzVGQUJtQVA3MHR3QURBSzRpUlFEZjBTVUFQakwrNm5jQUF3Qytzb1VBNyt3VUFGWUFmbkYvY2dNQWxnQTFBTCs0L2ZFK00rN29YMVQ4OGQ3Ui9mclhBUHo0RmdEOS8zOTAvUFIrY2YzenY3UDg4dS9xN3VoUFJQenhyaUlGQUwrNC9QajNBUDc4ZHdEODlGNFIvZlYvZGZ6eTM5anU0ajh6L1BHK3N2MzZ6NGo4K1AvNy9mOS9jL3owYmdEOTg3Y0EvUEx2WnY3NVB6SDg4WjRBQlFDL3V2ejQvLzMrOW1jQS9QUW1BUDMxajRqODh0L2MzdFF2SXZ6eDN0SDkrcy9FL1BnV0FQMy9mM0w4OUg1eC9mTy9tZnp5Nyt6dTZFY0EvUEd1SWdVQXB3RDgrUC8zL3Z4WEFQejBYaEg5OVpjQS9QTGYxZTdpTndEODhiNnkvZnJIQVB6NC8vNzkvMzltL1BSdUFQM3pyNmo4OHVjQS92ay9Ndnp4bmdBRkFMK3gvUGp2NVA3MlgxVDg5Q1lBL2ZXSEFQenkzNW5lMUI4UkV3QmxBRU1BM2dDREFJMklJd0JPUkJNQXBRQkRBSzZJZ3dBMUFDTUExd0FUQU1VQVF3Q2VBSU1BVlFBakFDNGlFd0NWQUVNQWZnQ0RBUDRRSXdCM0FCTUFaUUJEQU02SWd3Q05pQ01BSGhFVEFLVUFRd0JlQUlNQU5RQWpBT2NBRXdERkFFTUF2Z0NEQUZVQUl3RC9FUk1BbFFCREFENEFnd0R1UUNNQXI2SVRBR1VBUXdEZUFJTUFqWWdqQUU1RUV3Q2xBRU1Bcm9pREFEVUFJd0R2UkJNQXhRQkRBSjRBZ3dCVkFDTUFMaUlUQUpVQVF3QitBSU1BL2hBakFMY0FFd0JsQUVNQXpvaURBSTJJSXdBZUVSTUFwUUJEQUY0QWd3QTFBQ01BejhRVEFNVUFRd0MrQUlNQVZRQWpBUGNBRXdDVkFFTUFQZ0NEQU81QUl3QnZBQUVBaEFBQkFGWUFBUUFVQUFFQTF3QUJBQ1FBQVFDV0FBRUFSUUFCQUhjQUFRQ0VBQUVBeGdBQkFCUUFBUUNQaUFFQUpBQUJBUGNBQVFBMUFBRUFMeUlCQUlRQUFRRCtRQUVBRkFBQkFMY0FBUUFrQUFFQXZ3QUJBRVVBQVFCbkFBRUFoQUFCQUtZQUFRQVVBQUVBVDBRQkFDUUFBUURuQUFFQU5RQUJBRDhSQVFDRUFBRUFWZ0FCQUJRQUFRRFBBQUVBSkFBQkFKWUFBUUJGQUFFQWJ3QUJBSVFBQVFER0FBRUFGQUFCQUo4QUFRQWtBQUVBN3dBQkFEVUFBUUEvTWdFQWhBQUJBUDVBQVFBVUFBRUFyd0FCQUNRQUFRRC9SQUVBUlFBQkFGOEFBUUNFQUFFQXBnQUJBQlFBQVFCL0FBRUFKQUFCQU44QUFRQTFBQUVBSHhFQkFDUUFBUUJXQUFFQWhRQUJBTDhBQVFBVUFBRUE5d0FCQU1ZQUFRQjNBQUVBSkFBQkFQLzRBUUJGQUFFQWZ3QUJBQlFBQVFEZkFBRUFwZ0FCQUQ4eEFRQWtBQUVBTGlJQkFJVUFBUUMzQUFFQUZBQUJBTzlFQVFDdW9nRUFad0FCQUNRQUFRRC9VUUVBUlFBQkFKY0FBUUFVQUFFQXp3QUJBRFlBQVFBL0lnRUFKQUFCQUZZQUFRQ0ZBQUVBdjdJQkFCUUFBUUR2UUFFQXhnQUJBRzhBQVFBa0FBRUEvM0lCQUVVQUFRQ2ZBQUVBRkFBQkFOY0FBUUNtQUFFQVQwUUJBQ1FBQVFBdUlnRUFoUUFCQUsrb0FRQVVBQUVBNXdBQkFLNmlBUUJmQUFFQUpBQUJBUDlFQVFCRkFBRUFqNGdCQUJRQUFRQ3ZxZ0VBTmdBQkFCOFJBZ0QrK0NRQVZnQUNBTFlBaFFEL1pnSUF6Z0FVQUI0UkFnQ1dBRFVBcjZnQ0FQWUFKQUErTVFJQXBnQkZBTCt6QWdDK3NoUUEvL1VDQUdZQWZsRmZWQUlBL3ZJa0FDNGlBZ0N1SW9VQTcwUUNBTVlBRkFELzlBSUFkZ0ExQUg5RUFnRGVRQ1FBUGpJQ0FKNEFSUURYQUFJQXZvZ1VBUC82QWdCZUVmN3hUMFFDQVA3NEpBQldBQUlBdGdDRkFPL0lBZ0RPQUJRQUhoRUNBSllBTlFDUGlBSUE5Z0FrQUQ0eEFnQ21BRVVBMzBRQ0FMNnlGQUQvcUFJQVpnQitVVzhBQWdEKzhpUUFMaUlDQUs0aWhRRG5BQUlBeGdBVUFPL2lBZ0IyQURVQWYzSUNBTjVBSkFBK01nSUFuZ0JGQUwreEFnQytpQlFBLzNNQ0FGNFIvdkUvTXdFQWhBQUJBTzRnQVFERkFBRUF6OFFCQUVRQUFRRC9NZ0VBRlFBQkFJK0lBUUNFQUFFQVpnQUJBQ1VBQVFDdkFBRUFSQUFCQU84aUFRQ21BQUVBWHdBQkFJUUFBUUJPUkFFQXhRQUJBTS9NQVFCRUFBRUE5d0FCQUJVQUFRQnZBQUVBaEFBQkFGWUFBUUFsQUFFQW53QUJBRVFBQVFEZkFBRUEvakFCQUM4aUFRQ0VBQUVBN2lBQkFNVUFBUURQeUFFQVJBQUJBUDhSQVFBVkFBRUFkd0FCQUlRQUFRQm1BQUVBSlFBQkFIOEFBUUJFQUFFQTV3QUJBS1lBQVFBM0FBRUFoQUFCQUU1RUFRREZBQUVBdHdBQkFFUUFBUUMvQUFFQUZRQUJBRDhBQVFDRUFBRUFWZ0FCQUNVQUFRQ1hBQUVBUkFBQkFOY0FBUUQrTUFFQUh4RUNBTzZvUkFDT2lBSUExZ0RGQVAvekFnRCsvQ1VBUGdBQ0FMWUFWUURmMkFJQS92aEVBR1lBQWdCK0lJVUEvNWtDQU9ZQTlRQTJBQUlBcGdBVkFKOEFBZ0QrOGtRQWRnQUNBTTVFeFFEL2RnSUEvdkVsQUU1RUFnQ3VBRlVBejhnQ0FQNzBSQUJlUkFJQXZoQ0ZBTy9rQWdEZVZQVUFIaEVDQUpZQUZRQXZJZ0lBN3FoRUFJNklBZ0RXQU1VQS8vb0NBUDc4SlFBK0FBSUF0Z0JWQUw4UkFnRCsrRVFBWmdBQ0FINGdoUUR2SWdJQTVnRDFBRFlBQWdDbUFCVUFmeUlDQVA3eVJBQjJBQUlBemtURkFQL1ZBZ0QrOFNVQVRrUUNBSzRBVlFCdkFBSUEvdlJFQUY1RUFnQytFSVVBM3hFQ0FONVU5UUFlRVFJQWxnQVZBRjlSQXdEMkFCUUFIaEZFQUk2SXBRRGYxQU1BcnFKVkFQOTJKQUErSXJZQXI2b0RBT1lBRkFELzlVUUFaZ0NGQU0vTUF3Q2VBTVVBNzBRa0FEWUEvdmgvTVFNQTd1Z1VBUC94UkFCMkFLVUF6OFFEQUg0aVZRRGYwU1FBVGtUKzlGOVJBd0RXQUJRQTcrSkVBRjVFaFFDL0lnTUFsZ0RGQU4vSUpBQXVJdjd5YnlJREFQWUFGQUFlRVVRQWpvaWxBTCt4QXdDdW9sVUEvek1rQUQ0aXRnQ3ZxQU1BNWdBVUFQKzVSQUJtQUlVQXY2Z0RBSjRBeFFEdjVDUUFOZ0QrK0c5a0F3RHU2QlFBLy94RUFIWUFwUURQeUFNQWZpSlZBTy9xSkFCT1JQNzBmM1FEQU5ZQUZBRC8ra1FBWGtTRkFMK3lBd0NXQU1VQTMwUWtBQzRpL3ZJL01mTUEvdnI5OFRZQUJBQytNblVBM3hIekFONVUvZkx2NU5VQWZuSCsvSDl6OHdEKzgvMzRIaEVFQUpZQVZRQy9zZk1BemdDMUFOL1kvZlJtQVA2NVgxVHpBUDUyL2ZFbUFBUUFwZ0IxQUo4QTh3Q3VBUDN5Ly9mVkFFWUEvdlYvZFBNQTVnRDkrQllBQkFDR0FGVUFqNGp6QU1ZQXRRRHY0djMwWGhIdXFEOFI4d0QrK3YzeE5nQUVBTDR5ZFFEZjBmTUEzbFQ5OHYvNzFRQitjZjc4ZjBUekFQN3ovZmdlRVFRQWxnQlZBSDl5OHdET0FMVUE3eUw5OUdZQS9ybFBSUE1BL25iOThTWUFCQUNtQUhVQXZ4SHpBSzRBL2ZMLy85VUFSZ0QrOVQ4eTh3RG1BUDM0RmdBRUFJWUFWUUJ2QVBNQXhnQzFBTCs0L2ZSZUVlNm9MeUk9IiksIE4oTSwgMzU5MDAsICJBUUFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCUUFBQUxjaFFpRm5JVUloRVJFUkVUTXpNek4zZDNkM0FBQUFBQUFBQUFBQlZnQUFBQUFBQUtDTUFBQ3dqQUFBQVZZQUFBRUFBQUN3akFBQW9Jd0FBQUUwQUFBQUFBQUF3SXdBQUVDTkFBQUJOQUFBQVFBQUFOQ01BQUJRalFBQUFSZ0FBQUFBQUFEZ2pBQUFvSTBBQUFFWUFBQUJBQUFBOEl3QUFMQ05BQURCQ2dBQUFBQUFBQUNOQUFBQWpnQUF3UW9BQUFFQUFBQVFqUUFBRUk0QUFDRUZBQUFBQUFBQUlJMEFBQ0NRQUFBaEJRQUFBUUFBQURDTkFBQXdrQUFBSVFJQUFBQUFBQUJBa1FBQW9KQUFBQ0VDQUFBQkFBQUFVSkVBQUxDUUFBQUJWZ0FBQUFBQUFHQ05BQUJRalFBQUFWWUFBQUVBQUFCd2pRQUFRSTBBQUFGVUFBQUFBQUFBZ0kwQUFFQ09BQUFCVkFBQUFRQUFBSkNOQUFCUWpnQUFBVWdBQUFBQUFBQ2dqUUFBUUk0QUFBRklBQUFCQUFBQXNJMEFBRkNPQUFBQk9BQUFBQUFBQU1DTkFBQkFqZ0FBQVRnQUFBRUFBQURRalFBQVVJNEFBQUV3QUFBQUFBQUE0STBBQUtDT0FBQUJNQUFBQVFBQUFQQ05BQUN3amdBQUFTUUFBQUFBQUFBQWpnQUF3STRBQUFFa0FBQUJBQUFBRUk0QUFOQ09BQUFCSEFBQUFBQUFBQ0NPQUFBQWp3QUFBUndBQUFFQUFBQXdqZ0FBRUk4QUFBRVdBQUFBQUFBQUlKQUFBQ0NQQUFBQkZnQUFBUUFBQURDUUFBQXdqd0FBQVZZQUFBQUFBQUJnamdBQVVJNEFBQUZXQUFBQkFBQUFjSTRBQUVDT0FBQUJWQUFBQUFBQUFJQ09BQUJBamdBQUFWUUFBQUVBQUFDUWpnQUFVSTRBQUFGUkFBQUFBQUFBb0k0QUFHQ09BQUFCVVFBQUFRQUFBTENPQUFCd2pnQUFBVWdBQUFBQUFBREFqZ0FBZ0k0QUFBRklBQUFCQUFBQTBJNEFBSkNPQUFBQk9BQUFBQUFBQU9DT0FBQ2dqZ0FBQVRnQUFBRUFBQUR3amdBQXNJNEFBQUUwQUFBQUFBQUFBSThBQU1DT0FBQUJOQUFBQVFBQUFCQ1BBQURRamdBQUFUQUFBQUFBQUFBZ2p3QUE0STRBQUFFd0FBQUJBQUFBTUk4QUFQQ09BQUFCS0FBQUFBQUFBRUNQQUFEZ2pnQUFBU2dBQUFFQUFBQlFqd0FBOEk0QUFBRWtBQUFBQUFBQVlJOEFBQUNQQUFBQkpBQUFBUUFBQUhDUEFBQVFqd0FBQVNJQUFBQUFBQUNBandBQUlJOEFBQUVpQUFBQkFBQUFrSThBQURDUEFBQUJIQUFBQUFBQUFLQ1BBQUJBandBQUFSd0FBQUVBQUFDd2p3QUFVSThBQUFFWUFBQUFBQUFBd0k4QUFHQ1BBQUFCR0FBQUFRQUFBTkNQQUFCd2p3QUFBUllBQUFBQUFBRGdqd0FBZ0k4QUFBRVdBQUFCQUFBQThJOEFBSkNQQUFBQkZBQUFBQUFBQUFDUUFBQ2dqd0FBQVJRQUFBRUFBQUFRa0FBQXNJOEFBQUVTQUFBQUFBQUFJSkFBQU1DUEFBQUJFZ0FBQVFBQUFEQ1FBQURRandBQUFSRUFBQUFBQUFCQWtBQUE0SThBQUFFUkFBQUJBQUFBVUpBQUFQQ1BBQURCQ2dBQUFBQUFBR0NRQUFBQWtBQUF3UW9BQUFFQUFBQndrQUFBRUpBQUFNRUpBQUFBQUFBQWdKQUFBQ0NRQUFEQkNRQUFBUUFBQUpDUUFBQXdrQUFBb1FnQUFBQUFBQUNna0FBQVFKQUFBS0VJQUFBQkFBQUFzSkFBQUZDUUFBQWhCUUFBQUFBQUFNQ1FBQUJna0FBQUlRVUFBQUVBQUFEUWtBQUFjSkFBQUVFRUFBQUFBQUFBNEpBQUFJQ1FBQUJCQkFBQUFRQUFBUENRQUFDUWtBQUFvUUlBQUFBQUFBQUFrUUFBb0pBQUFLRUNBQUFCQUFBQUVKRUFBTENRQUFBaEFnQUFBQUFBQUNDUkFBREFrQUFBSVFJQUFBRUFBQUF3a1FBQTBKQUFBRUVCQUFBQUFBQUFRSkVBQU9DUUFBQkJBUUFBQVFBQUFGQ1JBQUR3a0FBQUVRRUFBQUFBQUFCZ2tRQUFBSkVBQUJFQkFBQUJBQUFBY0pFQUFCQ1JBQUNGQUFBQUFBQUFBSUNSQUFBZ2tRQUFoUUFBQUFFQUFBQ1FrUUFBTUpFQUFFa0FBQUFBQUFBQW9KRUFBRUNSQUFCSkFBQUFBUUFBQUxDUkFBQlFrUUFBSlFBQUFBQUFBQURBa1FBQVlKRUFBQ1VBQUFBQkFBQUEwSkVBQUhDUkFBQVZBQUFBQUFBQUFPQ1JBQUNBa1FBQUZRQUFBQUVBQUFEd2tRQUFrSkVBQUFrQUFBQUFBQUFBQUpJQUFLQ1JBQUFKQUFBQUFRQUFBQkNTQUFDd2tRQUFCUUFBQUFBQUFBQWdrZ0FBd0pFQUFBVUFBQUFCQUFBQU1KSUFBTkNSQUFBQkFBQUFBQUFBQUNDU0FBRGdrUUFBQVFBQUFBRUFBQUF3a2dBQThKRUFBQUZXQUFBQUFBQUFRSklBQUVDU0FBQUJWZ0FBQVFBQUFGQ1NBQUJRa2dBQUFBRURBd0VDQXdNRkJnY0hCZ1lIQndBQkF3TUJBZ01EQlFZSEJ3WUdCd2NGQmdjSEJnWUhCd2dJQ0FnSUNBZ0lCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBRUNBd01DQWdNREJnWUhCd1lHQndjQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQVlHQndjR0JnY0hDQWdJQ0FnSUNBZ0RBd1FFQXdNRUJBY0hCd2NIQndjSEF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lBd01FQkFNREJBUUhCd2NIQndjSEJ3TURCQVFEQXdRRUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQUVDQXdNQ0FnTURCZ1lIQndZR0J3Y0JBZ01EQWdJREF3WUdCd2NHQmdjSEJnWUhCd1lHQndjSUNBZ0lDQWdJQ0FZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdDQWdNREFnSURBd1lHQndjR0JnY0hBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3WUdCd2NHQmdjSENBZ0lDQWdJQ0FnR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQXdNRUJBTURCQVFIQndjSEJ3Y0hCd01EQkFRREF3UUVCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FNREJBUURBd1FFQndjSEJ3Y0hCd2NEQXdRRUF3TUVCQWNIQndjSEJ3Y0hCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBY0hCd2NIQndjSENBZ0lDQWdJQ0FnQUFRVUdBUUlHQmdNREJ3Y0RBd2NIQUFFRkJnRUNCZ1lEQXdjSEF3TUhCd01EQndjREF3Y0hCQVFIQndRRUJ3Y0RBd2NIQXdNSEJ3UUVCd2NFQkFjSEFRSUdCZ0lDQmdZREF3Y0hBd01IQndFQ0JnWUNBZ1lHQXdNSEJ3TURCd2NEQXdjSEF3TUhCd1FFQndjRUJBY0hBd01IQndNREJ3Y0VCQWNIQkFRSEJ3VUdDQWdHQmdnSUJ3Y0lDQWNIQ0FnRkJnZ0lCZ1lJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0dCZ2dJQmdZSUNBY0hDQWdIQndnSUJnWUlDQVlHQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lBUUlHQmdJQ0JnWURBd2NIQXdNSEJ3RUNCZ1lDQWdZR0F3TUhCd01EQndjREF3Y0hBd01IQndRRUJ3Y0VCQWNIQXdNSEJ3TURCd2NFQkFjSEJBUUhCd0lDQmdZQ0FnWUdBd01IQndNREJ3Y0NBZ1lHQWdJR0JnTURCd2NEQXdjSEF3TUhCd01EQndjRUJBY0hCQVFIQndNREJ3Y0RBd2NIQkFRSEJ3UUVCd2NHQmdnSUJnWUlDQWNIQ0FnSEJ3Z0lCZ1lJQ0FZR0NBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQmdZSUNBWUdDQWdIQndnSUJ3Y0lDQVlHQ0FnR0JnZ0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FBQkF3TUJBZ01EQlFZSEJ3WUdCd2NBQVFNREFRSURBd1VHQndjR0JnY0hCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBVUdCd2NHQmdjSENBZ0lDQWdJQ0FnQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQVFJREF3SUNBd01HQmdjSEJnWUhCd1lHQndjR0JnY0hDQWdJQ0FnSUNBZ0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndNREJBUURBd1FFQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBTURCQVFEQXdRRUJ3Y0hCd2NIQndjREF3UUVBd01FQkFjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQWNIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0JBZ01EQWdJREF3WUdCd2NHQmdjSEFRSURBd0lDQXdNR0JnY0hCZ1lIQndZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3SUNBd01DQWdNREJnWUhCd1lHQndjR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQU1EQkFRREF3UUVCd2NIQndjSEJ3Y0RBd1FFQXdNRUJBY0hCd2NIQndjSEJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdEQXdRRUF3TUVCQWNIQndjSEJ3Y0hBd01FQkFNREJBUUhCd2NIQndjSEJ3Y0hCd2NIQndjSENBZ0lDQWdJQ0FnSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQUFNQkJBTUdCQWNCQkFJRkJBY0ZCd0FEQVFRREJnUUhBUVFDQlFRSEJRY0JCQUlGQkFjRkJ3SUZBZ1VGQndVSEFRUUNCUVFIQlFjQ0JRSUZCUWNGQndNR0JBY0dDQWNJQkFjRkJ3Y0lCd2dEQmdRSEJnZ0hDQVFIQlFjSENBY0lCQWNGQndjSUJ3Z0ZCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnQkJBSUZCQWNGQndJRkFnVUZCd1VIQVFRQ0JRUUhCUWNDQlFJRkJRY0ZCd0lGQWdVRkJ3VUhBZ1VDQlFVSEJRY0NCUUlGQlFjRkJ3SUZBZ1VGQndVSEJBY0ZCd2NJQndnRkJ3VUhCd2dIQ0FRSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBTUdCQWNHQ0FjSUJBY0ZCd2NJQndnREJnUUhCZ2dIQ0FRSEJRY0hDQWNJQkFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVFIQlFjSENBY0lCUWNGQndjSUJ3Z0dDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJnZ0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCQWNGQndjSUJ3Z0ZCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRkJ3VUhCd2dIQ0FVSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJ3Z0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdKQ1FvS0NRa0tDZ3dNRFFzTURBMExDUWtLQ2drSkNnb01EQXNOREF3TERRd01EUTBNREFzTERBa05DZ2tNQ2dzTURBc0xEQXdORFF3SkN3b0pEQW9OQ1FrS0Nna0pDZ29NREEwTERBd05Dd2tKQ2dvSkNRb0tEQXdMRFF3TUN3ME1EQTBOREF3TEN3d0pEUW9KREFvTERBd0xDd3dNRFEwTUNRc0tDUXdLRFFvS0Nnb0tDZ29LRFFzTkN3MExEUXNLQ2drSkNnb0pDUTBMREF3TkN3d01EUTBORFFzTEN3c05DZzBLQ2dzS0N3ME5EQXdMQ3d3TURRb01DUW9MQ1F3S0Nna0pDZ29KQ1FzTkRBd0xEUXdNQ2dvS0Nnb0tDZ29MRFFzTkN3MExEUXNMREF3TkRRd01Dd29NQ1FvTkNRd0xDd3NMRFEwTkRRc0tDd29LRFFvTiIpLCBOKE0sIDM5Nzg1LCAiQVFBQkFBRUFBUUFBQVFFQUFBRUJBQUVBQVFBQkFBRUFBQUFBQVFFQkFRQUFBQUFBQVFBQkFBQUFBQUVCQVFFQUFBQUJBQUVCQVE9PSIpLCBOKE0sIDM5ODQ5LCAiQVFBQkFBRUFBUUFBQVFFQUFBRUJBQUVBQVFBQkFBRUFBQUFBQVFFQkFRQUFBQUFBQVFBQkFBQUFBQUVCQVFFQUFBQUJBQUVCQVE9PSIpLCBOKE0sIDM5OTEzLCAiQVFBQkFBRUFBUT09IiksIE4oTSwgMzk5MjksICJBUUFCQUFFQUFRQUFBQUFCQVFFQkFBQUFBQUFCQUFFQUFBQUFBUUVCQVFBQUFBQUFBUUFCQVFFQUFBRUJBQUFBQVFBQkFBRUFBUUVCQVFFQkFRRUJBQUVBQVFBQkFBRUFBQUFBQVFFQkFRQUJBQUFCQVFBQkFBQUFBQUVCQVFFQUFRQUJBUUVCQVE9PSIpLCBOKE0sIDQwMTMwLCAiZ0FFQUE0QUVBQWFBQndBSmdBb0FESUFOQUErQUVBQVNnQk1BRllBV0FCaUFHUUFiZ0J3QUhvQWZBQ0dBSWdBa2dDVUFKNEFvQUNxQUt3QXRnQzRBTUlBeEFET0FOQUEyZ0RjQU9ZQTZBRHlBUFFBL2dFQUFRb0JEQUVXQVJnQklnRWtBUzRCTUFFNkFUd0JSZ0ZJQVZJQlZBRmVBV0FCYWdGc0FYWUJlQUdDQVlRQmpnR1FBWm9CbkFHbUFhZ0JzZ0cwQWI0QndBSEtBY3dCMWdIWT0iKSwgTihNLCA0MDMwMCwgImdBQ0FBSUFBZ0FBQUFRQUJBQUdBQVlBQkFBSUFBb0FDZ0FJQUF3QURnQU1BQkFBRWdBUUFCWUFGZ0FVQUJvQUdBQWVBQndBSWdBZ0FDWUFKQUFxQUNvQUxBQXlBREFBTkFBNkFEZ0FQQUJDQUVJQVJBQklBRTRBVGdCUUFGUUFXQUJlQUY0QVlnQm1BR2dBYkFCd0FIUUFlQUI4QUlBQWhBQ0lBSXdBa0FDV0FKb0FuZ0NpQUtRQXJBQ3dBTFlBdWdDOEFNUUF5Z0RPQU5BQTJBRGVBT0FBNkFEdUFQQUErZ0QrQVFBQkNnRU1BUllCR0FFaUFTUUJMZ0V3QVRvQlBnRkVBVTRCVUFGWUFXSUJaQUZzQVhZQmVnR0FBWWdCa2dHV0Fad0JwQUdzQWJZQnVnSENBY29CMEFIWUFlQUI2QUh3QWZnQVlnQmNBRjRBV0FCYUFGUUFWZ0JRQUZJQVRBQk9BRWdBU2dCRUFFWUFRQUJDQUR3QVBnQTRBRG9BTkFBMkFEQUFNZ0FzQUM0QUtBQXFBQ1FBSmdBZ0FDSUFIQUFlQUJnQUdnQVVBQllBRUFBU0FBd0FEZ0FJQUFvQUJBQUdBIiksIE4oTSwgNDA3MDYsICJnQUFBQVlBQkFBS0FBZ0FEZ0FNQUJJQUVBQVdBQlFBR2dBWUFCNEFIQUFpQUNBQUpnQWtBQ29BS0FBdUFDd0FNZ0F3QURZQU5BQTZBRGdBUGdBOEFFSUFRQUJHQUVRQVNnQklBRTRBVEFCU0FGQUFWZ0JVQUZvQVdBQmVBRndBZ0FCOEFIZ0FkQUJ3QUc0QWFnQm1BR0lBWEFCY0FGZ0FWZ0JTQUV3QVRBQktBRVlBUUFCQUFENEFPQUE0QURZQU1BQXlBQzRBS0FBcUFDUUFKZ0FnQUNJQUhBQWVBQmdBR2dBV0FCUUFGZ0FRQUJBQUVnQU1BQXdBRGdBS0FBZ0FDQUFLQUFZQUJBQUVBQVFBQmdBQ0FBSUFBZ0E9PSIpLCBOKE0sIDQwOTQwLCAiZ0FDQUFJQUFnQUFBQVFBQkFBR0FBWUFCQUFJQUFvQUNnQUlBQXdBRGdBTUFCQUFFZ0FRQUJZQUZnQVVBQm9BR0FBZUFCd0FJZ0FnQUNZQUpBQXFBQ29BTEFBeUFEQUFOQUE2QURnQVBBQkNBRUlBUkFCSUFFNEFUZ0JRQUZRQVdBQmVBRjRBWWdCbUFHZ0FiQUJ3QUhRQWVBQi8rZ2l0bFJ4Vm5RQUFBQUFBQUFEaERBQUQ2L2tJdWRyODZPNTY4bXZjTXZiMzkvLy8vLzk4L1BGUlZWVlZWeFQrUkt4ZlBWVldsUHhmUXBHY1JFWUUvQUFBQUFBQUF5RUx2T2ZyK1FpN21QeVRFZ3YrOXY4NC90ZlFNMXdocnJEL01VRWJTcTdLRFA0UTZUcHZnMTFVLyIpLCBOKE0sIDQxMTgyLCAiOEQ5dXY0Z2FUenViUERVeis2azk5dTgvWGR6WW5CTmdjYnhoZ0hjK211enZQOUZtaHhCNlhwQzhoWDl1NkJYajd6OFQ5bWMxVXRLTVBIU0ZGZE93MmU4LytvNzVJNERPaTd6ZTl0MHBhOUR2UDJISTVtRk85MkE4eUp0MUdFWEg3eitaMHpOYjVLT1FQSVB6eHNvK3Z1OC9iWHVEWGFhYWx6d1BpZmxzV0xYdlAvenYvWklhdFk0ODkwZHlLNUtzN3ovUm5DOXdQYjQrUEtMUjB6THNvKzgvQzI2UWlUUURhcndiMC82dlpwdnZQdzY5THlwU1ZwVzhVVnNTMEFHVDd6OVY2azZNNzRCUXZNd3hiTUM5aXU4L0Z2VFZ1U1BKa2J6Z0xhbXVtb0x2UDY5VlhPbmowNEE4VVk2bHlKaDY3ejlJazZYcUZSdUF2SHRSZlR5NGN1OC9QVExlVmZBZmo3enFqWXc0K1dydlA3OVRFeitNaVlzOGRjdHY2MXRqN3o4bTZ4RjJuTm1Xdk5SY0JJVGdXKzgvWUM4NlB2ZnNtanlxdVdneGgxVHZQNTA0aHN1QzU0KzhIZG44SWxCTjd6K053NlpFUVcrS1BOYU1Zb2c3UnU4L2ZRVGtzQVY2Z0R5VzNIMlJTVC92UDVTb3FPUDlqcFk4T0dKMWJubzQ3ejk5U0hUeUdGNkhQRCttc2svT01lOC84dWNmbUN0SGdEemRmT0psUlN2dlAxNEljVDk3dUphOGdXUDE0ZDhrN3o4eHF3bHQ0ZmVDUE9IZUgvV2RIdTgvK3I5dkdwc2hQYnlRMmRyUWZ4anZQN1FLREhLQ040czhDd1BrcG9VUzd6K1B5ODZKa2hSdVBGWXZQcW12RE84L3RxdXdUWFZOZ3p3VnR6RUsvZ2J2UDB4MHJPSUJRb1k4TWRoTS9IQUI3ejlLK05OZE9kMlBQUDhXWkxJSS9PNC9CRnVPTzRDamhyenhuNUpmeGZidVAyaFFTOHp0U3BLOHk2azZONmZ4N2orT0xWRWIrQWVadkdiWUJXMnU3TzQvMGphVVB1alJjYnozbitVMDIrZnVQeFVienJNWkdabTg1YWdUd3kzajdqOXRUQ3FuU0orRlBDSTBFa3ltM3U0L2lta29lbUFTazd3Y2dLd0VSZHJ1UDF1SkYwaVBwMWk4S2k3M0lRclc3ajhibWtsbm15eDh2SmVvVU5uMTBlNC9FYXpDWU8xalF6d3RpV0ZnQ003dVArOWtCanNKWnBZOFZ3QWQ3VUhLN2o5NUE2SGE0Y3h1UE5BOHdiV2l4dTQvTUJJUFA0Ny9renplMDlmd0tzUHVQN0N2ZXJ2T2tIWThKeW8yMWRxLzdqOTM0RlRydlIyVFBBM2QvWm15dk80L2pxTnhBRFNVajd5bkxKMTJzcm51UDBtams5ek0zb2U4UW1iUG90cTI3ajlmT0ErOXh0NTR2SUpQblZZcnRPNC85bHg3N0VZU2hyd1BrbDNLcExIdVA0N1gvUmdGTlpNODJpZTFOa2V2N2o4Rm00b3Z0NWg3UFAzSGw5UVNyZTQvQ1ZRYzR1RmprRHdwVkVqZEI2dnVQK3JHR1ZDRnh6UTh0MFpaaWlhcDdqODF3R1FyNWpLVVBFZ2hyUlZ2cCs0L24zYVpZVXJrakx3SjNIYTU0YVh1UDZoTjd6dkZNNHk4aFZVNnNINms3ait1NlN1SmVGT0V2Q0REekRSR28rNC9XRmhXZU4zT2s3d2xJbFdDT0tMdVAyUVpmb0NxRUZjOGM2bE0xRldoN2o4b0lsNi83N09Udk0wN2YyYWVvTzQvZ3JrMGg2MFNhcnkvMmd0MUVxRHVQKzZwYmJqdloyTzhMeHBsUExLZjdqOVJpT0JVUGR5QXZJU1VVZmw5bis0L3p6NWFmbVFmZUx4MFgrem9kWi91UDdCOWk4Qks3b2E4ZElHbFNKcWY3aitLNWxVZU1obUd2TWxuUWxicm4rNC8wOVFKWHN1Y2tEdy9YZDVQYWFEdVB4MmxUYm5jTW51OGh3SHJjeFNoN2o5cndHZFUvZXlVUERMQk1BSHRvZTQvVld6V3ErSHJaVHhpVHM4Mjg2THVQMExQc3kvRm9ZaThFaG8rVkNlazdqODBOenZ4dG1tVHZCUE9USm1KcGU0L0h2OFpPb1JlZ0x5dHh5TkdHcWZ1UDI1WGN0aFExSlM4N1pKRW05bW83ajhBaWc1Ylo2MlFQSmxtaXRuSHF1NC90T3J3d1MrM2pUemJvQ3BDNWF6dVAvL254WnhndG1XOGpFUzFGakt2N2o5RVgvTlpnL1o3UERaM0ZabXVzZTQvZ3owZXB4OEprN3pHLzVFTFc3VHVQeWtlYkl1NHFWMjg1Y1hOc0RlMzdqOVp1WkI4K1NOc3ZBOVN5TXRFdXU0L3F2bjBJa05Ea3J4UVR0NmZncjN1UDB1T1p0ZHN5b1c4dWdmS2NQSEE3ajhuenBFci9LOXhQSkR3bzRLUnhPNC91M01LNFRYU2JUd2pJK01aWThqdVAyTWlZaUlFeFllOFplVmRlMmJNN2ovVk1lTGpoaHlMUERNdFN1eWIwTzQvRmJ1ODA5RzdrYnhkSlQ2eUE5WHVQOUl4N3B3eHpKQThXTE13RTU3WjdqK3pXbk51aEdtRVBMLzllVlZyM3U0L3RKMk9sODNmZ3J4Njg5Ty9hK1B1UDRjenk1SjNHb3c4cmROYW1aL283ai82MmRGS2ozdVF2R2EyalNrSDd1NC91cTdjVnRuRFZiejdGVSs0b3ZQdVAwRDJwajBPcEpDOE9sbmxqWEw1N2o4MGs2MDQ5TlpvdkVkZSsvSjIvKzQvTllwWWErTHVrYnhLQnFFd3NBWHZQODNkWHdyWC8zUTgwc0ZMa0I0TTd6K3NtSkw2KzcyUnZBa2UxMXZDRXU4L3N3eXZNSzV1Y3p5Y1VvWGRteG52UDVUOW4xd3k0NDQ4ZXREL1g2c2c3eitzV1FuUmorQ0VQRXZSVnk3eEorOC9aeHBPT0svTll6eTE1d2FVYlMvdlAyZ1prbXdzYTJjOGFaRHYzQ0EzN3ovU3RjeURHSXFBdlByRFhWVUxQKzgvYi9yL1AxMnRqN3g4aVFkS0xVZnZQMG1wZFRpdURaQzg4b2tOQ0lkUDd6K25CejJtaGFOMFBJZWsrOXdZV084L0R5SkFJSjZSZ3J5WWc4a1c0MkR2UDZ5U3dkVlFXbzQ4aFRMYkErWnA3ejlMYXdHc1dUcUVQR0MwQWZNaGMrOC9IejYwQnlIVmdyeGZtM3N6bDN6dlA4a05SenU1S29tOEthSDFGRWFHN3ovVGlEcGdCTFowUFBZL2krY3VrTzgvY1hLZFVlekZnenlEVE1mN1VacnZQL0NSMDQ4Uzk0KzgycENrb3Erazd6OTlkQ1BpbUs2TnZQRm5qaTFJcis4L0NDQ3FRYnpEamp3bldtSHVHN3J2UHpMcnFjT1VLNFE4bDdwck55dkY3ei91aGRFeHFXU0tQRUJGYmx0MjBPOC83ZU03NUxvM2pyd1V2cHl0L2R2dlA1M05rVTA3aVhjODJKQ2VnY0huN3orSnpHQkJ3UVZUUFBGeGp5dkM4KzgvQURqNi9rSXU1ajh3WjhlVFYvTXVQUUFBQUFBQUFPQy9ZRlZWVlZWVjViOEdBQUFBQUFEZ1AwNVZXWm1abWVrL2VxUXBWVlZWNWIvcFJVaWJXMG55djhNL0pvc3JBUEEvQUFBQUFBQ2c5ajg9IiksIE4oTSwgNDMzMDUsICJ5TG55Z2l6V3Y0QldOeWdrdFBvOEFBQUFBQUNBOWo4PSIpLCBOKE0sIDQzMzM3LCAiQ0ZpL3ZkSFZ2eUQzNE5nSXBSeTlBQUFBQUFCZzlqOD0iKSwgTihNLCA0MzM2OSwgIldFVVhkM2JWdjIxUXR0V2tZaU85QUFBQUFBQkE5ajg9IiksIE4oTSwgNDM0MDEsICIrQzJIclJyVnY5Vm5zSjdraE9hOEFBQUFBQUFnOWo4PSIpLCBOKE0sIDQzNDMzLCAiZUhlVlg3N1V2K0ErS1pOcEd3UzlBQUFBQUFBQTlqOD0iKSwgTihNLCA0MzQ2NSwgIllCekNpMkhVdjh5RVRFZ3YyQk05QUFBQUFBRGc5VDg9IiksIE4oTSwgNDM0OTcsICJxSWFHTUFUVXZ6b0xndTN6UXR3OEFBQUFBQURBOVQ4PSIpLCBOKE0sIDQzNTI5LCAiU0dsVlRLYlR2MkNVVVliR3NTQTlBQUFBQUFDZzlUOD0iKSwgTihNLCA0MzU2MSwgImdKaWEzVWZUdjVLQXhkUk5XU1U5QUFBQUFBQ0E5VDg9IiksIE4oTSwgNDM1OTMsICJJT0c2NHVqU3Y5Z3J0NWtlZXlZOUFBQUFBQUJnOVQ4PSIpLCBOKE0sIDQzNjI1LCAiaU40VFdvblN2eit3ejdZVXloVTlBQUFBQUFCZzlUOD0iKSwgTihNLCA0MzY1NywgImlONFRXb25Tdnord3o3WVV5aFU5QUFBQUFBQkE5VDg9IiksIE4oTSwgNDM2ODksICJlTS83UVNuU3YzYmFVeWdrV2hhOUFBQUFBQUFnOVQ4PSIpLCBOKE0sIDQzNzIxLCAibUduQm1NalJ2d1JVNTJpOHJ4KzlBQUFBQUFBQTlUOD0iKSwgTihNLCA0Mzc1MywgInFLdXJYR2ZSdi9Db2dqUEdIeDg5QUFBQUFBRGc5RDg9IiksIE4oTSwgNDM3ODUsICJTSzc1aXdYUnYyWmFCZjNFcUNhOUFBQUFBQURBOUQ4PSIpLCBOKE0sIDQzODE3LCAia0hQaUpLUFF2dzREOUg3dWF3eTlBQUFBQUFDZzlEOD0iKSwgTihNLCA0Mzg0OSwgIjBMU1VKVURRdjM4dDlKNjROdkM4QUFBQUFBQ2c5RDg9IiksIE4oTSwgNDM4ODEsICIwTFNVSlVEUXYzOHQ5SjY0TnZDOEFBQUFBQUNBOUQ4PSIpLCBOKE0sIDQzOTEzLCAiUUY1dEdMblB2NGM4bWFzcVZ3MDlBQUFBQUFCZzlEOD0iKSwgTihNLCA0Mzk0NSwgIllOekxyZkRPdnlTdmhweTNKaXM5QUFBQUFBQkE5RDg9IiksIE4oTSwgNDM5NzcsICI4Q3B1QnlmT3Z4RC9QMVJQTHhlOUFBQUFBQUFnOUQ4PSIpLCBOKE0sIDQ0MDA5LCAid0U5cklWek52eHRveXJ1UnVpRTlBQUFBQUFBQTlEOD0iKSwgTihNLCA0NDA0MSwgIm9Kckg5NC9NdnpTRW4yaFBlU2M5QUFBQUFBQUE5RDg9IiksIE4oTSwgNDQwNzMsICJvSnJIOTQvTXZ6U0VuMmhQZVNjOUFBQUFBQURnOHo4PSIpLCBOKE0sIDQ0MTA1LCAia0MxMGhzTEx2NCszaXpHd1RoazlBQUFBQUFEQTh6OD0iKSwgTihNLCA0NDEzNywgIndJQk95ZlBLdjJhUXpUOWpUcm84QUFBQUFBQ2c4ejg9IiksIE4oTSwgNDQxNjksICJzT0lmdkNQS3YrckJSdHhrakNXOUFBQUFBQUNnOHo4PSIpLCBOKE0sIDQ0MjAxLCAic09JZnZDUEt2K3JCUnR4a2pDVzlBQUFBQUFDQTh6OD0iKSwgTihNLCA0NDIzMywgIlVQU2NXbExKditQVXdRVFowU3E5QUFBQUFBQmc4ejg9IiksIE4oTSwgNDQyNjUsICIwQ0Jsb0gvSXZ3bjYyMysvdlNzOUFBQUFBQUJBOHo4PSIpLCBOKE0sIDQ0Mjk3LCAiNEJBQ2lhdkh2MWhLVTNLUTJ5czlBQUFBQUFCQTh6OD0iKSwgTihNLCA0NDMyOSwgIjRCQUNpYXZIdjFoS1UzS1EyeXM5QUFBQUFBQWc4ejg9IiksIE4oTSwgNDQzNjEsICIwQm5uRDliR3YyYmlzcU5xNUJDOUFBQUFBQUFBOHo4PSIpLCBOKE0sIDQ0MzkzLCAia0tkd01QL0Z2emxRRUo5RG5oNjlBQUFBQUFBQTh6OD0iKSwgTihNLCA0NDQyNSwgImtLZHdNUC9GdnpsUUVKOURuaDY5QUFBQUFBRGc4ajg9IiksIE4oTSwgNDQ0NTcsICJzS0hqNVNiRnY0OWJCNUNMM2lDOUFBQUFBQURBOGo4PSIpLCBOKE0sIDQ0NDg5LCAiZ010c0swM0V2eng0TldIQkRCYzlBQUFBQUFEQThqOD0iKSwgTihNLCA0NDUyMSwgImdNdHNLMDNFdnp4NE5XSEJEQmM5QUFBQUFBQ2c4ajg9IiksIE4oTSwgNDQ1NTMsICJrQjRnL0hIRHZ6cFVKMDJHZVBFOEFBQUFBQUNBOGo4PSIpLCBOKE0sIDQ0NTg1LCAiOEIvNFVwWEN2d2pFY1Jjd2pTUzlBQUFBQUFCZzhqOD0iKSwgTihNLCA0NDYxNywgIllDL1ZLcmZCdjVhakVSaWtnQzY5QUFBQUFBQmc4ajg9IiksIE4oTSwgNDQ2NDksICJZQy9WS3JmQnY1YWpFUmlrZ0M2OUFBQUFBQUJBOGo4PSIpLCBOKE0sIDQ0NjgxLCAia05COGZ0ZkF2L1JiNklpV2FRbzlBQUFBQUFCQThqOD0iKSwgTihNLCA0NDcxMywgImtOQjhmdGZBdi9SYjZJaVdhUW85QUFBQUFBQWc4ajg9IiksIE4oTSwgNDQ3NDUsICI0TnN4a2V5L3YvSXpvMXhVZFNXOUFBQUFBQUFBOGo4PSIpLCBOKE0sIDQ0Nzc4LCAiSzI0SEo3Ni9QQUR3S2l3MEtqMEFBQUFBQUFEeVB3PT0iKSwgTihNLCA0NDgxMCwgIksyNEhKNzYvUEFEd0tpdzBLajBBQUFBQUFPRHhQdz09IiksIE4oTSwgNDQ4NDEsICJ3RnVQVkY2OHZ3YStYMWhYREIyOUFBQUFBQURBOFQ4PSIpLCBOKE0sIDQ0ODczLCAiNEVvNmJaSzZ2OGlxVytnMU9TVTlBQUFBQUFEQThUOD0iKSwgTihNLCA0NDkwNSwgIjRFbzZiWks2djhpcVcrZzFPU1U5QUFBQUFBQ2c4VDg9IiksIE4oTSwgNDQ5MzcsICJvREhXUmNPNHYyaFdMMDBwZkJNOUFBQUFBQUNnOFQ4PSIpLCBOKE0sIDQ0OTY5LCAib0RIV1JjTzR2MmhXTDAwcGZCTTlBQUFBQUFDQThUOD0iKSwgTihNLCA0NTAwMSwgIllPV0swdkMydjlwek04azNseWE5QUFBQUFBQmc4VDg9IiksIE4oTSwgNDUwMzMsICJJQVkvQnh1MXYxZGV4bUZiQWg4OUFBQUFBQUJnOFQ4PSIpLCBOKE0sIDQ1MDY1LCAiSUFZL0J4dTF2MWRleG1GYkFoODlBQUFBQUFCQThUOD0iKSwgTihNLCA0NTA5NywgIjRCdVcxMEd6djk4VCtjemFYaXc5QUFBQUFBQkE4VDg9IiksIE4oTSwgNDUxMjksICI0QnVXMTBHenY5OFQrY3phWGl3OUFBQUFBQUFnOFQ4PSIpLCBOKE0sIDQ1MTYxLCAiZ0tQdU5tV3h2d21qajNaZWZCUTlBQUFBQUFBQThUOD0iKSwgTihNLCA0NTE5MywgImdCSEFNQXF2djVHT05vT2VXUzA5QUFBQUFBQUE4VDg9IiksIE4oTSwgNDUyMjUsICJnQkhBTUFxdnY1R09Ob09lV1MwOUFBQUFBQURnOEQ4PSIpLCBOKE0sIDQ1MjU3LCAiZ0JseDNVS3J2MHh3MXVWNmdodzlBQUFBQUFEZzhEOD0iKSwgTihNLCA0NTI4OSwgImdCbHgzVUtydjB4dzF1VjZnaHc5QUFBQUFBREE4RDg9IiksIE4oTSwgNDUzMjEsICJ3REwyV0hTbnYrNmg4alJHL0N5OUFBQUFBQURBOEQ4PSIpLCBOKE0sIDQ1MzUzLCAid0RMMldIU252KzZoOGpSRy9DeTlBQUFBQUFDZzhEOD0iKSwgTihNLCA0NTM4NSwgIndQNjVoNTZqdjZyK0p2VzNBdlU4QUFBQUFBQ2c4RDg9IiksIE4oTSwgNDU0MTcsICJ3UDY1aDU2anY2citKdlczQXZVOEFBQUFBQUNBOEQ4PSIpLCBOKE0sIDQ1NDUwLCAiZUE2YmdwKy81QWwrZkNhQUtiMEFBQUFBQUlEd1B3PT0iKSwgTihNLCA0NTQ4MiwgImVBNmJncCsvNUFsK2ZDYUFLYjBBQUFBQUFHRHdQdz09IiksIE4oTSwgNDU1MTMsICJnTlVIRzdtWHZ6bW0rcE5ValNpOUFBQUFBQUJBOEQ4PSIpLCBOKE0sIDQ1NTQ2LCAiL0xDb3dJKy9uS2JUOW53ZTM3d0FBQUFBQUVEd1B3PT0iKSwgTihNLCA0NTU3OCwgIi9MQ293SSsvbktiVDlud2UzN3dBQUFBQUFDRHdQdz09IiksIE4oTSwgNDU2MTAsICJFR3NxNEgrLzVFRGFEVC9pR2IwQUFBQUFBQ0R3UHc9PSIpLCBOKE0sIDQ1NjQyLCAiRUdzcTRIKy81RURhRFQvaUdiMEFBQUFBQUFEd1B3PT0iKSwgTihNLCA0NTY5NCwgIjhEOD0iKSwgTihNLCA0NTcyNSwgIndPOC8iKSwgTihNLCA0NTczOCwgImlYVVZFSUEvNkN1ZG1XdkhFTDBBQUFBQUFJRHZQdz09IiksIE4oTSwgNDU3NjksICJnSk5ZVmlDUVA5TDM0Z1piM0NPOUFBQUFBQUJBN3o4PSIpLCBOKE0sIDQ1ODAyLCAieVNnbFNaZy9OQXhhTXJxZ0tyMEFBQUFBQUFEdlB3PT0iKSwgTihNLCA0NTgzMywgIlFPZUpYVUdnUDFQWDhWekFFUUU5QUFBQUFBREE3ajg9IiksIE4oTSwgNDU4NjYsICJMdFN1WnFRL0tQMjlkWE1XTEwwQUFBQUFBSUR1UHc9PSIpLCBOKE0sIDQ1ODk3LCAid0o4VXFwU29QMzBtV3RDVmVSbTlBQUFBQUFCQTdqOD0iKSwgTihNLCA0NTkyOSwgIndOM05jOHVzUHdjbzJFZnlhQnE5QUFBQUFBQWc3ajg9IiksIE4oTSwgNDU5NjEsICJ3QWJBTWVxdVAzczd5VTgrRVE2OUFBQUFBQURnN1Q4PSIpLCBOKE0sIDQ1OTkzLCAiWUViUk81ZXhQNXVlRFZaZE1pVzlBQUFBQUFDZzdUOD0iKSwgTihNLCA0NjAyNSwgIjROR245YjJ6UDlkTzI2VmV5Q3c5QUFBQUFBQmc3VDg9IiksIE4oTSwgNDYwNTcsICJvSmROV3VtMVB4NGRYVHdHYVN5OUFBQUFBQUJBN1Q4PSIpLCBOKE0sIDQ2MDg5LCAid09vSzB3QzNQekx0bmFtTkh1dzhBQUFBQUFBQTdUOD0iKSwgTihNLCA0NjEyMSwgIlFGbGRYak81UDlwSHZUcGNFU005QUFBQUFBREE3RDg9IiksIE4oTSwgNDYxNTMsICJZSzJOeUdxN1ArVm85eXVBa0JPOUFBQUFBQUNnN0Q4PSIpLCBOKE0sIDQ2MTg1LCAiUUx3QldJaThQOU9zV3NiUlJpWTlBQUFBQUFCZzdEOD0iKSwgTihNLCA0NjIxNywgIklBcURPY2UrUCtCRjVxOW93QzI5QUFBQUFBQkE3RDg9IiksIE4oTSwgNDYyNDksICI0TnM1a2VpL1AvMEtvVS9XTkNXOUFBQUFBQUFBN0Q4PSIpLCBOKE0sIDQ2MjgxLCAiNENlQ2poZkJQL0lITGM1NDd5RTlBQUFBQUFEZzZ6OD0iKSwgTihNLCA0NjMxMywgIjhDTitLNnJCUHpTWk9FU09weXc5QUFBQUFBQ2c2ejg9IiksIE4oTSwgNDYzNDUsICJnSVlNWWRIQ1A2RzBnY3RzblFNOUFBQUFBQUNBNno4PSIpLCBOKE0sIDQ2Mzc3LCAia0JXdy9HWERQNGx5U3lPb0w4WThBQUFBQUFCQTZ6OD0iKSwgTihNLCA0NjQwOSwgInNET0RQWkhFUDNpMi9WUjVneVU5QUFBQUFBQWc2ejg9IiksIE4oTSwgNDY0NDEsICJzS0hrNVNmRlA4ZDlhZVhvTXlZOUFBQUFBQURnNmo4PSIpLCBOKE0sIDQ2NDczLCAiRUl5K1RsZkdQM2d1UEN5THp4azlBQUFBQUFEQTZqOD0iKSwgTihNLCA0NjUwNSwgImNIV0xFdkRHUCtFaG5PV05FU1c5QUFBQUFBQ2c2ajg9IiksIE4oTSwgNDY1MzcsICJVRVNGalluSFB3VkRrWEFRWmh5OUFBQUFBQUJnNmo4PSIpLCBOKE0sIDQ2NTcwLCAiT2V1dnZzZy8wU3pwcWxROUI3MEFBQUFBQUVEcVB3PT0iKSwgTihNLCA0NjYwMiwgIjk5eGFXc2svYi8rZ1dDanlCejBBQUFBQUFBRHFQdz09IiksIE4oTSwgNDY2MzMsICI0SW84N1pQS1Aya2hWbEJEY2lpOUFBQUFBQURnNlQ4PSIpLCBOKE0sIDQ2NjY1LCAiMEZ0WDJESExQNnJockU2Tk5ReTlBQUFBQUFEQTZUOD0iKSwgTihNLCA0NjY5NywgIjREczRoOURMUDdZU1ZGbkVTeTI5QUFBQUFBQ2c2VDg9IiksIE4oTSwgNDY3MjksICJFUERHKzIvTVA5SXJsc1Z5N1BHOEFBQUFBQUJnNlQ4PSIpLCBOKE0sIDQ2NzYxLCAia05Td1BiSE5Qeld3RmZjcS95cTlBQUFBQUFCQTZUOD0iKSwgTihNLCA0Njc5MywgIkVPZi9EbFBPUHpEMFFXQW5Fc0k4QUFBQUFBQWc2VDg9IiksIE4oTSwgNDY4MjYsICIzZVN0OWM0L0VZNjdaUlVoeXJ3QUFBQUFBQURwUHc9PSIpLCBOKE0sIDQ2ODU3LCAic0xOc0hKblBQekRmRE1yc3l4czlBQUFBQUFEQTZEOD0iKSwgTihNLCA0Njg4OSwgIldFMWdPSEhRUDVGTzdSYmJuUGc4QUFBQUFBQ2c2RDg9IiksIE4oTSwgNDY5MjEsICJZR0ZuTGNUUVArbnFQQmFMR0NjOUFBQUFBQUNBNkQ4PSIpLCBOKE0sIDQ2OTUzLCAiNkNlQ2poZlJQeHp3cFdNT0lTeTlBQUFBQUFCZzZEOD0iKSwgTihNLCA0Njk4NSwgIitLekxYR3ZSUDRFV3BmZk5taXM5QUFBQUFBQkE2RDg9IiksIE4oTSwgNDcwMTcsICJhRnBqbWIvUlA3ZTlSMUh0cGl3OUFBQUFBQUFnNkQ4PSIpLCBOKE0sIDQ3MDQ5LCAidUE1dFJSVFNQK3E2UnJyZWh3bzlBQUFBQUFEZzV6OD0iKSwgTihNLCA0NzA4MSwgImtOeDg4TDdTUC9RRVVFcjZuQ285QUFBQUFBREE1ejg9IiksIE4oTSwgNDcxMTMsICJZTlBoOFJUVFA3ZzhJZE42NGlpOUFBQUFBQUNnNXo4PSIpLCBOKE0sIDQ3MTQ1LCAiRUw1MloydlRQOGgzOGJETmJoRTlBQUFBQUFDQTV6OD0iKSwgTihNLCA0NzE3NywgIk1ETjNVc0xUUDF5OUJyWlVPeGc5QUFBQUFBQmc1ejg9IiksIE4oTSwgNDcyMDksICI2TlVqdEJuVVA1M2drT3cyNUFnOUFBQUFBQUJBNXo4PSIpLCBOKE0sIDQ3MjQxLCAieUhIQ2pYSFVQM1hXWnduT0p5KzlBQUFBQUFBZzV6OD0iKSwgTihNLCA0NzI3MywgIk1CZWU0TW5VUDZUWUNodUpJQzY5QUFBQUFBQUE1ejg9IiksIE4oTSwgNDczMDUsICJvRGdIcmlMVlAxbkhaSUZ3dmk0OUFBQUFBQURnNWo4PSIpLCBOKE0sIDQ3MzM3LCAiME1oVDkzdlZQKzlBWGU3dHJSODlBQUFBQUFEQTVqOD0iKSwgTihNLCA0NzM2OSwgIllGbmZ2ZFhWUDl4bHBBZ3FDd3E5a01FQUFDRENBQUFDL3dBRVpBQWdBQUFFLy84UUFBRUFBUUFCQVAvL0FmOEIvLy8vLy84Qi93SC9BZjhCL3dIL0FmOEIvd0gvLy8vLy93ci9JQUQvL3dQL0FmOEUveDRBQUFFRi8vLy8vLzlqQUFBSVl3RG9Bd0lBQUFELy8vLy8vd0FBQUFIL0FmLy8vLy8vLy8vLy8vLy8iKSwgTihNLCA0NzUxMywgIkJBPT0iKSwgTihNLCA0NzUyNiwgIkFmOEIvLy8vLy84QUFTQUFCQUNBQUFBSS8vOEIvd0gvLy8vLy8vLy9BZjhHL3dmL0NQOEovLy8vLy8rOEFyd0NBUUQvL3dFQUFRRC8vd0FBLy8vLy8vLy8vLzg9IiksIE4oTSwgNDc2MTAsICJGQT09IiksIE4oTSwgNDc2NDIsICIvLzhCQUFyLy8vLy8vLy8vLy84Qi93SC9BQUFBQUFBQUFmOEIvd0gvIiksIE4oTSwgNDc2OTAsICJBZjhBQUFBQUFBQUIvd0gvQVFBQUFBRUFBQUFCLy8vLy8vOEFBQUFBQWYvLy93QUFBQUQvLy8vLy8vLy8vLy8vS0FBSy8vLy8vLzhCQUFyLy8vLy9BUC8vLy8vLy8vLy8iKSwgTihNLCA0Nzg2MiwgIkFmOEIvLy8vQVFELy8vLy8vLy8vLy8vLy8vLy8vd3IvLy8vLy93ei9EZjg9IiksIE4oTSwgNDc5MDQsICJHUUFMQUJrWkdRQUFBQUFGQUFBQUFBQUFDUUFBQUFBTEFBQUFBQUFBQUFBWkFBb0tHUmtaQXdvSEFBRUFDUXNZQUFBSkJnc0FBQXNBQmhrQUFBQVpHUms9IiksIE4oTSwgNDc5ODUsICJEZ0FBQUFBQUFBQUFHUUFMRFJrWkdRQU5BQUFDQUFrT0FBQUFDUUFPQUFBTyIpLCBOKE0sIDQ4MDQzLCAiREE9PSIpLCBOKE0sIDQ4MDU1LCAiRXdBQUFBQVRBQUFBQUFrTUFBQUFBQUFNQUFBTSIpLCBOKE0sIDQ4MTAxLCAiRUE9PSIpLCBOKE0sIDQ4MTEzLCAiRHdBQUFBUVBBQUFBQUFrUUFBQUFBQUFRQUFBUSIpLCBOKE0sIDQ4MTU5LCAiRWc9PSIpLCBOKE0sIDQ4MTcxLCAiRVFBQUFBQVJBQUFBQUFrU0FBQUFBQUFTQUFBU0FBQWFBQUFBR2hvYSIpLCBOKE0sIDQ4MjI2LCAiR2dBQUFCb2FHZ0FBQUFBQUFBaz0iKSwgTihNLCA0ODI3NSwgIkZBPT0iKSwgTihNLCA0ODI4NywgIkZ3QUFBQUFYQUFBQUFBa1VBQUFBQUFBVUFBQVUiKSwgTihNLCA0ODMzMywgIkZnPT0iKSwgTihNLCA0ODM0NSwgIkZRQUFBQUFWQUFBQUFBa1dBQUFBQUFBV0FBQVdBQUF3TVRJek5EVTJOemc1UVVKRFJFVkciKSwgTihNLCA0ODQyMCwgIkJRRT0iKSwgTihNLCA0ODQ2MCwgIi8vLy8vLy8vLy84PSIpLCBOKE0sIDQ4NTI5LCAid0FBQW5MMEFBR3pCQUFCT01UQmZYMk40ZUdGaWFYWXhNVFpmWDNOb2FXMWZkSGx3WlY5cGJtWnZSUUFBQUFBQXdBQUF6TDBBQUpDOUFBQk9NVEJmWDJONGVHRmlhWFl4TVRkZlgyTnNZWE56WDNSNWNHVmZhVzVtYjBVQUFBQUF3QUFBL0wwQUFKQzlBQUJPTVRCZlgyTjRlR0ZpYVhZeE1UZGZYM0JpWVhObFgzUjVjR1ZmYVc1bWIwVUFBQUFBd0FBQUxMNEFBUEM5QUFCT01UQmZYMk40ZUdGaWFYWXhNVGxmWDNCdmFXNTBaWEpmZEhsd1pWOXBibVp2UlFBQXdBQUFYTDRBQUpDOUFBQk9NVEJmWDJONGVHRmlhWFl4TWpCZlgyWjFibU4wYVc5dVgzUjVjR1ZmYVc1bWIwVUFBQUFBQU1BQUFKQytBQUR3dlFBQVRqRXdYMTlqZUhoaFltbDJNVEk1WDE5d2IybHVkR1Z5WDNSdlgyMWxiV0psY2w5MGVYQmxYMmx1Wm05RkFBQUFBQUFBQU55K0FBQUlBUUFBQ1FFQUFBb0JBQUFMQVFBQURBRUFBQURBQUFEb3ZnQUFrTDBBQUU0eE1GOWZZM2g0WVdKcGRqRXlNMTlmWm5WdVpHRnRaVzUwWVd4ZmRIbHdaVjlwYm1adlJRREl2Z0FBR0w4QUFIWUFBQURJdmdBQUpMOEFBRVJ1QUFESXZnQUFNTDhBQUdJQUFBREl2Z0FBUEw4QUFHTUFBQURJdmdBQVNMOEFBR2dBQUFESXZnQUFWTDhBQUdFQUFBREl2Z0FBWUw4QUFITUFBQURJdmdBQWJMOEFBSFFBQUFESXZnQUFlTDhBQUdrQUFBREl2Z0FBaEw4QUFHb0FBQURJdmdBQWtMOEFBR3dBQUFESXZnQUFuTDhBQUcwQUFBREl2Z0FBcUw4QUFIZ0FBQURJdmdBQXRMOEFBSGtBQUFESXZnQUF3TDhBQUdZQUFBREl2Z0FBekw4QUFHUUFBQUFBQUFBQXdMMEFBQWdCQUFBTkFRQUFDZ0VBQUFzQkFBQU9BUUFBRHdFQUFCQUJBQUFSQVFBQUFBQUFBQ0RBQUFBSUFRQUFFZ0VBQUFvQkFBQUxBUUFBRGdFQUFCTUJBQUFVQVFBQUZRRUFBQURBQUFBc3dBQUF3TDBBQUU0eE1GOWZZM2g0WVdKcGRqRXlNRjlmYzJsZlkyeGhjM05mZEhsd1pWOXBibVp2UlFBQUFBQUFBQUFBSUw0QUFBZ0JBQUFXQVFBQUNnRUFBQXNCQUFBWEFRQUFBQUFBQU1UQUFBQUdBQUFBR0FFQUFCa0JBQUFBQUFBQTRNQUFBQVlBQUFBYUFRQUFHd0VBQUFBQUFBQ3N3QUFBQmdBQUFCd0JBQUFkQVFBQTJMOEFBTFRBQUFCVGREbGxlR05sY0hScGIyNEFBQUFBQU1BQUFOREFBQUNzd0FBQVUzUTVZbUZrWDJGc2JHOWpBQUFBQUFEQUFBRHN3QUFBeE1BQUFGTjBNakJpWVdSZllYSnlZWGxmYm1WM1gyeGxibWQwYUFBQUFBQUFBQUFBSE1FQUFBVUFBQUFlQVFBQUh3RUFBQURBQUFBb3dRQUFyTUFBQUZOME1URnNiMmRwWTE5bGNuSnZjZ0FBQUFBQVRNRUFBQVVBQUFBZ0FRQUFId0VBQUFEQUFBQll3UUFBSE1FQUFGTjBNVEpzWlc1bmRHaGZaWEp5YjNJQUFBQUEyTDhBQUhUQkFBQlRkRGwwZVhCbFgybHVabTg9IiksIE4oTSwgNDk1NDYsICJBUUFBSUFBQUJRPT0iKSwgTihNLCA0OTU2NCwgIi9nPT0iKSwgTihNLCA0OTU4OCwgIi93QUFBQUFCQUFCc3hnPT0iKSwgTihNLCA0OTYxMiwgIkFnPT0iKSwgTihNLCA0OTYyOCwgIi8vLy8vLy8vLy84PSIpLCBOKE0sIDQ5Njk2LCAiQlE9PSIpLCBOKE0sIDQ5NzA4LCAiQVFFPSIpLCBOKE0sIDQ5NzMyLCAiL3dBQUFBSUJBQUI0eGdBQUFBUT0iKSwgTihNLCA0OTc1NiwgIkFRPT0iKSwgTihNLCA0OTc3MiwgIi8vLy8vd289IiksIE4oTSwgNDk4NDAsICJnTXdCIik7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgTTIgPSBuZXcgQXJyYXlCdWZmZXIoMTYpLCBhMCA9IG5ldyBJbnQzMkFycmF5KE0yKSwgSjAgPSBuZXcgRmxvYXQ2NEFycmF5KE0yKTsKICAgICAgICAgIGZ1bmN0aW9uIFcwKFYwKSB7CiAgICAgICAgICAgIHJldHVybiBhMFtWMF07CiAgICAgICAgICB9CiAgICAgICAgICBmdW5jdGlvbiBBMChWMCwgajApIHsKICAgICAgICAgICAgYTBbVjBdID0gajA7CiAgICAgICAgICB9CiAgICAgICAgICBmdW5jdGlvbiBOMCgpIHsKICAgICAgICAgICAgcmV0dXJuIEowWzBdOwogICAgICAgICAgfQogICAgICAgICAgZnVuY3Rpb24gZzEoVjApIHsKICAgICAgICAgICAgSjBbMF0gPSBWMDsKICAgICAgICAgIH0KICAgICAgICAgIGZ1bmN0aW9uIFUwKCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFib3J0Iik7CiAgICAgICAgICB9CiAgICAgICAgICBmdW5jdGlvbiBrZShWMCkgewogICAgICAgICAgICB2YXIgajAgPSBuZXcgQXJyYXlCdWZmZXIoNTI0Mjg4MDApLCBGID0gbmV3IEludDhBcnJheShqMCksIHUyID0gbmV3IEludDE2QXJyYXkoajApLCBlID0gbmV3IEludDMyQXJyYXkoajApLCBJID0gbmV3IFVpbnQ4QXJyYXkoajApLCBHMiA9IG5ldyBVaW50MTZBcnJheShqMCksIGQgPSBuZXcgVWludDMyQXJyYXkoajApLCBHID0gbmV3IEZsb2F0MzJBcnJheShqMCksIFEyID0gbmV3IEZsb2F0NjRBcnJheShqMCksIFogPSBNYXRoLmltdWwsIFcgPSBNYXRoLmZyb3VuZCwgUjIgPSBNYXRoLmFicywgTzAgPSBNYXRoLmNsejMyLCBXQSA9IE1hdGgubWluLCBOZSA9IE1hdGguZmxvb3IsICRpID0gTWF0aC5jZWlsLCBtQSA9IE1hdGguc3FydCwgcDAgPSBWMC5hLCBZMCA9IHAwLmEsIGUxID0gcDAuYiwgejEgPSBwMC5jLCBkMSA9IHAwLmQsIHFpID0gcDAuZSwgZXIgPSBwMC5mLCBpciA9IHAwLmcsIHJyID0gcDAuaCwgaDQgPSBwMC5pLCBzNCA9IHAwLmosIHc0ID0gcDAuaywgQjQgPSBwMC5sLCBjNCA9IHAwLm0sIHY0ID0gcDAubiwgeUEgPSBwMC5vLCBwQSA9IHAwLnAsIFFBID0gcDAucSwgVkEgPSBwMC5yLCBZQSA9IHAwLnMsIEhBID0gcDAudCwgWEEgPSBwMC51LCBGQSA9IHAwLnYsIEpBID0gcDAudywgUkEgPSBwMC54LCBFQSA9IHAwLnksIERBID0gcDAueiwgVUEgPSBwMC5BLCBNQSA9IHAwLkIsIFNBID0gcDAuQywgTkEgPSBwMC5ELCBQQSA9IHAwLkUsIHhBID0gcDAuRiwgWCA9IDExNzg4OCwgbmUgPSAwLCB0ZSA9IDAsIHEyID0gMDsKICAgICAgICAgICAgZnVuY3Rpb24gVEEoQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gMCwgQyA9IDAsIG0gPSAwLCB5ID0gMCwgcCA9IDAsIEggPSAwLCBKID0gMCwgRSA9IDAsIEQgPSAwLCBVID0gMCwgUCA9IDAsIHggPSAwLCB6ID0gMCwgaiA9IDAsIE8gPSAwLCBxID0gMCwgZjIgPSAwLCBuMiA9IDAsIGcyID0gMCwgdzIgPSAwLCBjMiA9IDAsIG0yID0gMCwgcDIgPSAwLCBZMiA9IDAsIFgyID0gMCwgRDIgPSAwLCBTMiA9IDAsIFAyID0gMCwgeDIgPSAwLCB6MiA9IDAsIEwyID0gMCwgZTAgPSAwLCBpMCA9IFcoMCksIHIwID0gMCwgazAgPSAwLCB0MCA9IDAsIGgwID0gMCwgQzAgPSAwLCBIMCA9IDAsIEUwID0gMCwgTTAgPSAwLCB4MCA9IDAsIFQwID0gMCwgYjAgPSAwLCBmMSA9IDAsIGExID0gMDsKICAgICAgICAgICAgICBYMiA9IFggLSA5NiB8IDAsIFggPSBYMiwgeiA9IGVbQSArIDggPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlW0EgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gWihlW3ogKyAxNiA+PiAyXSAtIGVbeiArIDggPj4gMl0gfCAwLCBlW3ogKyAyMCA+PiAyXSAtIGVbeiArIDEyID4+IDJdIHwgMCkgPDwgMiwgbiA9IFAwKGYpLCBlW3ogKyA2MCA+PiAyXSA9IG4sICFuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFEoZVtBICsgMzIgPj4gMl0sIDEsIDE3OTE4LCAwKSwgaCA9IEEgKyAyOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBkMihuLCAwLCBmKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVt6ICsgNjAgPj4gMl0sICFmKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICBSKGYpLCBlW3ogKyA2MCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCFlW2VbQSArIDI4ID4+IDJdID4+IDJdKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIEUwID0gZVtBICsgMTYgPj4gMl0sIGYgPSBlW0UwICsgMjggPj4gMl0gKyBaKGVbRTAgKyAyNCA+PiAyXSwgMTUyKSB8IDAsIGYxID0gZVtmIC0gMTUyID4+IDJdLCBhMSA9IGVbZiAtIDE0NCA+PiAyXSwgTTAgPSBlW0EgKyAyMCA+PiAyXSwgeDAgPSBlW0EgKyAxMiA+PiAyXSwgYjAgPSBlW0EgKyA0ID4+IDJdLCBoID0gQSArIDI4IHwgMDsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmIChrID0gSzYoaSksIGspCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIGlmIChrID0gRTIoMSwgMTU2KSwgIWspIHsKICAgICAgICAgICAgICAgICAgICAgIFEoZVtBICsgMzIgPj4gMl0sIDEsIDEwMjc0LCAwKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChlW2sgKyAxNDAgPj4gMl0gPSAwLCB5NihpLCBrKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgUShlW0EgKyAzMiA+PiAyXSwgMSwgMTg2MDYsIDApLCBpID0gZVtrICsgMTE2ID4+IDJdLCBpICYmIChSKGkpLCBlW2sgKyAxMTYgPj4gMl0gPSAwKSwgaSA9IGVbayArIDEyMCA+PiAyXSwgaSAmJiAoUihpKSwgZVtrICsgMTIwID4+IDJdID0gMCksIFIoZVtrICsgMTQ4ID4+IDJdKSwgUihrKTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbayArIDE0NCA+PiAyXSA9IGVbQSArIDI0ID4+IDJdLCBEMiA9IGVbQSArIDQwID4+IDJdLCB4MiA9IGVbQSArIDM2ID4+IDJdLCBmMiA9IGVbQSArIDMyID4+IDJdLCBmID0gZVtNMCArIDgwOCA+PiAyXSwgaSA9IGVbeDAgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIFMyID0gZVtNMCArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChTMiAmIDY0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBYIC0gMzA0IHwgMCwgWCA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEoZjIsIDEsIDU2MjEsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUShmMiwgMSwgNTYyMSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVtrICsgMTE2ID4+IDJdLCBmID0gZVt6ICsgMjAgPj4gMl0gLSBlW3ogKyAxMiA+PiAyXSB8IDAsIGkgPSBlW3ogKyAxNiA+PiAyXSAtIGVbeiArIDggPj4gMl0gfCAwLCBuID0gWihmLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID4+PiAwID4gZFtrICsgMTMyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIociksIHcgPSBuIDw8IDIsIHIgPSBQMCh3KSwgZVtrICsgMTE2ID4+IDJdID0gciwgIXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTMyID4+IDJdID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gbiA8PCAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDIociwgMCwgdyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2sgKyAxMjAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRbayArIDEzNiA+PiAyXSA+IDI2MzkgfHwgKFIociksIHIgPSBQMCgxMDU2MCksIGVbayArIDEyMCA+PiAyXSA9IHIsIHIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtrICsgMTM2ID4+IDJdID0gMjY0MCwgZDIociwgMCwgMTA1NjApLCBlW2sgKyAxMjggPj4gMl0gPSBmLCBlW2sgKyAxMjQgPj4gMl0gPSBpLCB2ID0gZVt6ICsgMjQgPj4gMl0sICF2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlW3ogKyAyOCA+PiAyXSwgciA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGVbeiArIDUyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVt6ICsgNCA+PiAyXSwgciA9IDAsIG0gPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IG0gJiAtNDsgdSA9IGYgKyAoZyA8PCAzKSB8IDAsIHIgPSBlW3UgKyAyOCA+PiAyXSArIChlW3UgKyAyMCA+PiAyXSArIChlW3UgKyAxMiA+PiAyXSArIChlW3UgKyA0ID4+IDJdICsgciB8IDApIHwgMCkgfCAwKSB8IDAsIGcgPSBnICsgNCB8IDAsIEIgPSBCICsgNCB8IDAsIChpIHwgMCkgIT0gKEIgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBtICYgMywgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyByID0gZVsoZiArIChnIDw8IDMpIHwgMCkgKyA0ID4+IDJdICsgciB8IDAsIGcgPSBnICsgMSB8IDAsIGEgPSBhICsgMSB8IDAsIChpIHwgMCkgIT0gKGEgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW2sgKyAxNDQgPj4gMl0gJiAobSB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2sgKyAxNTIgPj4gMl0gPj0gciA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSBvMChlW2sgKyAxNDggPj4gMl0sIHIpLCB3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtrICsgMTQ0ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gZVtrICsgMTQ4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTUyID4+IDJdID0gciwgZVtrICsgMTQ4ID4+IDJdID0gdywgbSA9IGVbeiArIDUyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVt6ICsgNCA+PiAyXSwgciA9IDAsIGcgPSAwOyBmID0gZyA8PCAzLCBpID0gZiArIGwgfCAwLCBGMihyICsgdyB8IDAsIGVbaSA+PiAyXSwgZVtpICsgNCA+PiAyXSksIGwgPSBlW3ogKyA0ID4+IDJdLCByID0gZVsoZiArIGwgfCAwKSArIDQgPj4gMl0gKyByIHwgMCwgZyA9IGcgKyAxIHwgMCwgZyA+Pj4gMCA8IGRbeiArIDUyID4+IDJdOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGVbZVt6ICsgNCA+PiAyXSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDAsIGwgPSAwLCBmID0gZVt6ICsgNDAgPj4gMl0sIHUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZiB8fCAoaSA9IGVbeiA+PiAyXSwgbCA9IGVbaSArIDggPj4gMl0sIHUgPSAwLCAoZiB8IDApID09IDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbaSArIDMyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdiAtIG4gfCAwLCBsID0gbCArIHUgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gMSwgaSA9IGVbeiA+PiAyXSwgQyA9IGVbaSA+PiAyXSwgYSA9IDAsIChsIHwgMCkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlW2kgKyAyNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IGYgKyAxIHwgMCwgazAgPSBlW2sgKyAxMTYgPj4gMl0sIEQyID0gZVtrICsgMTIwID4+IDJdLCBjID0gZVt6ICsgMTIgPj4gMl0sIEQgPSBlW3ogKyAyMCA+PiAyXSwgTyA9IGVbeiArIDggPj4gMl0sIFQwID0gZVt6ICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShhIHwgIWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF4MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShmMiwgMiwgMjE0MzksIDApLCBsID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID4+PiAwIDwgNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW28gKyAxMTIgPj4gMl0gPSBsLCBRKGYyLCAxLCAyMDA3NCwgbyArIDExMiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtvICsgOTYgPj4gMl0gPSBsLCBRKGYyLCAxLCAyMDA3NCwgbyArIDk2IHwgMCksIHIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFEoZjIsIDIsIDIxNDM5LCAwKSwgZyA9IGVbeiArIDI0ID4+IDJdLCBnID4+PiAwID4gMzApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUDIgPSAxLCBnID4+PiAwID49IEUgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbeiArIDI0ID4+IDJdLCBnID0gaSwgaSA+Pj4gMCA8PSAzMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF4MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtvICsgMzIgPj4gMl0gPSBpLCBRKGYyLCAxLCAyMzY1NywgbyArIDMyIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW28gPj4gMl0gPSBnLCBRKGYyLCAxLCAyMzY1NywgbyksIHIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPCBFID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPj4+IDAgPCAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZyB8IDApICE9IChFIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDIgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFAyID0gMSwgSVs0OTkzNl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXgyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbNDk5MzZdID0gMSwgZVtvICsgNjQgPj4gMl0gPSBsLCBRKGYyLCAyLCAyMDkwMSwgbyAtIC02NCB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVs0OTkzNl0gfHwgKEZbNDk5MzZdID0gMSwgZVtvICsgODAgPj4gMl0gPSBsLCBRKGYyLCAyLCAyMDkwMSwgbyArIDgwIHwgMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghKEMgPj4+IDAgPCAyIHwgciA+Pj4gMCA8IEMgPj4+IDApICYgYSArIEMgPj4+IDAgPD0gciA+Pj4gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMCwgUShmMiwgMSwgMTk2MjIsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAsIFEoZjIsIDEsIDE5NjIyLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIID0gdyArIEMgfCAwLCBpID0gSVtIIC0gMSB8IDBdLCBxID0gaSA8PCA0IHwgSVtIIC0gMiB8IDBdICYgMTUsICEoIShxID4+PiAwIDwgMiB8IChpIHwgMCkgPT0gMjU1KSAmIChDIHwgMCkgPj0gKHEgfCAwKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMCwgUShmMiwgMSwgMjczMDAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAsIFEoZjIsIDEsIDI3MzAwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyID0gZVt6ICsgMjggPj4gMl0sIGVbbyArIDI3MiA+PiAyXSA9IDAsIGVbbyArIDI4MCA+PiAyXSA9IDAsIGVbbyArIDI2NCA+PiAyXSA9IDAsIGVbbyArIDI2OCA+PiAyXSA9IDAsIGVbbyArIDI5NiA+PiAyXSA9IDAsIGVbbyArIDMwMCA+PiAyXSA9IDAsIGVbbyArIDI4NCA+PiAyXSA9IDAsIGVbbyArIDI4OCA+PiAyXSA9IDAsIGkgPSBxIC0gMSB8IDAsIGVbbyArIDI3NiA+PiAyXSA9IGksIHIgPSAodyArIEMgfCAwKSAtIHEgfCAwLCBlW28gKyAyNTYgPj4gMl0gPSByLCB2ID0gSVtyIHwgMF0sIGYgPSA4LCBlW28gKyAyNzIgPj4gMl0gPSA4LCBsID0gciArIDEgfCAwLCBlW28gKyAyNTYgPj4gMl0gPSBsLCBuID0gcSAtIDIgfCAwLCBlW28gKyAyNzYgPj4gMl0gPSBuLCB1ID0gKGkgfCAwKSA9PSAxID8gdiB8IDE1IDogdiwgaSA9IDAsIHYgPSBpLCBlW28gKyAyNjQgPj4gMl0gPSB1LCBlW28gKyAyNjggPj4gMl0gPSBpLCBlW28gKyAyODAgPj4gMl0gPSAhaSAmICh1IHwgMCkgPT0gMjU1LCBtMiA9IHIgJiAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtMiB8IDApID09IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSAwLCAhKCh1IHwgMCkgIT0gMjU1IHwgKGkgfCAwKSAhPSAwIHwgSVtsIHwgMF0gPD0gMTQzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IDI1NSwgaSA9IHEgPj4+IDAgPj0gMyA/IElbbCB8IDBdIDogaSwgZyA9IHEgLSAzIHwgMCwgZVtvICsgMjc2ID4+IDJdID0gZywgciA9ICF2ICYgKHUgfCAwKSA9PSAyNTUsIGYgPSByID8gMTUgOiAxNiwgZVtvICsgMjcyID4+IDJdID0gZiwgbSA9IGwgKyAocSA+Pj4gMCA+IDIpIHwgMCwgZVtvICsgMjU2ID4+IDJdID0gbSwgaSA9IChuIHwgMCkgPT0gMSA/IGkgfCAxNSA6IGksIG4gPSAwLCBlW28gKyAyODAgPj4gMl0gPSAhbiAmIChpIHwgMCkgPT0gMjU1LCBuID0gaSwgbCA9IHUsIGkgPSByID8gNyA6IDgsIHIgPSBpICYgMzEsIChpICYgNjMpID4+PiAwID49IDMyID8gKGogPSBsIDw8IHIsIGkgPSAwKSA6IChqID0gKDEgPDwgcikgLSAxICYgbCA+Pj4gMzIgLSByIHwgdiA8PCByLCBpID0gbCA8PCByKSwgdSA9IGkgfCBuLCBpID0gcCB8IGosIHYgPSBpLCBlW28gKyAyNjQgPj4gMl0gPSB1LCBlW28gKyAyNjggPj4gMl0gPSBpLCAobTIgfCAwKSA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gMjU1LCByID0gMCwgISgobiB8IDApICE9IDI1NSB8IChwIHwgMCkgIT0gMCB8IElbbSB8IDBdIDw9IDE0MykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBxID4+PiAwID49IDQgPyBJW20gfCAwXSA6IGwsIHQgPSBxIC0gNCB8IDAsIGVbbyArIDI3NiA+PiAyXSA9IHQsIG0gPSBtICsgKHEgPj4+IDAgPiAzKSB8IDAsIGVbbyArIDI1NiA+PiAyXSA9IG0sIGkgPSAoZyB8IDApID09IDEgPyBsIHwgMTUgOiBsLCByID0gMCwgZyA9IHIsIGVbbyArIDI4MCA+PiAyXSA9ICFyICYgKGkgfCAwKSA9PSAyNTUsIHIgPSAhcCAmIChuIHwgMCkgPT0gMjU1LCBmID0gKHIgPyA3IDogOCkgKyBmIHwgMCwgZVtvICsgMjcyID4+IDJdID0gZiwgbiA9IGksIGwgPSB1LCBpID0gciA/IDcgOiA4LCByID0gaSAmIDMxLCAoaSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChwID0gbCA8PCByLCBpID0gMCkgOiAocCA9ICgxIDw8IHIpIC0gMSAmIGwgPj4+IDMyIC0gciB8IHYgPDwgciwgaSA9IGwgPDwgciksIHUgPSBpIHwgbiwgaSA9IGcgfCBwLCB2ID0gaSwgZVtvICsgMjY0ID4+IDJdID0gdSwgZVtvICsgMjY4ID4+IDJdID0gaSwgKG0yIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IDAsICEoKG4gfCAwKSAhPSAyNTUgfCAoZyB8IDApICE9IDAgfCBJW20gfCAwXSA8PSAxNDMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAyNTUsIGkgPSBxID4+PiAwID49IDUgPyBJW20gfCAwXSA6IGksIGVbbyArIDI3NiA+PiAyXSA9IHEgLSA1LCBlW28gKyAyNTYgPj4gMl0gPSBtICsgKHEgPj4+IDAgPiA0KSwgciA9IDAsIGkgPSAodCB8IDApID09IDEgPyBpIHwgMTUgOiBpLCBlW28gKyAyODAgPj4gMl0gPSAhciAmIChpIHwgMCkgPT0gMjU1LCBuID0gIWcgJiAobiB8IDApID09IDI1NSwgZiA9IChuID8gNyA6IDgpICsgZiB8IDAsIGVbbyArIDI3MiA+PiAyXSA9IGYsIGwgPSB1LCBuID0gbiA/IDcgOiA4LCBnID0gbiAmIDMxLCAobiAmIDYzKSA+Pj4gMCA+PSAzMiA/ICh0ID0gbCA8PCBnLCBuID0gMCkgOiAodCA9ICgxIDw8IGcpIC0gMSAmIGwgPj4+IDMyIC0gZyB8IHYgPDwgZywgbiA9IGwgPDwgZyksIHUgPSBuIHwgaSwgaSA9IHIgfCB0LCB2ID0gaSwgZVtvICsgMjY0ID4+IDJdID0gdSwgZVtvICsgMjY4ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1LCBmID0gNjQgLSBmIHwgMCwgbiA9IGYgJiAzMSwgKGYgJiA2MykgPj4+IDAgPj0gMzIgPyAodCA9IGkgPDwgbiwgaSA9IDApIDogKHQgPSAoMSA8PCBuKSAtIDEgJiBpID4+PiAzMiAtIG4gfCB2IDw8IG4sIGkgPSBpIDw8IG4pLCBlW28gKyAyNjQgPj4gMl0gPSBpLCBlW28gKyAyNjggPj4gMl0gPSB0LCByID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAsIFEoZjIsIDEsIDIyMDQ5LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwLCBRKGYyLCAxLCAyMjA0OSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVID0gVDAgLSBPIHwgMCwgbSA9IHEgLSAyIHwgMCwgZVtvICsgMjQ0ID4+IDJdID0gbSwgbTIgPSB3ICsgQyB8IDAsIGkgPSBtMiAtIDMgfCAwLCBlW28gKyAyMjQgPj4gMl0gPSBpLCBmID0gSVttMiAtIDIgfCAwXSwgbCA9IGYgPj4+IDAgPiAxNDMsIGVbbyArIDI0OCA+PiAyXSA9IGwsIHYgPSAwLCB1ID0gZiA+Pj4gNCB8IDAsIGVbbyArIDIzMiA+PiAyXSA9IHUsIGVbbyArIDIzNiA+PiAyXSA9IDAsIHggPSAodSAmIDcpID09IDcgPyAzIDogNCwgZVtvICsgMjQwID4+IDJdID0geCwgZiA9IChpICYgMykgKyAxIHwgMCwgQiA9IGYgPj4+IDAgPCBtID4+PiAwID8gZiA6IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMCwgZVtvICsgMjQ0ID4+IDJdID0gbSAtIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbTIgLSA0IHwgMCwgZVtvICsgMjI0ID4+IDJdID0gZiwgbiA9IElbaSB8IDBdLCByID0gbiA+Pj4gMCA+IDE0MywgZVtvICsgMjQ4ID4+IDJdID0gciwgdiA9IHggJiAzMSwgKHggJiA2MykgPj4+IDAgPj0gMzIgPyAocCA9IG4gPDwgdiwgdiA9IDApIDogKHAgPSAoMSA8PCB2KSAtIDEgJiBuID4+PiAzMiAtIHYsIHYgPSBuIDw8IHYpLCB1ID0gdiB8IHUsIGVbbyArIDIzMiA+PiAyXSA9IHUsIHYgPSBwLCBlW28gKyAyMzYgPj4gMl0gPSB2LCB4ID0gKGwgJiYgKG4gJiAxMjcpID09IDEyNyA/IDcgOiA4KSArIHggfCAwLCBlW28gKyAyNDAgPj4gMl0gPSB4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPCAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gbTIgLSA1IHwgMCwgZVtvICsgMjI0ID4+IDJdID0gciwgdCA9IElbZiB8IDBdLCBsID0gdCA+Pj4gMCA+IDE0MywgZVtvICsgMjQ4ID4+IDJdID0gbCwgaSA9IHggJiAzMSwgKHggJiA2MykgPj4+IDAgPj0gMzIgPyAoaiA9IHQgPDwgaSwgaSA9IDApIDogKGogPSAoMSA8PCBpKSAtIDEgJiB0ID4+PiAzMiAtIGksIGkgPSB0IDw8IGkpLCB1ID0gaSB8IHUsIGkgPSB2IHwgaiwgdiA9IGksIGVbbyArIDIzMiA+PiAyXSA9IHUsIGVbbyArIDIzNiA+PiAyXSA9IGksIHggPSAobiA+Pj4gMCA8PSAxNDMgPyA4IDogKHQgJiAxMjcpID09IDEyNyA/IDcgOiA4KSArIHggfCAwLCBlW28gKyAyNDAgPj4gMl0gPSB4LCAoQiB8IDApID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCBmID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbTIgLSA2IHwgMCwgZVtvICsgMjI0ID4+IDJdID0gbiwgaSA9IElbciB8IDBdLCBnID0gaSwgbCA9IGkgPj4+IDAgPiAxNDMsIGVbbyArIDI0OCA+PiAyXSA9IGwsIGYgPSB4ICYgMzEsICh4ICYgNjMpID4+PiAwID49IDMyID8gKHAgPSBpIDw8IGYsIGYgPSAwKSA6IChwID0gKDEgPDwgZikgLSAxICYgaSA+Pj4gMzIgLSBmLCBmID0gaSA8PCBmKSwgdSA9IGYgfCB1LCBmID0gdiB8IHAsIHYgPSBmLCBlW28gKyAyMzIgPj4gMl0gPSB1LCBlW28gKyAyMzYgPj4gMl0gPSBmLCB4ID0gKHQgPj4+IDAgPD0gMTQzID8gOCA6IChpICYgMTI3KSA9PSAxMjcgPyA3IDogOCkgKyB4IHwgMCwgZVtvICsgMjQwID4+IDJdID0geCwgKEIgfCAwKSA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gciwgZiA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbTIgLSA3IHwgMCwgZVtvICsgMjI0ID4+IDJdID0gZiwgaSA9IElbbiB8IDBdLCBsID0gaSA+Pj4gMCA+IDE0MywgZVtvICsgMjQ4ID4+IDJdID0gbCwgciA9IHggJiAzMSwgKHggJiA2MykgPj4+IDAgPj0gMzIgPyAoaiA9IGkgPDwgciwgciA9IDApIDogKGogPSAoMSA8PCByKSAtIDEgJiBpID4+PiAzMiAtIHIsIHIgPSBpIDw8IHIpLCB1ID0gciB8IHUsIGVbbyArIDIzMiA+PiAyXSA9IHUsIHYgPSB2IHwgaiwgZVtvICsgMjM2ID4+IDJdID0gdiwgeCA9IChnID4+PiAwIDw9IDE0MyA/IDggOiAoaSAmIDEyNykgPT0gMTI3ID8gNyA6IDgpICsgeCB8IDAsIGVbbyArIDI0MCA+PiAyXSA9IHgsIGkgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbSAtIEIgfCAwLCBlW28gKyAyNDQgPj4gMl0gPSBuLCB4ID4+PiAwID4gMzIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgPj0gNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2kgLSA0ID4+IDJdLCBlW28gKyAyMjQgPj4gMl0gPSBpIC0gNSwgZVtvICsgMjQ0ID4+IDJdID0gbiAtIDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMiA9IG4gJiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChCIHwgMCkgPT0gKHEgLSAzIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAyNCwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgPSBuICYgMjE0NzQ4MzY0NiwgbSA9IDI0LCByID0gMCwgaSA9IGY7IGcgPSBpIC0gMSB8IDAsIGVbbyArIDIyNCA+PiAyXSA9IGcsIHQgPSBJW2kgfCAwXSwgZiA9IGkgLSAyIHwgMCwgZVtvICsgMjI0ID4+IDJdID0gZiwgZVtvICsgMjQ0ID4+IDJdID0gbiAtIDEsIGkgPSBJW2cgfCAwXSwgbiA9IG4gLSAyIHwgMCwgZVtvICsgMjQ0ID4+IDJdID0gbiwgciA9IHQgPDwgbSB8IHIgfCBpIDw8IG0gLSA4LCBtID0gbSAtIDE2IHwgMCwgaSA9IGYsIEogPSBKICsgMiB8IDAsIChwIHwgMCkgIT0gKEogfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtvICsgMjI0ID4+IDJdID0gZiAtIDEsIGkgPSBJW2YgfCAwXSwgZVtvICsgMjQ0ID4+IDJdID0gbiAtIDEsIHIgPSBpIDw8IG0gfCByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHIgJiAyNTUsIGVbbyArIDI0OCA+PiAyXSA9IHAgPj4+IDAgPiAxNDMsIG4gPSBsICYmIChyICYgMjEzMDcwNjQzMikgPT0gMjEzMDcwNjQzMiA/IDcgOiA4LCBmID0gbiArIChyID4+PiAwIDw9IDI0MTU5MTkxMDMgPyA4IDogKHIgJiA4MzIzMDcyKSA9PSA4MzIzMDcyID8gNyA6IDgpIHwgMCwgdCA9IHIgPj4+IDE2ICYgMjU1LCBpID0gZiArICh0ID4+PiAwIDw9IDE0MyA/IDggOiAociAmIDMyNTEyKSA9PSAzMjUxMiA/IDcgOiA4KSB8IDAsIGcgPSByID4+PiA4ICYgMjU1LCBlW28gKyAyNDAgPj4gMl0gPSBpICsgKChnID4+PiAwIDw9IDE0MyA/IDggOiAociAmIDEyNykgPT0gMTI3ID8gNyA6IDgpICsgeCB8IDApLCBpID0gdCA8PCBuIHwgciA+Pj4gMjQgfCBnIDw8IGYgfCBwIDw8IGksIGYgPSB4ICYgMzEsICh4ICYgNjMpID4+PiAwID49IDMyID8gKHQgPSBpIDw8IGYsIGkgPSAwKSA6ICh0ID0gKDEgPDwgZikgLSAxICYgaSA+Pj4gMzIgLSBmLCBpID0gaSA8PCBmKSwgZVtvICsgMjMyID4+IDJdID0gaSB8IHUsIGVbbyArIDIzNiA+PiAyXSA9IHQgfCB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQNChvICsgMTkyIHwgMCwgdywgQyAtIHEgfCAwLCAyNTUpLCBtMiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFAyID4+PiAwIDwgMiB8fCAoUDQobyArIDE2MCB8IDAsIEgsIGEsIDApLCBtMiA9IDAsIChQMiB8IDApID09IDIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IDAsIHYgPSAwLCBsID0gMCwgZVtvICsgMTUyID4+IDJdID0gMSwgZVtvICsgMTQ0ID4+IDJdID0gMCwgZVtvICsgMTM2ID4+IDJdID0gMCwgZVtvICsgMTQwID4+IDJdID0gMCwgZiA9IGEgLSAxIHwgMCwgZVtvICsgMTQ4ID4+IDJdID0gZiwgaSA9ICh3ICsgQyB8IDApICsgYSB8IDAsIG4gPSBpIC0gMSB8IDAsIGVbbyArIDEyOCA+PiAyXSA9IG4sIGcgPSBuICYgMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgLSAyIHwgMCwgZVtvICsgMTI4ID4+IDJdID0gaSwgdSA9IElbbiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtvICsgMTM2ID4+IDJdID0gdSwgZVtvICsgMTQwID4+IDJdID0gMCwgeCA9IHUgPj4+IDAgPiAxNDMsIGVbbyArIDE1MiA+PiAyXSA9IHgsIHcgPSAodSAmIDEyNykgPT0gMTI3ID8gNyA6IDgsIGVbbyArIDE0NCA+PiAyXSA9IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gYSAtIDIgfCAwLCBlW28gKyAxNDggPj4gMl0gPSBDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgPCAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpIC0gMSB8IDAsIGVbbyArIDEyOCA+PiAyXSA9IHIsIGwgPSBJW2kgfCAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA9IGwgPj4+IDAgPiAxNDMsIGVbbyArIDE1MiA+PiAyXSA9IHgsIGkgPSB3ICYgMzEsICh3ICYgNjMpID4+PiAwID49IDMyID8gKHQgPSBsIDw8IGksIGkgPSAwKSA6ICh0ID0gKDEgPDwgaSkgLSAxICYgbCA+Pj4gMzIgLSBpLCBpID0gbCA8PCBpKSwgdiA9IGkgfCB1LCBlW28gKyAxMzYgPj4gMl0gPSB2LCBpID0gdCwgZVtvICsgMTQwID4+IDJdID0gaSwgdyA9ICh1ID4+PiAwIDw9IDE0MyA/IDggOiAobCAmIDEyNykgPT0gMTI3ID8gNyA6IDgpICsgdyB8IDAsIGVbbyArIDE0NCA+PiAyXSA9IHcsIChnIHwgMCkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByLCB1ID0gdiwgdiA9IHQsIGEgPSBmLCBmID0gQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBhIC0gMyB8IDAsIGVbbyArIDE0OCA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGEgfCAwKSA8IDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHIgLSAxIHwgMCwgZVtvICsgMTI4ID4+IDJdID0gbiwgcyA9IElbciB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID0gcyA+Pj4gMCA+IDE0MywgZVtvICsgMTUyID4+IDJdID0geCwgZiA9IHcgJiAzMSwgKHcgJiA2MykgPj4+IDAgPj0gMzIgPyAoaiA9IHMgPDwgZiwgZiA9IDApIDogKGogPSAoMSA8PCBmKSAtIDEgJiBzID4+PiAzMiAtIGYsIGYgPSBzIDw8IGYpLCB1ID0gZiB8IHYsIGkgPSBpIHwgaiwgdiA9IGksIGVbbyArIDEzNiA+PiAyXSA9IHUsIGVbbyArIDE0MCA+PiAyXSA9IGksIHcgPSAobCA+Pj4gMCA8PSAxNDMgPyA4IDogKHMgJiAxMjcpID09IDEyNyA/IDcgOiA4KSArIHcgfCAwLCBlW28gKyAxNDQgPj4gMl0gPSB3LCAoZyB8IDApID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgYSA9IEMsIGYgPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGEgLSA0IHwgMCwgZVtvICsgMTQ4ID4+IDJdID0gZiwgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGEgfCAwKSA8IDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4gLSAxIHwgMCwgZVtvICsgMTI4ID4+IDJdID0gaSwgbCA9IElbbiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBsID4+PiAwID4gMTQzLCBlW28gKyAxNTIgPj4gMl0gPSB4LCBuID0gdyAmIDMxLCAodyAmIDYzKSA+Pj4gMCA+PSAzMiA/IChwID0gbCA8PCBuLCBuID0gMCkgOiAocCA9ICgxIDw8IG4pIC0gMSAmIGwgPj4+IDMyIC0gbiwgbiA9IGwgPDwgbiksIHUgPSBuIHwgdSwgbiA9IHYgfCBwLCB2ID0gbiwgZVtvICsgMTM2ID4+IDJdID0gdSwgZVtvICsgMTQwID4+IDJdID0gbiwgdyA9IChzID4+PiAwIDw9IDE0MyA/IDggOiAobCAmIDEyNykgPT0gMTI3ID8gNyA6IDgpICsgdyB8IDAsIGVbbyArIDE0NCA+PiAyXSA9IHcsIGEgPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPj4+IDAgPD0gMzIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApID49IDUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2kgLSAzID4+IDJdLCBlW28gKyAxNDggPj4gMl0gPSBhIC0gNSwgZVtvICsgMTI4ID4+IDJdID0gaSAtIDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IDAsIChhIHwgMCkgPCAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAyNDsgbCA9IGkgLSAxIHwgMCwgZVtvICsgMTI4ID4+IDJdID0gbCwgaSA9IElbaSB8IDBdLCBuID0gZiAtIDEgfCAwLCBlW28gKyAxNDggPj4gMl0gPSBuLCByID0gaSA8PCBhIHwgciwgdCA9IGYgPj4+IDAgPiAxLCBpID0gbCwgYSA9IGEgLSA4IHwgMCwgZiA9IG4sICEhdDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSByICYgMjU1LCBlW28gKyAxNTIgPj4gMl0gPSB0ID4+PiAwID4gMTQzLCBuID0geCAmJiAociAmIDIxMzA3MDY0MzIpID09IDIxMzA3MDY0MzIgPyA3IDogOCwgZiA9IG4gKyAociA+Pj4gMCA8PSAyNDE1OTE5MTAzID8gOCA6IChyICYgODMyMzA3MikgPT0gODMyMzA3MiA/IDcgOiA4KSB8IDAsIGEgPSByID4+PiAxNiAmIDI1NSwgaSA9IGYgKyAoYSA+Pj4gMCA8PSAxNDMgPyA4IDogKHIgJiAzMjUxMikgPT0gMzI1MTIgPyA3IDogOCkgfCAwLCBsID0gciA+Pj4gOCAmIDI1NSwgZVtvICsgMTQ0ID4+IDJdID0gaSArICgobCA+Pj4gMCA8PSAxNDMgPyA4IDogKHIgJiAxMjcpID09IDEyNyA/IDcgOiA4KSArIHcgfCAwKSwgaSA9IGEgPDwgbiB8IHIgPj4+IDI0IHwgbCA8PCBmIHwgdCA8PCBpLCBmID0gdyAmIDMxLCAodyAmIDYzKSA+Pj4gMCA+PSAzMiA/ICh0ID0gaSA8PCBmLCBpID0gMCkgOiAodCA9ICgxIDw8IGYpIC0gMSAmIGkgPj4+IDMyIC0gZiwgaSA9IGkgPDwgZiksIGVbbyArIDEzNiA+PiAyXSA9IGkgfCB1LCBlW28gKyAxNDAgPj4gMl0gPSB0IHwgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0yID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHoyID0gRCAtIGMgfCAwLCBwMiA9IEUgKyAxIHwgMCwgRltEMiArIDIxMTIgfCAwXSA9IDAsIHMgPSBEMiArIDIxMTIgfCAwLCBuID0gR2UobyArIDI1NiB8IDApLCAoVSB8IDApID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocSA9IGMyIC0gMSB8IDAsIGkgPSBEMiwgbCA9IHMsIHcgPSAwLCBmID0gazAsIEIgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gQiwgZyA9IEcyWyh3IDw8IDggfCAoZ2kobyArIDIyNCB8IDApICYgMTI3KSA8PCAxKSArIDMxNzkyID4+IDFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID0gbiAtIDIgfCAwLCBnID0gKHYgfCAwKSA9PSAtMSA/IGcgOiAwLCAobiB8IDApID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gR2UobyArIDI1NiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtvICsgMjM2ID4+IDJdLCB1ID0gZVtvICsgMjMyID4+IDJdLCB2ID0gZVtvICsgMjQwID4+IDJdLCBIID0gZyA+Pj4gNCB8IDAsIGMgPSBlW2kgPj4gMl0gfCAoSCAmIDMgfCBnID4+PiAyICYgNDgpIDw8IFkyLCBlW2kgPj4gMl0gPSBjLCBEID0gZyAmIDE2LCB3ID0gZyA+Pj4gNSAmIDcgfCBEID4+PiA0LCBhID0gdiwgdiA9IGcgJiA3LCBCID0gYSAtIHYgfCAwLCB1ID0gKCgxIDw8IHYpIC0gMSAmIHIpIDw8IDMyIC0gdiB8IHUgPj4+IHYsIHYgPSByID4+PiB2IHwgMCwgYSA9IHUsIHIgPSAwLCAoVSB8IDApID4gKEMgfCAyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBHMlsodyA8PCA4IHwgKGEgJiAxMjcpIDw8IDEpICsgMzE3OTIgPj4gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IG4gLSAyIHwgMCwgciA9IChhIHwgMCkgPT0gLTEgPyByIDogMCwgKG4gfCAwKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gR2UobyArIDI1NiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gciA+Pj4gNCAmIDEgfCByID4+PiA1ICYgNywgYSA9IHIgJiA3LCBCID0gQiAtIGEgfCAwLCB1ID0gKCgxIDw8IGEpIC0gMSAmIHYpIDw8IDMyIC0gYSB8IHUgPj4+IGEsIHYgPSB2ID4+PiBhIHwgMCwgYSA9IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtpID4+IDJdID0gYyB8IChyIDw8IDIgJiA3NjggfCByICYgNDgpIDw8IFkyICsgNCwgbSA9IHIgPj4+IDIgJiAyIHwgZyA+Pj4gMyAmIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG0gfCAwKSAhPSAzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IG4gLSAyIHwgMCwgbSA9ICh0IHwgMCkgPT0gLTEgPyA0IDogMywgKG4gfCAwKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IEdlKG8gKyAyNTYgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW28gKyAxMjAgPj4gMl0gPSAxLCBlW28gKyAxMjQgPj4gMl0gPSAxLCBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtID4+PiAwIDw9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBJWyhhICYgNykgKyAzNTk0MCB8IDBdLCBjID0gdCA+Pj4gMiAmIDcsIHAgPSB0ICYgMywgdCA9ICgoKC0xIDw8IGMgXiAtMSkgJiBhID4+PiBwKSArICh0ID4+PiA1IHwgMCkgfCAwKSArIDEgfCAwLCBhID0gKG0gfCAwKSA9PSAxLCBlW28gKyAxMjQgPj4gMl0gPSBhID8gMSA6IHQsIGVbbyArIDEyMCA+PiAyXSA9IGEgPyB0IDogMSwgYSA9IGMgKyBwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKID0gYSwgYSA9IElbKGEgJiA3KSArIDM1OTQwIHwgMF0sIGogPSBhICYgMywgdCA9IEogPj4+IGogfCAwLCAobSB8IDApID09IDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFID0gKGEgPj4+IDUgfCAwKSArIDEgfCAwLCAoaiB8IDApID09IDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtvICsgMTI0ID4+IDJdID0gdCAmIDEgfCAyLCBhID0gYSA+Pj4gMiAmIDcsIGVbbyArIDEyMCA+PiAyXSA9IEUgKyAoKC0xIDw8IGEgXiAtMSkgJiB0ID4+PiAxKSwgYSA9IGEgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBJWyh0ICYgNykgKyAzNTk0MCB8IDBdLCBwID0gYyAmIDMsIHQgPSB0ID4+PiBwIHwgMCwgbSA9IGEgPj4+IDIgJiA3LCBlW28gKyAxMjAgPj4gMl0gPSBFICsgKHQgJiAoLTEgPDwgbSBeIC0xKSksIGEgPSBjID4+PiAyICYgNywgZVtvICsgMTI0ID4+IDJdID0gKCgoLTEgPDwgYSBeIC0xKSAmIHQgPj4+IG0pICsgKGMgPj4+IDUgfCAwKSB8IDApICsgMSwgYSA9IGEgKyAocCArIChtICsgaiB8IDApIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IElbKHQgJiA3KSArIDM1OTQwIHwgMF0sIHAgPSBjICYgMywgdCA9IHQgPj4+IHAgfCAwLCBtID0gYSA+Pj4gMiAmIDcsIGVbbyArIDEyMCA+PiAyXSA9ICgodCAmICgtMSA8PCBtIF4gLTEpKSArIChhID4+PiA1IHwgMCkgfCAwKSArIDMsIGEgPSBjID4+PiAyICYgNywgZVtvICsgMTI0ID4+IDJdID0gKCgoLTEgPDwgYSBeIC0xKSAmIHQgPj4+IG0pICsgKGMgPj4+IDUgfCAwKSB8IDApICsgMywgYSA9IGEgKyAobSArIChwICsgaiB8IDApIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA9IGVbbyArIDEyMCA+PiAyXSwgbSA+Pj4gMCA8PSBwMiA+Pj4gMCAmJiAoYyA9IGVbbyArIDEyNCA+PiAyXSwgYyA+Pj4gMCA8PSBwMiA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAsIFEoZjIsIDEsIDI4MTA2LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwLCBRKGYyLCAxLCAyODEwNiwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtvICsgMjQwID4+IDJdID0gQiAtIGEsIHAgPSBhICYgMzEsIChhICYgNjMpID4+PiAwID49IDMyID8gKHQgPSAwLCB2ID0gdiA+Pj4gcCB8IDApIDogKHQgPSB2ID4+PiBwIHwgMCwgdiA9ICgoMSA8PCBwKSAtIDEgJiB2KSA8PCAzMiAtIHAgfCB1ID4+PiBwKSwgZVtvICsgMjMyID4+IDJdID0gdiwgZVtvICsgMjM2ID4+IDJdID0gdCwgQiA9IEMgKyA0IHwgMCwgdiA9IChCIHwgMCkgPD0gKFUgfCAwKSA/IDI1NSA6IDI1NSA+Pj4gKEIgLSBVIDw8IDEpIHwgMCwgRSA9ICh6MiB8IDApID4gMSA/IHYgOiB2ICYgODUsIChyICYgMjQwIHwgSCAmIDE1KSAmIChFIF4gLTEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMCwgUShmMiwgMSwgMjMzMzEsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAsIFEoZjIsIDEsIDIzMzMxLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gazEobyArIDE5MiB8IDApLCBwID0gbSArIChnIDw8IDE5ID4+IDMxKSB8IDAsIGVbbyArIDIwOCA+PiAyXSA9IGVbbyArIDIwOCA+PiAyXSAtIHAsIGEgPSBlW28gKyAyMDQgPj4gMl0sIHYgPSBlW28gKyAyMDAgPj4gMl0sIEQgPSBwICYgMzEsIChwICYgNjMpID4+PiAwID49IDMyID8gKHQgPSAwLCB2ID0gYSA+Pj4gRCB8IDApIDogKHQgPSBhID4+PiBEIHwgMCwgdiA9ICgoMSA8PCBEKSAtIDEgJiBhKSA8PCAzMiAtIEQgfCB2ID4+PiBEKSwgZVtvICsgMjAwID4+IDJdID0gdiwgZVtvICsgMjA0ID4+IDJdID0gdCwgdzIgPSAodSAmICgtMSA8PCBwIF4gLTEpIHwgKGcgPj4+IDggJiAxKSA8PCBwIHwgMSkgKyAyIDw8IHEgfCB1IDw8IDMxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcyID0gMCwgIShFICYgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiA+PiAyXSA9IHcyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyAmIDMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gazEobyArIDE5MiB8IDApLCBwID0gbSArIChnIDw8IDE4ID4+IDMxKSB8IDAsIGVbbyArIDIwOCA+PiAyXSA9IGVbbyArIDIwOCA+PiAyXSAtIHAsIGEgPSBlW28gKyAyMDQgPj4gMl0sIHYgPSBlW28gKyAyMDAgPj4gMl0sIEQgPSBwICYgMzEsIChwICYgNjMpID4+PiAwID49IDMyID8gKHQgPSAwLCB2ID0gYSA+Pj4gRCB8IDApIDogKHQgPSBhID4+PiBEIHwgMCwgdiA9ICgoMSA8PCBEKSAtIDEgJiBhKSA8PCAzMiAtIEQgfCB2ID4+PiBEKSwgZVtvICsgMjAwID4+IDJdID0gdiwgZVtvICsgMjA0ID4+IDJdID0gdCwgdiA9IHUgJiAoLTEgPDwgcCBeIC0xKSB8IChnID4+PiA5ICYgMSkgPDwgcCB8IDEsIGVbKFUgPDwgMikgKyBmID4+IDJdID0gdiArIDIgPDwgcSB8IHUgPDwgMzEsIHUgPSAzMiAtIE8wKHYpIHwgMCwgdiA9IElbbCB8IDBdICYgMTI3LCBGW2wgfCAwXSA9ICh1ID4+PiAwID4gdiA+Pj4gMCA/IHUgOiB2KSB8IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKEUgJiAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVsoVSA8PCAyKSArIGYgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBmICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyAmIDY0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBrMShvICsgMTkyIHwgMCksIEQgPSBtICsgKGcgPDwgMTcgPj4gMzEpIHwgMCwgZVtvICsgMjA4ID4+IDJdID0gZVtvICsgMjA4ID4+IDJdIC0gRCwgYSA9IGVbbyArIDIwNCA+PiAyXSwgdiA9IGVbbyArIDIwMCA+PiAyXSwgSCA9IEQgJiAzMSwgKEQgJiA2MykgPj4+IDAgPj0gMzIgPyAodCA9IDAsIHYgPSBhID4+PiBIIHwgMCkgOiAodCA9IGEgPj4+IEggfCAwLCB2ID0gKCgxIDw8IEgpIC0gMSAmIGEpIDw8IDMyIC0gSCB8IHYgPj4+IEgpLCBlW28gKyAyMDAgPj4gMl0gPSB2LCBlW28gKyAyMDQgPj4gMl0gPSB0LCBhID0gKHUgJiAoLTEgPDwgRCBeIC0xKSB8IChnID4+PiAxMCAmIDEpIDw8IEQgfCAxKSArIDIgPDwgcSB8IHUgPDwgMzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IDAsICEoRSAmIDQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3AgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbbCArIDEgfCAwXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyAmIDEyOCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGsxKG8gKyAxOTIgfCAwKSwgRCA9IG0gKyAoZyA8PCAxNiA+PiAzMSkgfCAwLCBlW28gKyAyMDggPj4gMl0gPSBlW28gKyAyMDggPj4gMl0gLSBELCBhID0gZVtvICsgMjA0ID4+IDJdLCB2ID0gZVtvICsgMjAwID4+IDJdLCBIID0gRCAmIDMxLCAoRCAmIDYzKSA+Pj4gMCA+PSAzMiA/ICh0ID0gMCwgdiA9IGEgPj4+IEggfCAwKSA6ICh0ID0gYSA+Pj4gSCB8IDAsIHYgPSAoKDEgPDwgSCkgLSAxICYgYSkgPDwgMzIgLSBIIHwgdiA+Pj4gSCksIGVbbyArIDIwMCA+PiAyXSA9IHYsIGVbbyArIDIwNCA+PiAyXSA9IHQsIHYgPSB1ICYgKC0xIDw8IEQgXiAtMSkgfCAoZyA+Pj4gMTEgJiAxKSA8PCBEIHwgMSwgZVtwICsgKFUgPDwgMikgPj4gMl0gPSB2ICsgMiA8PCBxIHwgdSA8PCAzMSwgRltsICsgMSB8IDBdID0gLTk2IC0gTzAodik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShFICYgOCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbcCArIChVIDw8IDIpID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZiArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgJiAxNikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gazEobyArIDE5MiB8IDApLCBwID0gYyArIChyIDw8IDE5ID4+IDMxKSB8IDAsIGVbbyArIDIwOCA+PiAyXSA9IGVbbyArIDIwOCA+PiAyXSAtIHAsIGEgPSBlW28gKyAyMDQgPj4gMl0sIHYgPSBlW28gKyAyMDAgPj4gMl0sIEQgPSBwICYgMzEsIChwICYgNjMpID4+PiAwID49IDMyID8gKHQgPSAwLCB2ID0gYSA+Pj4gRCB8IDApIDogKHQgPSBhID4+PiBEIHwgMCwgdiA9ICgoMSA8PCBEKSAtIDEgJiBhKSA8PCAzMiAtIEQgfCB2ID4+PiBEKSwgZVtvICsgMjAwID4+IDJdID0gdiwgZVtvICsgMjA0ID4+IDJdID0gdCwgbSA9ICh1ICYgKC0xIDw8IHAgXiAtMSkgfCAociA+Pj4gOCAmIDEpIDw8IHAgfCAxKSArIDIgPDwgcSB8IHUgPDwgMzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA9IDAsICEoRSAmIDE2KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtnID4+IDJdID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgJiAzMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGsxKG8gKyAxOTIgfCAwKSwgcCA9IGMgKyAociA8PCAxOCA+PiAzMSkgfCAwLCBlW28gKyAyMDggPj4gMl0gPSBlW28gKyAyMDggPj4gMl0gLSBwLCBhID0gZVtvICsgMjA0ID4+IDJdLCB2ID0gZVtvICsgMjAwID4+IDJdLCBEID0gcCAmIDMxLCAocCAmIDYzKSA+Pj4gMCA+PSAzMiA/ICh0ID0gMCwgdiA9IGEgPj4+IEQgfCAwKSA6ICh0ID0gYSA+Pj4gRCB8IDAsIHYgPSAoKDEgPDwgRCkgLSAxICYgYSkgPDwgMzIgLSBEIHwgdiA+Pj4gRCksIGVbbyArIDIwMCA+PiAyXSA9IHYsIGVbbyArIDIwNCA+PiAyXSA9IHQsIHYgPSB1ICYgKC0xIDw8IHAgXiAtMSkgfCAociA+Pj4gOSAmIDEpIDw8IHAgfCAxLCBlW2cgKyAoVSA8PCAyKSA+PiAyXSA9IHYgKyAyIDw8IHEgfCB1IDw8IDMxLCB1ID0gMzIgLSBPMCh2KSB8IDAsIHYgPSBJW2wgKyAxIHwgMF0gJiAxMjcsIEZbbCArIDEgfCAwXSA9ICh1ID4+PiAwID4gdiA+Pj4gMCA/IHUgOiB2KSB8IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKEUgJiAzMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZyArIChVIDw8IDIpID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZiArIDEyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYgNjQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGsxKG8gKyAxOTIgfCAwKSwgcCA9IGMgKyAociA8PCAxNyA+PiAzMSkgfCAwLCBlW28gKyAyMDggPj4gMl0gPSBlW28gKyAyMDggPj4gMl0gLSBwLCBhID0gZVtvICsgMjA0ID4+IDJdLCB2ID0gZVtvICsgMjAwID4+IDJdLCBEID0gcCAmIDMxLCAocCAmIDYzKSA+Pj4gMCA+PSAzMiA/ICh0ID0gMCwgdiA9IGEgPj4+IEQgfCAwKSA6ICh0ID0gYSA+Pj4gRCB8IDAsIHYgPSAoKDEgPDwgRCkgLSAxICYgYSkgPDwgMzIgLSBEIHwgdiA+Pj4gRCksIGVbbyArIDIwMCA+PiAyXSA9IHYsIGVbbyArIDIwNCA+PiAyXSA9IHQsIG0gPSAodSAmICgtMSA8PCBwIF4gLTEpIHwgKHIgPj4+IDEwICYgMSkgPDwgcCB8IDEpICsgMiA8PCBxIHwgdSA8PCAzMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtID0gMCwgIShFICYgNjQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2cgPj4gMl0gPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsICsgMiB8IDAsIEZbbCB8IDBdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYgMTI4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gazEobyArIDE5MiB8IDApLCBwID0gYyArIChyIDw8IDE2ID4+IDMxKSB8IDAsIGVbbyArIDIwOCA+PiAyXSA9IGVbbyArIDIwOCA+PiAyXSAtIHAsIGEgPSBlW28gKyAyMDQgPj4gMl0sIHYgPSBlW28gKyAyMDAgPj4gMl0sIEQgPSBwICYgMzEsIChwICYgNjMpID4+PiAwID49IDMyID8gKHQgPSAwLCB2ID0gYSA+Pj4gRCB8IDApIDogKHQgPSBhID4+PiBEIHwgMCwgdiA9ICgoMSA8PCBEKSAtIDEgJiBhKSA8PCAzMiAtIEQgfCB2ID4+PiBEKSwgZVtvICsgMjAwID4+IDJdID0gdiwgZVtvICsgMjA0ID4+IDJdID0gdCwgdiA9IHUgJiAoLTEgPDwgcCBeIC0xKSB8IChyID4+PiAxMSAmIDEpIDw8IHAgfCAxLCBlW2cgKyAoVSA8PCAyKSA+PiAyXSA9IHYgKyAyIDw8IHEgfCB1IDw8IDMxLCBGW2wgfCAwXSA9IC05NiAtIE8wKHYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEUgPj4+IDAgPCAxMjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZyArIChVIDw8IDIpID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWTIgPSBZMiBeIDE2LCBpID0gKEMgJiA0KSArIGkgfCAwLCBmID0gZiArIDE2IHwgMCwgISgoQiB8IDApIDwgKFUgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQwID0gUzIgJiA4LCBoMCA9IEQyICsgMTU4NCB8IDAsIEMwID0gRDIgKyAxMDU2IHwgMCwgcjAgPSBEMiArIDUyOCB8IDAsICh6MiB8IDApID49IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEgwID0gWihVLCAxMiksIHkgPSBVIDw8IDMsIGUwID0gYzIgLSAxIHwgMCwgaSA9IGMyIC0gMiB8IDAsIFAgPSAzIDw8IGksIEwyID0gMSA8PCBpLCBxID0gKFUgKyA3ID4+PiAxICYgMjE0NzQ4MzY0NCkgKyA0IHwgMCwgYyA9IDI7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQgPSBjLCB3MiA9IElbcyB8IDBdLCBGW3MgfCAwXSA9IDAsIFkyID0gWTIgJiAtMTcgXiAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChVIHwgMCkgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGMgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IEQgJiA0ID8gcjAgOiBEMiwgYyA9IEQgKyAyIHwgMCwgbCA9IGswICsgKFooVSwgRCkgPDwgMikgfCAwLCBIID0gMCwgZiA9IHMsIEMgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUzIgPSBDLCBqID0gdzIgJiAyNTUsIGkgPSBJW2YgKyAxIHwgMF0gPj4+IDUgJiA0IHwgKGogPj4+IDcgfCBIKSwgZyA9IEcyWyhpIDw8IDggfCAoZ2kobyArIDIyNCB8IDApICYgMTI3KSA8PCAxKSArIDMzODQwID4+IDFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IG4gLSAyIHwgMCwgZyA9IChpIHwgMCkgPT0gLTEgPyBnIDogMCwgKG4gfCAwKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBHZShvICsgMjU2IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodiA9IGVbbyArIDIzNiA+PiAyXSwgciA9IGVbbyArIDIzMiA+PiAyXSwgaSA9IGVbbyArIDI0MCA+PiAyXSwgYSA9IGVbdyA+PiAyXSB8IChnID4+PiA0ICYgMyB8IGcgPj4+IDIgJiA0OCkgPDwgWTIsIGVbdyA+PiAyXSA9IGEsIEUgPSBnICYgNjQsIG0gPSBnICYgMTI4LCBIID0gRSA+Pj4gNSB8IG0gPj4+IDYsIHUgPSBpLCBpID0gZyAmIDcsIEogPSB1IC0gaSB8IDAsIHUgPSAoKDEgPDwgaSkgLSAxICYgdikgPDwgMzIgLSBpIHwgciA+Pj4gaSwgdiA9IHYgPj4+IGkgfCAwLCBDID0gdSwgciA9IDAsIChVIHwgMCkgPiAoUzIgfCAyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gSVtmICsgMiB8IDBdID4+PiA1ICYgNCB8IElbZiArIDEgfCAwXSA+Pj4gNyB8IEgsIHIgPSBHMlsoaSA8PCA4IHwgKHUgJiAxMjcpIDw8IDEpICsgMzM4NDAgPj4gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBuIC0gMiB8IDAsIHIgPSAoaSB8IDApID09IC0xID8gciA6IDAsIChuIHwgMCkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBHZShvICsgMjU2IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHIgJiA3LCBKID0gSiAtIGkgfCAwLCBIID0gKHIgPj4+IDUgfCByID4+PiA2KSAmIDIsIHUgPSAoKDEgPDwgaSkgLSAxICYgdikgPDwgMzIgLSBpIHwgdSA+Pj4gaSwgQyA9IHUsIHYgPSB2ID4+PiBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdyA+PiAyXSA9IGEgfCAociA8PCAyICYgNzY4IHwgciAmIDQ4KSA8PCBZMiArIDQsIGEgPSAxLCBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKEIgPSByID4+PiAyICYgMiB8IGcgPj4+IDMgJiAxLCBCIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gSVsoQyAmIDcpICsgMzU5NDAgfCAwXSwgcCA9IGkgPj4+IDIgJiA3LCBhID0gQywgQyA9IGkgJiAzLCB0ID0gKCgoLTEgPDwgcCBeIC0xKSAmIGEgPj4+IEMpICsgKGkgPj4+IDUgfCAwKSB8IDApICsgMSB8IDAsIGkgPSAoQiB8IDApID09IDEsIGEgPSBpID8gMSA6IHQsIGkgPSBpID8gdCA6IDEsIEIgPSBDICsgcCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gSVsoQyAmIDcpICsgMzU5NDAgfCAwXSwgYSA9IHggJiAzLCBpID0gQyA+Pj4gYSB8IDAsIG4yID0gSVsoaSAmIDcpICsgMzU5NDAgfCAwXSwgcCA9IG4yICYgMywgdCA9IG4yID4+PiAyICYgNywgQyA9IHggPj4+IDIgJiA3LCBCID0gdCArIChDICsgKGEgKyBwIHwgMCkgfCAwKSB8IDAsIGEgPSBpID4+PiBwIHwgMCwgaSA9ICgoYSAmICgtMSA8PCBDIF4gLTEpKSArICh4ID4+PiA1IHwgMCkgfCAwKSArIDEgfCAwLCBhID0gKCgoLTEgPDwgdCBeIC0xKSAmIGEgPj4+IEMpICsgKG4yID4+PiA1IHwgMCkgfCAwKSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbyArIDI0MCA+PiAyXSA9IEogLSBCLCB0ID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IChwID0gMCwgdiA9IHYgPj4+IHQgfCAwKSA6IChwID0gdiA+Pj4gdCB8IDAsIHYgPSAoKDEgPDwgdCkgLSAxICYgdikgPDwgMzIgLSB0IHwgdSA+Pj4gdCksIGVbbyArIDIzMiA+PiAyXSA9IHYsIGVbbyArIDIzNiA+PiAyXSA9IHAsIEMgPSBnICYgMjQwLCBDIC0gMSAmIEMgJiYgKHUgPSBpLCB2ID0gaiAmIDEyNywgaSA9IElbZiArIDEgfCAwXSAmIDEyNywgdiA9IGkgPj4+IDAgPCB2ID4+PiAwID8gdiA6IGksIGkgPSB2IC0gMiB8IDAsIGkgPSB1ICsgKGkgPj4+IDAgPD0gdiA+Pj4gMCA/IGkgOiAwKSB8IDApLCB0ID0gciAmIDI0MCwgdCAtIDEgJiB0ICYmICh1ID0gSVtmICsgMSB8IDBdICYgMTI3LCB2ID0gSVtmICsgMiB8IDBdICYgMTI3LCB2ID0gdSA+Pj4gMCA+IHYgPj4+IDAgPyB1IDogdiwgYSA9ICh2ID4+PiAwID4gMiA/IHYgLSAyIHwgMCA6IDApICsgYSB8IDApLCAhKGkgPj4+IDAgPD0gcDIgPj4+IDAgJiBhID4+PiAwIDw9IHAyID4+PiAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMCwgUShmMiwgMSwgMjgyMDYsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAsIFEoZjIsIDEsIDI4MjA2LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3MiA9IElbZiArIDIgfCAwXSwgRltmICsgMSB8IDBdID0gMCwgRltmICsgMiB8IDBdID0gMCwgdSA9IHQgfCBDID4+PiA0LCBDID0gUzIgKyA0IHwgMCwgdiA9IChDIHwgMCkgPD0gKFUgfCAwKSA/IDI1NSA6IDI1NSA+Pj4gKEMgLSBVIDw8IDEpIHwgMCwgbjIgPSAoYyB8IDApID4gKHoyIHwgMCkgPyB2ICYgODUgOiB2LCB1ICYgKG4yIF4gLTEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwLCBRKGYyLCAxLCAyMzMzMSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMCwgUShmMiwgMSwgMjMzMzEsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgJiAxNikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGsxKG8gKyAxOTIgfCAwKSwgQiA9IChnIDw8IDE5ID4+IDMxKSArIGkgfCAwLCBlW28gKyAyMDggPj4gMl0gPSBlW28gKyAyMDggPj4gMl0gLSBCLCB0ID0gZVtvICsgMjA0ID4+IDJdLCB2ID0gZVtvICsgMjAwID4+IDJdLCBqID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IChwID0gMCwgdiA9IHQgPj4+IGogfCAwKSA6IChwID0gdCA+Pj4gaiB8IDAsIHYgPSAoKDEgPDwgaikgLSAxICYgdCkgPDwgMzIgLSBqIHwgdiA+Pj4gaiksIGVbbyArIDIwMCA+PiAyXSA9IHYsIGVbbyArIDIwNCA+PiAyXSA9IHAsIEogPSAodSAmICgtMSA8PCBCIF4gLTEpIHwgKGcgPj4+IDggJiAxKSA8PCBCIHwgMSkgKyAyIDw8IGUwIHwgdSA8PCAzMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKID0gMCwgIShuMiAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2wgPj4gMl0gPSBKOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyAmIDMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGsxKG8gKyAxOTIgfCAwKSwgQiA9IChnIDw8IDE4ID4+IDMxKSArIGkgfCAwLCBlW28gKyAyMDggPj4gMl0gPSBlW28gKyAyMDggPj4gMl0gLSBCLCB0ID0gZVtvICsgMjA0ID4+IDJdLCB2ID0gZVtvICsgMjAwID4+IDJdLCBqID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IChwID0gMCwgdiA9IHQgPj4+IGogfCAwKSA6IChwID0gdCA+Pj4gaiB8IDAsIHYgPSAoKDEgPDwgaikgLSAxICYgdCkgPDwgMzIgLSBqIHwgdiA+Pj4gaiksIGVbbyArIDIwMCA+PiAyXSA9IHYsIGVbbyArIDIwNCA+PiAyXSA9IHAsIHYgPSB1ICYgKC0xIDw8IEIgXiAtMSkgfCAoZyA+Pj4gOSAmIDEpIDw8IEIgfCAxLCBlWyhVIDw8IDIpICsgbCA+PiAyXSA9IHYgKyAyIDw8IGUwIHwgdSA8PCAzMSwgdSA9IDMyIC0gTzAodikgfCAwLCB2ID0gSVtmIHwgMF0gJiAxMjcsIEZbZiB8IDBdID0gKHUgPj4+IDAgPiB2ID4+PiAwID8gdSA6IHYpIHwgMTI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobjIgJiAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlWyhVIDw8IDIpICsgbCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0gbCArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBrMShvICsgMTkyIHwgMCksIEUgPSAoZyA8PCAxNyA+PiAzMSkgKyBpIHwgMCwgZVtvICsgMjA4ID4+IDJdID0gZVtvICsgMjA4ID4+IDJdIC0gRSwgdCA9IGVbbyArIDIwNCA+PiAyXSwgdiA9IGVbbyArIDIwMCA+PiAyXSwgaiA9IEUgJiAzMSwgKEUgJiA2MykgPj4+IDAgPj0gMzIgPyAocCA9IDAsIHYgPSB0ID4+PiBqIHwgMCkgOiAocCA9IHQgPj4+IGogfCAwLCB2ID0gKCgxIDw8IGopIC0gMSAmIHQpIDw8IDMyIC0gaiB8IHYgPj4+IGopLCBlW28gKyAyMDAgPj4gMl0gPSB2LCBlW28gKyAyMDQgPj4gMl0gPSBwLCBnMiA9ICh1ICYgKC0xIDw8IEUgXiAtMSkgfCAoZyA+Pj4gMTAgJiAxKSA8PCBFIHwgMSkgKyAyIDw8IGUwIHwgdSA8PCAzMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnMiA9IDAsICEobjIgJiA0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtCID4+IDJdID0gZzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGsxKG8gKyAxOTIgfCAwKSwgdCA9IChnIDw8IDE2ID4+IDMxKSArIGkgfCAwLCBlW28gKyAyMDggPj4gMl0gPSBlW28gKyAyMDggPj4gMl0gLSB0LCB1ID0gZVtvICsgMjA0ID4+IDJdLCBpID0gZVtvICsgMjAwID4+IDJdLCBtID0gdCAmIDMxLCAodCAmIDYzKSA+Pj4gMCA+PSAzMiA/IChwID0gMCwgaSA9IHUgPj4+IG0gfCAwKSA6IChwID0gdSA+Pj4gbSB8IDAsIGkgPSAoKDEgPDwgbSkgLSAxICYgdSkgPDwgMzIgLSBtIHwgaSA+Pj4gbSksIGVbbyArIDIwMCA+PiAyXSA9IGksIGVbbyArIDIwNCA+PiAyXSA9IHAsIGkgPSB2ICYgKC0xIDw8IHQgXiAtMSkgfCAoZyA+Pj4gMTEgJiAxKSA8PCB0IHwgMSwgZVtCICsgKFUgPDwgMikgPj4gMl0gPSBpICsgMiA8PCBlMCB8IHYgPDwgMzEsIEZbZiArIDEgfCAwXSA9IC05NiAtIE8wKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobjIgJiA4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0IgKyAoVSA8PCAyKSA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbCArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgJiAxNikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGsxKG8gKyAxOTIgfCAwKSwgZyA9IChyIDw8IDE5ID4+IDMxKSArIGEgfCAwLCBlW28gKyAyMDggPj4gMl0gPSBlW28gKyAyMDggPj4gMl0gLSBnLCB1ID0gZVtvICsgMjA0ID4+IDJdLCBpID0gZVtvICsgMjAwID4+IDJdLCBtID0gZyAmIDMxLCAoZyAmIDYzKSA+Pj4gMCA+PSAzMiA/IChwID0gMCwgaSA9IHUgPj4+IG0gfCAwKSA6IChwID0gdSA+Pj4gbSB8IDAsIGkgPSAoKDEgPDwgbSkgLSAxICYgdSkgPDwgMzIgLSBtIHwgaSA+Pj4gbSksIGVbbyArIDIwMCA+PiAyXSA9IGksIGVbbyArIDIwNCA+PiAyXSA9IHAsIGkgPSAodiAmICgtMSA8PCBnIF4gLTEpIHwgKHIgPj4+IDggJiAxKSA8PCBnIHwgMSkgKyAyIDw8IGUwIHwgdiA8PCAzMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gMCwgIShuMiAmIDE2KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgJiAzMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBrMShvICsgMTkyIHwgMCksIGcgPSAociA8PCAxOCA+PiAzMSkgKyBhIHwgMCwgZVtvICsgMjA4ID4+IDJdID0gZVtvICsgMjA4ID4+IDJdIC0gZywgdSA9IGVbbyArIDIwNCA+PiAyXSwgaSA9IGVbbyArIDIwMCA+PiAyXSwgbSA9IGcgJiAzMSwgKGcgJiA2MykgPj4+IDAgPj0gMzIgPyAocCA9IDAsIGkgPSB1ID4+PiBtIHwgMCkgOiAocCA9IHUgPj4+IG0gfCAwLCBpID0gKCgxIDw8IG0pIC0gMSAmIHUpIDw8IDMyIC0gbSB8IGkgPj4+IG0pLCBlW28gKyAyMDAgPj4gMl0gPSBpLCBlW28gKyAyMDQgPj4gMl0gPSBwLCBpID0gdiAmICgtMSA8PCBnIF4gLTEpIHwgKHIgPj4+IDkgJiAxKSA8PCBnIHwgMSwgZVt0ICsgKFUgPDwgMikgPj4gMl0gPSBpICsgMiA8PCBlMCB8IHYgPDwgMzEsIHYgPSAzMiAtIE8wKGkpIHwgMCwgaSA9IElbZiArIDEgfCAwXSAmIDEyNywgRltmICsgMSB8IDBdID0gKGkgPj4+IDAgPCB2ID4+PiAwID8gdiA6IGkpIHwgMTI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobjIgJiAzMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0ICsgKFUgPDwgMikgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGwgKyAxMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociAmIDY0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gazEobyArIDE5MiB8IDApLCBnID0gKHIgPDwgMTcgPj4gMzEpICsgYSB8IDAsIGVbbyArIDIwOCA+PiAyXSA9IGVbbyArIDIwOCA+PiAyXSAtIGcsIHUgPSBlW28gKyAyMDQgPj4gMl0sIGkgPSBlW28gKyAyMDAgPj4gMl0sIG0gPSBnICYgMzEsIChnICYgNjMpID4+PiAwID49IDMyID8gKHAgPSAwLCBpID0gdSA+Pj4gbSB8IDApIDogKHAgPSB1ID4+PiBtIHwgMCwgaSA9ICgoMSA8PCBtKSAtIDEgJiB1KSA8PCAzMiAtIG0gfCBpID4+PiBtKSwgZVtvICsgMjAwID4+IDJdID0gaSwgZVtvICsgMjA0ID4+IDJdID0gcCwgaSA9ICh2ICYgKC0xIDw8IGcgXiAtMSkgfCAociA+Pj4gMTAgJiAxKSA8PCBnIHwgMSkgKyAyIDw8IGUwIHwgdiA8PCAzMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gMCwgIShuMiAmIDY0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYgMTI4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGsxKG8gKyAxOTIgfCAwKSwgYSA9IChyIDw8IDE2ID4+IDMxKSArIGEgfCAwLCBlW28gKyAyMDggPj4gMl0gPSBlW28gKyAyMDggPj4gMl0gLSBhLCB1ID0gZVtvICsgMjA0ID4+IDJdLCBpID0gZVtvICsgMjAwID4+IDJdLCBnID0gYSAmIDMxLCAoYSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChwID0gMCwgaSA9IHUgPj4+IGcgfCAwKSA6IChwID0gdSA+Pj4gZyB8IDAsIGkgPSAoKDEgPDwgZykgLSAxICYgdSkgPDwgMzIgLSBnIHwgaSA+Pj4gZyksIGVbbyArIDIwMCA+PiAyXSA9IGksIGVbbyArIDIwNCA+PiAyXSA9IHAsIGkgPSB2ICYgKC0xIDw8IGEgXiAtMSkgfCAociA+Pj4gMTEgJiAxKSA8PCBhIHwgMSwgZVt0ICsgKFUgPDwgMikgPj4gMl0gPSBpICsgMiA8PCBlMCB8IHYgPDwgMzEsIEZbZiB8IDBdID0gLTk2IC0gTzAoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobjIgPj4+IDAgPCAxMjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0ICsgKFUgPDwgMikgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFkyID0gWTIgXiAxNiwgdyA9IChTMiAmIDQpICsgdyB8IDAsIGwgPSBsICsgMTYgfCAwLCAhKChDIHwgMCkgPCAoVSB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShEICYgMikgfCBQMiA+Pj4gMCA8IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBjICYgNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtID0gdyA/IEQyIDogcjAsIEIgPSAwLCAoVSB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodiA9IGswICsgKFooVSwgRCAtIDIgfCAwKSA8PCAyKSB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGdpKG8gKyAxMjggfCAwKSwgZyA9IDAsIGwgPSBlW20gPj4gMl0sIGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gdiArIChCIDw8IDIpIHwgMCwgYSA9IDAsIGYgPSAxNTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShmICYgbCkgfHwgKHUgPSBmICYgMjg2MzMxMTUzLCB1ICYgbCAmJiAoZVtnID4+IDJdID0gTDIgfCBlW2cgPj4gMl0gXiAoKHIgXiAtMSkgJiAxKSA8PCBlMCwgciA9IHIgPj4+IDEgfCAwKSwgbCAmIHUgPDwgMSAmJiAoaSA9IChVIDw8IDIpICsgZyB8IDAsIGVbaSA+PiAyXSA9IEwyIHwgZVtpID4+IDJdIF4gKChyIF4gLTEpICYgMSkgPDwgZTAsIHIgPSByID4+PiAxIHwgMCksIGwgJiB1IDw8IDIgJiYgKGkgPSBnICsgeSB8IDAsIGVbaSA+PiAyXSA9IEwyIHwgZVtpID4+IDJdIF4gKChyIF4gLTEpICYgMSkgPDwgZTAsIHIgPSByID4+PiAxIHwgMCksICEobCAmIHUgPDwgMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGcgKyBIMCB8IDAsIGVbaSA+PiAyXSA9IEwyIHwgZVtpID4+IDJdIF4gKChyIF4gLTEpICYgMSkgPDwgZTAsIHIgPSByID4+PiAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBnICsgNCB8IDAsIGYgPSBmIDw8IDQsIGEgPSBhICsgMSB8IDAsIChhIHwgMCkgPT0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB0ZihsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtID0gbSArIDQgfCAwLCBlW28gKyAxNDQgPj4gMl0gPSBlW28gKyAxNDQgPj4gMl0gLSBnLCBmID0gZVtvICsgMTQwID4+IDJdLCBpID0gZVtvICsgMTM2ID4+IDJdLCByID0gZyAmIDMxLCAoZyAmIDYzKSA+Pj4gMCA+PSAzMiA/IChwID0gMCwgaSA9IGYgPj4+IHIgfCAwKSA6IChwID0gZiA+Pj4gciB8IDAsIGkgPSAoKDEgPDwgcikgLSAxICYgZikgPDwgMzIgLSByIHwgaSA+Pj4gciksIGVbbyArIDEzNiA+PiAyXSA9IGksIGVbbyArIDE0MCA+PiAyXSA9IHAsIEIgPSBCICsgOCB8IDAsICEoKFUgfCAwKSA+IChCIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSAhdywgaSA9IDAsIHIgPSAwLCBnMiA9IHcgPyBDMCA6IGgwLCBnID0gZzIsIG0gPSB3ID8gRDIgOiByMCwgZiA9IG0sIChVIHwgMCkgPD0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdiA9IHIgPj4+IDI4IHwgMCwgciA9IGVbZiA+PiAyXSwgdiA9IHIgfCAodiB8IHIgPDwgNCB8IHIgPj4+IDQpLCBlW2cgPj4gMl0gPSB2LCB2ID0gdiB8IGVbZiArIDQgPj4gMl0gPDwgMjgsIGVbZyA+PiAyXSA9ICh2ID4+PiAxICYgMjAwNDMxODA3MSB8IHYgPDwgMSAmIC0yODYzMzExNTQgfCB2KSAmIChyIF4gLTEpLCBnID0gZyArIDQgfCAwLCBmID0gZiArIDQgfCAwLCBpID0gaSArIDggfCAwLCAoVSB8IDApID4gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSAhdywgZzIgPSB3ID8gQzAgOiBoMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEQgPj4+IDAgPCA2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IDAsIHcgPSAwLCBnID0gbSwgSiA9IEIgPyBDMCA6IGgwLCByID0gSiwgdSA9IEIgPyBEMiA6IHIwLCBmID0gdSwgKFUgfCAwKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB2ID0gZyArIDQgfCAwLCBpID0gZVtyID4+IDJdLCBsID0gZVtnID4+IDJdLCB0MCB8fCAoaSA9IGkgfCAobCB8IChsIDw8IDQgfCB3ID4+PiAyOCB8IGwgPj4+IDQgfCBlW3YgPj4gMl0gPDwgMjgpKSA8PCAzICYgLTIwMDQzMTgwNzIpLCBlW3IgPj4gMl0gPSAoZVtmID4+IDJdIF4gLTEpICYgaSwgZiA9IGYgKyA0IHwgMCwgciA9IHIgKyA0IHwgMCwgdyA9IGwsIGcgPSB2LCBhID0gYSArIDggfCAwLCAoVSB8IDApID4gKGEgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEUgPSBrMCArIChaKFUsIEQgLSA2IHwgMCkgPDwgMikgfCAwLCB3MiA9IDAsIHcgPSB1OyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IDAsIGYgPSBlW0ogPj4gMl0sIGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEQgPSB3MiB8IDQsIFMyID0gVSAtIHcyIHwgMCwgciA9IDAsIEggPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHIsIHIgPSBrMShvICsgMTYwIHwgMCksIGogPSAoVSB8IDApID4gKEggKyBEIHwgMCkgPyBIICsgNCB8IDAgOiBTMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPD0gKEggfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh4ID0gZVt3ID4+IDJdIF4gLTEsIEIgPSAoKEggfCB3MikgPDwgMikgKyBFIHwgMCwgZyA9IDAsIGEgPSBILCBwID0gYSA8PCAyLCBDID0gMTUgPDwgcCwgaSA9IEM7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmIGYpIHx8IChuMiA9IGkgJiAyODYzMzExNTMsIG4yICYgZiAmJiAociAmIDEgJiYgKGwgPSBsIHwgbjIsIGYgPSB4ICYgNTAgPDwgKGEgPDwgMikgfCBmKSwgZyA9IGcgKyAxIHwgMCwgciA9IHIgPj4+IDEgfCAwKSwgdCA9IG4yIDw8IDEsIHQgJiBmICYmIChyICYgMSAmJiAobCA9IHQgfCBsLCBmID0geCAmIDExNiA8PCAoYSA8PCAyKSB8IGYpLCBnID0gZyArIDEgfCAwLCByID0gciA+Pj4gMSB8IDApLCB0ID0gbjIgPDwgMiwgdCAmIGYgJiYgKHIgJiAxICYmIChsID0gdCB8IGwsIGYgPSB4ICYgMjMyIDw8IChhIDw8IDIpIHwgZiksIGcgPSBnICsgMSB8IDAsIHIgPSByID4+PiAxIHwgMCksIHQgPSBuMiA8PCAzLCAhKHQgJiBmKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByICYgMSAmJiAobCA9IHQgfCBsLCBmID0geCAmIDE5MiA8PCAoYSA8PCAyKSB8IGYpLCBnID0gZyArIDEgfCAwLCByID0gciA+Pj4gMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSA8PCA0LCBhID0gYSArIDEgfCAwLCAhKChqIHwgMCkgPiAoYSB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGwgPj4+IHAgJiA2NTUzNSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobCAmIEMpIHx8IChhID0gQyAmIDI4NjMzMTE1MywgYSAmIGwgJiYgKGVbQiA+PiAyXSA9IFAgfCAoZVtCID4+IDJdIHwgciA8PCAzMSksIGcgPSBnICsgMSB8IDAsIHIgPSByID4+PiAxIHwgMCksIGEgPDwgMSAmIGwgJiYgKGkgPSAoVSA8PCAyKSArIEIgfCAwLCBlW2kgPj4gMl0gPSBQIHwgKGVbaSA+PiAyXSB8IHIgPDwgMzEpLCBnID0gZyArIDEgfCAwLCByID0gciA+Pj4gMSB8IDApLCBhIDw8IDIgJiBsICYmIChpID0gQiArIHkgfCAwLCBlW2kgPj4gMl0gPSBQIHwgKGVbaSA+PiAyXSB8IHIgPDwgMzEpLCBnID0gZyArIDEgfCAwLCByID0gciA+Pj4gMSB8IDApLCAhKGEgPDwgMyAmIGwpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBCICsgSDAgfCAwLCBlW2kgPj4gMl0gPSBQIHwgKGVbaSA+PiAyXSB8IHIgPDwgMzEpLCBnID0gZyArIDEgfCAwLCByID0gciA+Pj4gMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDID0gQyA8PCA0LCBCID0gQiArIDQgfCAwLCBIID0gSCArIDEgfCAwLCAhKChqIHwgMCkgPiAoSCB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtvICsgMTc2ID4+IDJdID0gZVtvICsgMTc2ID4+IDJdIC0gZywgciA9IGVbbyArIDE3MiA+PiAyXSwgaSA9IGVbbyArIDE2OCA+PiAyXSwgYSA9IGcgJiAzMSwgKGcgJiA2MykgPj4+IDAgPj0gMzIgPyAocCA9IDAsIGkgPSByID4+PiBhIHwgMCkgOiAocCA9IHIgPj4+IGEgfCAwLCBpID0gKCgxIDw8IGEpIC0gMSAmIHIpIDw8IDMyIC0gYSB8IGkgPj4+IGEpLCBlW28gKyAxNjggPj4gMl0gPSBpLCBlW28gKyAxNzIgPj4gMl0gPSBwLCByID0gMSwgSCA9IDQsICEhKHYgJiAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbSiArIDQgPj4gMl0gPSBlW0ogKyA0ID4+IDJdIHwgKGwgPj4+IDI3ICYgMTQgfCBsID4+PiAyOSB8IGwgPj4+IDI4KSAmIChlW3cgKyA0ID4+IDJdIF4gLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID0gZVt3ID4+IDJdIHwgbCwgciA9IHYgPj4+IDMgJiAyODYzMzExNTMsIGYgPSByID4+PiA0IHwgciA8PCA0IHwgciwgdzIgJiYgKGkgPSBnMiAtIDQgfCAwLCBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gfCAoZVttIC0gNCA+PiAyXSBeIC0xKSAmIHIgPDwgMjgpLCBlW2cyID4+IDJdID0gZVtnMiA+PiAyXSB8IGYgJiAoZVttID4+IDJdIF4gLTEpLCBlW2cyICsgNCA+PiAyXSA9IGVbZzIgKyA0ID4+IDJdIHwgKGVbbSArIDQgPj4gMl0gXiAtMSkgJiB2ID4+PiAzMSwgSiA9IEogKyA0IHwgMCwgdyA9IHcgKyA0IHwgMCwgZzIgPSBnMiArIDQgfCAwLCBtID0gbSArIDQgfCAwLCB3MiA9IHcyICsgOCB8IDAsICEoKFUgfCAwKSA+ICh3MiB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDIodSwgMCwgcSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKGMgfCAwKSA8ICh6MiB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUDIgPj4+IDAgPCAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9ICh6MiAmIDMpIC0gMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtMiAmIGwgPj4+IDAgPCAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChVIHwgMCkgPD0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gMSA8PCBjMiAtIDIsIHUgPSBrMCArIChaKFUsIHoyICYgMTY3NzcyMTIpIDw8IDIpIHwgMCwgbjIgPSB6MiAmIDQgPyByMCA6IEQyLCB2ID0gWihVLCAxMiksIG4gPSBVIDw8IDMsIHQgPSBjMiAtIDEgfCAwLCBIID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZ2kobyArIDEyOCB8IDApLCBnID0gMCwgcyA9IGVbbjIgPj4gMl0sIHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gdSArIChIIDw8IDIpIHwgMCwgZiA9IDE1LCBhID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShmICYgcykgfHwgKHcgPSBmICYgMjg2MzMxMTUzLCB3ICYgcyAmJiAoZVtnID4+IDJdID0gQyB8IGVbZyA+PiAyXSBeICgociBeIC0xKSAmIDEpIDw8IHQsIHIgPSByID4+PiAxIHwgMCksIHMgJiB3IDw8IDEgJiYgKGkgPSAoVSA8PCAyKSArIGcgfCAwLCBlW2kgPj4gMl0gPSBDIHwgZVtpID4+IDJdIF4gKChyIF4gLTEpICYgMSkgPDwgdCwgciA9IHIgPj4+IDEgfCAwKSwgcyAmIHcgPDwgMiAmJiAoaSA9IG4gKyBnIHwgMCwgZVtpID4+IDJdID0gQyB8IGVbaSA+PiAyXSBeICgociBeIC0xKSAmIDEpIDw8IHQsIHIgPSByID4+PiAxIHwgMCksICEocyAmIHcgPDwgMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGcgKyB2IHwgMCwgZVtpID4+IDJdID0gQyB8IGVbaSA+PiAyXSBeICgociBeIC0xKSAmIDEpIDw8IHQsIHIgPSByID4+PiAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBnICsgNCB8IDAsIGYgPSBmIDw8IDQsIGEgPSBhICsgMSB8IDAsIChhIHwgMCkgPT0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB0ZihzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuMiA9IG4yICsgNCB8IDAsIGVbbyArIDE0NCA+PiAyXSA9IGVbbyArIDE0NCA+PiAyXSAtIGcsIGYgPSBlW28gKyAxNDAgPj4gMl0sIGkgPSBlW28gKyAxMzYgPj4gMl0sIHIgPSBnICYgMzEsIChnICYgNjMpID4+PiAwID49IDMyID8gKHAgPSAwLCBpID0gZiA+Pj4gciB8IDApIDogKHAgPSBmID4+PiByIHwgMCwgaSA9ICgoMSA8PCByKSAtIDEgJiBmKSA8PCAzMiAtIHIgfCBpID4+PiByKSwgZVtvICsgMTM2ID4+IDJdID0gaSwgZVtvICsgMTQwID4+IDJdID0gcCwgSCA9IEggKyA4IHwgMCwgISgoVSB8IDApID4gKEggfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKFUgfCAwKSA8PSAwIHwgbCA+Pj4gMCA+IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gejIgJiA0LCBnID0gaSA/IHIwIDogRDIsIGYgPSBpID8gaDAgOiBDMCwgaSA9IDAsIHIgPSAwOyBuID0gciA+Pj4gMjggfCAwLCByID0gZVtnID4+IDJdLCBuID0gciB8IChuIHwgciA8PCA0IHwgciA+Pj4gNCksIGVbZiA+PiAyXSA9IG4sIG4gPSBuIHwgZVtnICsgNCA+PiAyXSA8PCAyOCwgZVtmID4+IDJdID0gKG4gPj4+IDEgJiAyMDA0MzE4MDcxIHwgbiA8PCAxICYgLTI4NjMzMTE1NCB8IG4pICYgKHIgXiAtMSksIGYgPSBmICsgNCB8IDAsIGcgPSBnICsgNCB8IDAsIGkgPSBpICsgOCB8IDAsIChVIHwgMCkgPiAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSAoejIgfCAwKSA+IDYgPyAoejIgLSAoejIgKyAxICYgMykgfCAwKSAtIDMgfCAwIDogMCwgKHoyIHwgMCkgPD0gKHcgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoSCA9IFooVSwgMTIpLCBjID0gVSA8PCAzLCBxID0gMyA8PCBjMiAtIDIsIG0gPSAoVSB8IDApIDw9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB6MiAtIHcgfCAwLCBpID0gZiAtIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPj0gMykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQyA9IC0xLCAoZiB8IDApIDwgNSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IHcgJiA0LCBnID0gaSA/IHIwIDogRDIsIHIgPSBpID8gaDAgOiBDMCwgZiA9IDAsICF0MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGkgPyBEMiA6IHIwLCBpID0gMCwgbCA9IDA7IG4gPSBsID4+PiAyOCB8IDAsIGwgPSBlW2YgPj4gMl0sIGVbciA+PiAyXSA9IChlW3IgPj4gMl0gfCAobCB8IChuIHwgbCA8PCA0IHwgbCA+Pj4gNCB8IGVbZiArIDQgPj4gMl0gPDwgMjgpKSA8PCAzICYgLTIwMDQzMTgwNzIpICYgKGVbZyA+PiAyXSBeIC0xKSwgZyA9IGcgKyA0IHwgMCwgciA9IHIgKyA0IHwgMCwgZiA9IGYgKyA0IHwgMCwgaSA9IGkgKyA4IHwgMCwgKFUgfCAwKSA+IChpIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW3IgPj4gMl0gPSBlW3IgPj4gMl0gJiAoZVtnID4+IDJdIF4gLTEpLCBnID0gZyArIDQgfCAwLCByID0gciArIDQgfCAwLCBmID0gZiArIDggfCAwLCAoVSB8IDApID4gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgPSBlWyhpIDw8IDIpICsgMzU5NDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSB3ICYgNCwgWTIgPSBpID8gcjAgOiBEMiwgdzIgPSBpID8gaDAgOiBDMCwgbiA9IGkgPyBEMiA6IHIwLCBQMiA9IGkgPyBDMCA6IGgwLCBEID0gazAgKyAoWih3LCBVKSA8PCAyKSB8IDAsIHggPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSAwLCBmID0gZVt3MiA+PiAyXSAmIEMsIGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChtMiA9IHggfCA0LCBTMiA9IFUgLSB4IHwgMCwgciA9IDAsIHQgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSByLCByID0gazEobyArIDE2MCB8IDApLCBwID0gKFUgfCAwKSA+ICh0ICsgbTIgfCAwKSA/IHQgKyA0IHwgMCA6IFMyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocCB8IDApIDw9ICh0IHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAoZVtZMiA+PiAyXSBeIC0xKSAmIEMsIEIgPSBEICsgKCh0IHwgeCkgPDwgMikgfCAwLCBnID0gMCwgYSA9IHQsIHMgPSB0IDw8IDIsIG4yID0gMTUgPDwgcywgaSA9IG4yOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmIGYpIHx8IChFID0gaSAmIDI4NjMzMTE1MywgRSAmIGYgJiYgKHIgJiAxICYmIChsID0gbCB8IEUsIGYgPSBqICYgNTAgPDwgKGEgPDwgMikgfCBmKSwgZyA9IGcgKyAxIHwgMCwgciA9IHIgPj4+IDEgfCAwKSwgdSA9IEUgPDwgMSwgdSAmIGYgJiYgKHIgJiAxICYmIChsID0gbCB8IHUsIGYgPSBqICYgMTE2IDw8IChhIDw8IDIpIHwgZiksIGcgPSBnICsgMSB8IDAsIHIgPSByID4+PiAxIHwgMCksIHUgPSBFIDw8IDIsIHUgJiBmICYmIChyICYgMSAmJiAobCA9IGwgfCB1LCBmID0gaiAmIDIzMiA8PCAoYSA8PCAyKSB8IGYpLCBnID0gZyArIDEgfCAwLCByID0gciA+Pj4gMSB8IDApLCB1ID0gRSA8PCAzLCAhKHUgJiBmKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgJiAxICYmIChsID0gbCB8IHUsIGYgPSBqICYgMTkyIDw8IChhIDw8IDIpIHwgZiksIGcgPSBnICsgMSB8IDAsIHIgPSByID4+PiAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgPDwgNCwgYSA9IGEgKyAxIHwgMCwgISgocCB8IDApID4gKGEgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShsID4+PiBzICYgNjU1MzUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShsICYgbjIpIHx8ICh1ID0gbjIgJiAyODYzMzExNTMsIHUgJiBsICYmIChlW0IgPj4gMl0gPSBxIHwgKGVbQiA+PiAyXSB8IHIgPDwgMzEpLCBnID0gZyArIDEgfCAwLCByID0gciA+Pj4gMSB8IDApLCB1IDw8IDEgJiBsICYmIChpID0gKFUgPDwgMikgKyBCIHwgMCwgZVtpID4+IDJdID0gcSB8IChlW2kgPj4gMl0gfCByIDw8IDMxKSwgZyA9IGcgKyAxIHwgMCwgciA9IHIgPj4+IDEgfCAwKSwgdSA8PCAyICYgbCAmJiAoaSA9IEIgKyBjIHwgMCwgZVtpID4+IDJdID0gcSB8IChlW2kgPj4gMl0gfCByIDw8IDMxKSwgZyA9IGcgKyAxIHwgMCwgciA9IHIgPj4+IDEgfCAwKSwgISh1IDw8IDMgJiBsKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBCICsgSCB8IDAsIGVbaSA+PiAyXSA9IHEgfCAoZVtpID4+IDJdIHwgciA8PCAzMSksIGcgPSBnICsgMSB8IDAsIHIgPSByID4+PiAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobjIgPSBuMiA8PCA0LCBCID0gQiArIDQgfCAwLCB0ID0gdCArIDEgfCAwLCAhKChwIHwgMCkgPiAodCB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbyArIDE3NiA+PiAyXSA9IGVbbyArIDE3NiA+PiAyXSAtIGcsIHIgPSBlW28gKyAxNzIgPj4gMl0sIGkgPSBlW28gKyAxNjggPj4gMl0sIHUgPSBnICYgMzEsIChnICYgNjMpID4+PiAwID49IDMyID8gKHAgPSAwLCBpID0gciA+Pj4gdSB8IDApIDogKHAgPSByID4+PiB1IHwgMCwgaSA9ICgoMSA8PCB1KSAtIDEgJiByKSA8PCAzMiAtIHUgfCBpID4+PiB1KSwgZVtvICsgMTY4ID4+IDJdID0gaSwgZVtvICsgMTcyID4+IDJdID0gcCwgciA9IDEsIHQgPSA0LCAhISh2ICYgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3cyICsgNCA+PiAyXSA9IGVbdzIgKyA0ID4+IDJdIHwgKGwgPj4+IDI3ICYgMTQgfCBsID4+PiAyOSB8IGwgPj4+IDI4KSAmIChlW1kyICsgNCA+PiAyXSBeIC0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID0gZVtZMiA+PiAyXSB8IGwsIHIgPSB2ID4+PiAzICYgMjg2MzMxMTUzLCBmID0gciA+Pj4gNCB8IHIgPDwgNCB8IHIsIHggJiYgKGkgPSBQMiAtIDQgfCAwLCBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gfCAoZVtuIC0gNCA+PiAyXSBeIC0xKSAmIHIgPDwgMjgpLCBlW1AyID4+IDJdID0gZVtQMiA+PiAyXSB8IGYgJiAoZVtuID4+IDJdIF4gLTEpLCBlW1AyICsgNCA+PiAyXSA9IGVbUDIgKyA0ID4+IDJdIHwgKGVbbiArIDQgPj4gMl0gXiAtMSkgJiB2ID4+PiAzMSwgdzIgPSB3MiArIDQgfCAwLCBZMiA9IFkyICsgNCB8IDAsIFAyID0gUDIgKyA0IHwgMCwgbiA9IG4gKyA0IHwgMCwgeCA9IHggKyA4IHwgMCwgISgoVSB8IDApID4gKHggfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IHcgKyA0IHwgMCwgISgoejIgfCAwKSA+ICh3IHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IDEsICh6MiB8IDApIDw9IDAgfCAoVSB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodiA9IFUgJiAyMTQ3NDgzNjQ0LCB1ID0gVSAmIDMsIG4gPSBPIC0gVDAgPj4+IDAgPiA0Mjk0OTY3MjkyLCB3ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gazAgKyAoWih3LCBVKSA8PCAyKSB8IDAsIGcgPSAwLCAhbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGYgPSBlW3IgPj4gMl0sIGkgPSBmICYgMjE0NzQ4MzY0NywgZVtyID4+IDJdID0gKGYgfCAwKSA8IDAgPyAwIC0gaSB8IDAgOiBpLCBmID0gZVtyICsgNCA+PiAyXSwgaSA9IGYgJiAyMTQ3NDgzNjQ3LCBlW3IgKyA0ID4+IDJdID0gKGYgfCAwKSA8IDAgPyAwIC0gaSB8IDAgOiBpLCBmID0gZVtyICsgOCA+PiAyXSwgaSA9IGYgJiAyMTQ3NDgzNjQ3LCBlW3IgKyA4ID4+IDJdID0gKGYgfCAwKSA8IDAgPyAwIC0gaSB8IDAgOiBpLCBmID0gZVtyICsgMTIgPj4gMl0sIGkgPSBmICYgMjE0NzQ4MzY0NywgZVtyICsgMTIgPj4gMl0gPSAoZiB8IDApIDwgMCA/IDAgLSBpIHwgMCA6IGksIHIgPSByICsgMTYgfCAwLCBnID0gZyArIDQgfCAwLCAodiB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IDAsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBmID0gZVtyID4+IDJdLCBpID0gZiAmIDIxNDc0ODM2NDcsIGVbciA+PiAyXSA9IChmIHwgMCkgPCAwID8gMCAtIGkgfCAwIDogaSwgciA9IHIgKyA0IHwgMCwgZyA9IGcgKyAxIHwgMCwgKHUgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSAxLCB3ID0gdyArIDEgfCAwLCAoejIgfCAwKSA9PSAodyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXgyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbyArIDUyID4+IDJdID0gZVt6ICsgMjQgPj4gMl0sIGVbbyArIDQ4ID4+IDJdID0gRSwgUShmMiwgMSwgMjAxNzAsIG8gKyA0OCB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtvICsgMjAgPj4gMl0gPSBnLCBlW28gKyAxNiA+PiAyXSA9IEUsIFEoZjIsIDEsIDIwMTcwLCBvICsgMTYgfCAwKSwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoWCA9IG8gKyAzMDQgfCAwLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtrICsgMTA4ID4+IDJdID0gKGkgPDwgOSkgKyAzNzQ3MiwgIXg0KGssIGVbeiArIDE2ID4+IDJdIC0gZVt6ICsgOCA+PiAyXSB8IDAsIGVbeiArIDIwID4+IDJdIC0gZVt6ICsgMTIgPj4gMl0gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChwMiA9IGYgKyBlW3ogKyAyOCA+PiAyXSB8IDAsIChwMiB8IDApID49IDMxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgheDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgZVtYMiArIDE2ID4+IDJdID0gcDIsIFEoZjIsIDIsIDE5MDAxLCBYMiArIDE2IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBzcihrKSwgaSA9IDAsIGVbayArIDEwMCA+PiAyXSA9IDM3NDQwLCBlW2sgKyA5NiA+PiAyXSA9IDM2MDY0LCBlW2sgKyAyOCA+PiAyXSA9IDM2MDk2OwogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbeiArIDUyID4+IDJdLCBsID4+PiAwID4gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbayArIDE0NCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBlW3ogKyA0ID4+IDJdLCBsIC0gMSA+Pj4gMCA+PSAzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSBsICYgLTQ7IG4gPSBvICsgKEIgPDwgMykgfCAwLCBpID0gZVtuICsgMjggPj4gMl0gKyAoZVtuICsgMjAgPj4gMl0gKyAoZVtuICsgMTIgPj4gMl0gKyAoZVtuICsgNCA+PiAyXSArIGkgfCAwKSB8IDApIHwgMCkgfCAwLCBCID0gQiArIDQgfCAwLCByID0gciArIDQgfCAwLCAoZiB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGwgJiAzLCAhZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDA7IGkgPSBlWyhvICsgKEIgPDwgMykgfCAwKSArIDQgPj4gMl0gKyBpIHwgMCwgQiA9IEIgKyAxIHwgMCwgbiA9IG4gKyAxIHwgMCwgKGYgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBpICsgMiB8IDAsIG4gPj4+IDAgPiBkW2sgKyAxNTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gbzAoZVtrICsgMTQ4ID4+IDJdLCBuKSwgIWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNDggPj4gMl0gPSBmLCBpID0gaSArIGYgfCAwLCBGW2kgfCAwXSA9IDAsIEZbaSArIDEgfCAwXSA9IDAsIGVbayArIDE1MiA+PiAyXSA9IG4sIGwgPSBlW3ogKyA1MiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFQwID0gZVtrICsgMTQ4ID4+IDJdLCAhbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gZVt6ICsgNCA+PiAyXSwgQiA9IDAsIGkgPSAwOyBvID0gaSA8PCAzLCBmID0gbyArIG4gfCAwLCBGMihCICsgVDAgfCAwLCBlW2YgPj4gMl0sIGVbZiArIDQgPj4gMl0pLCBuID0gZVt6ICsgNCA+PiAyXSwgQiA9IGVbKG8gKyBuIHwgMCkgKyA0ID4+IDJdICsgQiB8IDAsIGkgPSBpICsgMSB8IDAsIGkgPj4+IDAgPCBkW3ogKyA1MiA+PiAyXTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICBUMCA9IGVbZVt6ICsgNCA+PiAyXSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVt6ICsgNjAgPj4gMl0sIGkgJiYgKGswID0gZVtrICsgMTE2ID4+IDJdLCBlW2sgKyAxMTYgPj4gMl0gPSBpKSwgZVt6ICsgNDQgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoRCA9IFMyICYgMiwgeCA9IFMyICYgOCwgTDIgPSBrICsgMjggfCAwLCBtMiA9ICEoUzIgJiAxKSwgWTIgPSAyOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuMiArIFQwIHwgMCwgdDAgPSBlW3ogPj4gMl0gKyBaKHEsIDI0KSB8IDAsIGYgPSBlW3QwID4+IDJdLCBIMCA9IG0yIHwgKChlW3ogKyAyOCA+PiAyXSAtIDQgfCAwKSA8IChwMiB8IDApIHwgWTIgPj4+IDAgPiAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUgwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDIwID4+IDJdID0gbywgaSA9IGYgKyBvIHwgMCwgZVtrICsgMjQgPj4gMl0gPSBpLCB1MltrICsgMTEyID4+IDFdID0gSVtpIHwgMF0gfCBJW2kgKyAxIHwgMF0gPDwgOCwgRltpIHwgMF0gPSAyNTUsIEZbZVtrICsgMjQgPj4gMl0gKyAxIHwgMF0gPSAyNTUsIGVbayArIDggPj4gMl0gPSAwLCBlW2sgPj4gMl0gPSAwLCBlW2sgKyAxNiA+PiAyXSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAyMCA+PiAyXSA9IG8sIGkgPSBmICsgbyB8IDAsIGVbayArIDI0ID4+IDJdID0gaSwgdTJbayArIDExMiA+PiAxXSA9IElbaSB8IDBdIHwgSVtpICsgMSB8IDBdIDw8IDgsIEZbaSB8IDBdID0gMjU1LCBGW2VbayArIDI0ID4+IDJdICsgMSB8IDBdID0gMjU1LCBlW2sgKyAxMDQgPj4gMl0gPSBrICsgMjgsIGVbayArIDE2ID4+IDJdID0gbywgZVtrICsgMTIgPj4gMl0gPSAwLCBmID0gZiA/IElbbyB8IDBdIDw8IDE2IDogMTY3MTE2ODAsIGVbayA+PiAyXSA9IGYsIGggPSAxLCBpID0gbyArIDEgfCAwLCBuID0gSVtvICsgMSB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSVtvIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IDEsIGkgPSBmIHwgNjUyODA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIGggPSAwLCBpID0gZiArIChuIDw8IDkpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgaSA9IGYgfCBuIDw8IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyA4ID4+IDJdID0gaCwgZVtrICsgNCA+PiAyXSA9IDMyNzY4LCBlW2sgPj4gMl0gPSBpIDw8IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBlW3QwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVt0MCArIDggPj4gMl0gfCAocDIgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMCwgUDIgPSBIMCAmIChEIHwgMCkgIT0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoWTIgLSAxIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUgwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gMSA8PCBwMiwgQyA9IGkgPj4+IDEgfCBpLCB0ID0gZVtrICsgMTI0ID4+IDJdLCByID0gdCA8PCAyLCBpID0gKHIgKyBlW2sgKyAxMjAgPj4gMl0gfCAwKSArIDEyIHwgMCwgbiA9IGVbayArIDExNiA+PiAyXSwgZyA9IDAsIGYgPSBlW2sgKyAxMjggPj4gMl0sIGYgPj4+IDAgPj0gNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gWih0LCAxMiksIHYgPSB0IDw8IDMsIGwgPSAwIC0gQyB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaSwgaSA9IGVbaSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIShpICYgNDk1KSB8IGkgJiAyMDk3MTY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbayA+PiAyXSwgaCA9IGVbayArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAoaSB8IDApID09IDI1NSwgdSA9IGVbayArIDE2ID4+IDJdLCBpID0gSVt1IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDEsIGggPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDI1NSwgZVtrID4+IDJdID0gMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGkgPj4+IGggJiAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAoaSB8IDApID09IDI1NSwgdSA9IGVbayArIDE2ID4+IDJdLCBpID0gSVt1IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrID4+IDJdID0gaSwgZVtrICsgMTYgPj4gMl0gPSB1ICsgMSwgaCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMjU1LCBlW2sgPj4gMl0gPSAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gaCAtIDEgfCAwLCBlW2sgKyA4ID4+IDJdID0gaCwgdSA9IGkgPj4+IGggJiAxLCBlW24gPj4gMl0gPSB1ID8gbCA6IEMsIGggPSBlW2sgKyAxMjQgPj4gMl0sIGkgPSBvIC0gNCB8IDAsIGVbaSA+PiAyXSA9IGVbaSA+PiAyXSB8IDMyLCBlW28gKyA0ID4+IDJdID0gZVtvICsgNCA+PiAyXSB8IDgsIGVbbyA+PiAyXSA9IGVbbyA+PiAyXSB8IHUgPDwgMTkgfCAxNiwgeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbyArICgtMiAtIGggPDwgMikgfCAwLCBlW2kgKyA0ID4+IDJdID0gZVtpICsgNCA+PiAyXSB8IDMyNzY4LCBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gfCB1IDw8IDMxIHwgNjU1MzYsIGkgPSBpIC0gNCB8IDAsIGVbaSA+PiAyXSA9IGVbaSA+PiAyXSB8IDEzMTA3MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW28gPj4gMl0gfCAyMDk3MTUyLCBlW28gPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghKGkgJiAzOTYwKSB8IGkgJiAxNjc3NzM0NCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2sgPj4gMl0sIGggPSBlW2sgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKGkgfCAwKSA9PSAyNTUsIHUgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IElbdSB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHUgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHUgKyAxLCBoID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAyNTUsIGVbayA+PiAyXSA9IDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gaCAtIDEgfCAwLCBlW2sgKyA4ID4+IDJdID0gaCwgaSA+Pj4gaCAmIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKGkgfCAwKSA9PSAyNTUsIHUgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IElbdSB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHUgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDEsIGggPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDI1NSwgZVtrID4+IDJdID0gMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaCAtIDEgfCAwLCBlW2sgKyA4ID4+IDJdID0gaCwgaCA9IGkgPj4+IGggJiAxLCBlW3IgKyBuID4+IDJdID0gaCA/IGwgOiBDLCBpID0gbyAtIDQgfCAwLCBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gfCAyNTYsIGVbbyArIDQgPj4gMl0gPSBlW28gKyA0ID4+IDJdIHwgNjQsIGkgPSBlW28gPj4gMl0gfCBoIDw8IDIyIHwgMTI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW28gPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSB8IDE2Nzc3MjE2LCBlW28gPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghKGkgJiAzMTY4MCkgfCBpICYgMTM0MjE4NzUyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbayA+PiAyXSwgaCA9IGVbayArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAoaSB8IDApID09IDI1NSwgdSA9IGVbayArIDE2ID4+IDJdLCBpID0gSVt1IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDEsIGggPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDI1NSwgZVtrID4+IDJdID0gMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBoIC0gMSB8IDAsIGVbayArIDggPj4gMl0gPSBoLCBpID4+PiBoICYgMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAoaSB8IDApID09IDI1NSwgdSA9IGVbayArIDE2ID4+IDJdLCBpID0gSVt1IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrID4+IDJdID0gaSwgZVtrICsgMTYgPj4gMl0gPSB1ICsgMSwgaCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMjU1LCBlW2sgPj4gMl0gPSAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBoIC0gMSB8IDAsIGVbayArIDggPj4gMl0gPSBoLCBoID0gaSA+Pj4gaCAmIDEsIGVbbiArIHYgPj4gMl0gPSBoID8gbCA6IEMsIGkgPSBvIC0gNCB8IDAsIGVbaSA+PiAyXSA9IGVbaSA+PiAyXSB8IDIwNDgsIGVbbyArIDQgPj4gMl0gPSBlW28gKyA0ID4+IDJdIHwgNTEyLCBpID0gZVtvID4+IDJdIHwgaCA8PCAyNSB8IDEwMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbbyA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpIHwgMTM0MjE3NzI4LCBlW28gPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShpICYgMjUzNDQwKSB8IGkgJiAxMDczNzUwMDE2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtrID4+IDJdLCBoID0gZVtrICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAoaSB8IDApID09IDI1NSwgdSA9IGVbayArIDE2ID4+IDJdLCBpID0gSVt1IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHUgKyAxLCBoID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAyNTUsIGVbayA+PiAyXSA9IDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGggLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IGgsIGkgPj4+IGggJiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAoaSB8IDApID09IDI1NSwgdSA9IGVbayArIDE2ID4+IDJdLCBpID0gSVt1IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGksIGVbayArIDE2ID4+IDJdID0gdSArIDEsIGggPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDI1NSwgZVtrID4+IDJdID0gMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IGgsIHUgPSBpID4+PiBoICYgMSwgZVtuICsgYSA+PiAyXSA9IHUgPyBsIDogQywgaCA9IGVbayArIDEyNCA+PiAyXSwgaSA9IG8gLSA0IHwgMCwgZVtpID4+IDJdID0gZVtpID4+IDJdIHwgMTYzODQsIGVbbyArIDQgPj4gMl0gPSBlW28gKyA0ID4+IDJdIHwgNDA5NiwgZVtvID4+IDJdID0gZVtvID4+IDJdIHwgdSA8PCAyOCB8IDgxOTIsIGkgPSBvICsgKGggPDwgMikgfCAwLCBlW2kgKyA0ID4+IDJdID0gZVtpICsgNCA+PiAyXSB8IDQsIGVbaSArIDEyID4+IDJdID0gZVtpICsgMTIgPj4gMl0gfCAxLCBlW2kgKyA4ID4+IDJdID0gZVtpICsgOCA+PiAyXSB8IHUgPDwgMTggfCAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW28gPj4gMl0gPSBlW28gPj4gMl0gfCAxMDczNzQxODI0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbiArIDQgfCAwLCBpID0gbyArIDQgfCAwLCBmID0gZiArIDEgfCAwLCAodCB8IDApID09IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IG4gKyBhIHwgMCwgaSA9IG8gKyAxMiB8IDAsIGcgPSBnICsgNCB8IDAsIGYgPSBlW2sgKyAxMjggPj4gMl0sICEoZyA+Pj4gMCA8IChmICYgLTQpID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCB8IGYgPj4+IDAgPD0gZyA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG0gPSAwLCB2ID0gMCAtIEMgfCAwLCBoID0gZjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSA9PSAoaCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gaSAtIDQgfCAwLCBsID0gZVtpID4+IDJdLCBCID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSBaKEIsIDMpLCBvID0gbCA+Pj4gdyB8IDAsICEobyAmIDIwOTcxNjggfCAhKG8gJiA0OTUpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW2sgPj4gMl0sIGEgPSBlW2sgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IChmIHwgMCkgIT0gMjU1LCBoID0gZVtrICsgMTYgPj4gMl0sIGYgPSBJW2ggfCAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gMjU1LCBlW2sgPj4gMl0gPSAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBmLCBlW2sgKyAxNiA+PiAyXSA9IGggKyAxLCBhID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGYsIGVbayArIDE2ID4+IDJdID0gaCArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGEgLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZiA+Pj4gYSAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IChaKHQsIEIpIDw8IDIpICsgbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAoZiB8IDApICE9IDI1NSwgciA9IGVbayArIDE2ID4+IDJdLCBmID0gSVtyIHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gMjU1LCBlW2sgPj4gMl0gPSAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBmLCBlW2sgKyAxNiA+PiAyXSA9IHIgKyAxLCBhID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IGYsIGVbayArIDE2ID4+IDJdID0gciArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGEgLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IG8sIGEgPSBoLCBoID0gZiA+Pj4gbyAmIDEsIGVbYSA+PiAyXSA9IGggPyB2IDogQywgbyA9IGVbayArIDEyNCA+PiAyXSwgZVt1ID4+IDJdID0gZVt1ID4+IDJdIHwgMzIgPDwgdywgZVtpID4+IDJdID0gZVtpID4+IDJdIHwgKGggPDwgMTkgfCAxNikgPDwgdywgZVtpICsgNCA+PiAyXSA9IGVbaSArIDQgPj4gMl0gfCA4IDw8IHcsIEIgfCB4IHx8IChmID0gKC0yIC0gbyA8PCAyKSArIGkgfCAwLCBlW2YgKyA0ID4+IDJdID0gZVtmICsgNCA+PiAyXSB8IDMyNzY4LCBlW2YgPj4gMl0gPSBlW2YgPj4gMl0gfCBoIDw8IDMxIHwgNjU1MzYsIGYgPSBmIC0gNCB8IDAsIGVbZiA+PiAyXSA9IGVbZiA+PiAyXSB8IDEzMTA3MiksIChCIHwgMCkgIT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAobyA8PCAyKSArIGkgfCAwLCBlW2YgKyA0ID4+IDJdID0gZVtmICsgNCA+PiAyXSB8IDQsIGVbZiArIDEyID4+IDJdID0gZVtmICsgMTIgPj4gMl0gfCAxLCBlW2YgKyA4ID4+IDJdID0gZVtmICsgOCA+PiAyXSB8IGggPDwgMTggfCAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZVtpID4+IDJdIHwgMjA5NzE1MiA8PCB3LCBlW2kgPj4gMl0gPSBsLCBmID0gZVtrICsgMTI4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZiwgQiA9IEIgKyAxIHwgMCwgIShCID4+PiAwIDwgZiAtIGcgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IG4gKyA0IHwgMCwgaSA9IGkgKyA0IHwgMCwgbSA9IG0gKyAxIHwgMCwgKHQgfCAwKSA9PSAobSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAwLCBDID0gMCwgbSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUCA9IGVbayArIDEyNCA+PiAyXSwgISgoUCB8IDApICE9IDY0IHwgZVtrICsgMTI4ID4+IDJdICE9IDY0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IDEgPDwgcDIsIGggPSBpID4+PiAxIHwgaSwgbyA9IDAgLSBoIHwgMCwgSCA9IGsgKyAyOCB8IDAsIG4gPSBlW2sgKyAxMjAgPj4gMl0gKyAyNjggfCAwLCBsID0gZVtrICsgOCA+PiAyXSwgZiA9IGVbayArIDQgPj4gMl0sIGEgPSBlW2sgPj4gMl0sIGcgPSBlW2sgKyAxMDQgPj4gMl0sIGkgPSBlW2sgKyAxMTYgPj4gMl0sIFMyICYgOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG0gPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPSBpLCByID0gbiwgbiA9IGVbciA+PiAyXSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiAyMDk3MTY4IHx8IChpID0gbiAmIDQ5NSwgIWkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gSCArIChJW2kgKyBlW2sgKyAxMDggPj4gMl0gfCAwXSA8PCAyKSB8IDAsIHQgPSBlW2cgPj4gMl0sIGkgPSBlW3QgPj4gMl0sIGYgPSBmIC0gaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwIDwgaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW3QgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbdCArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIHQgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKHQgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKHQgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCBpID0gdSA/IHcgOiAhdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsICEoZiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW3QgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbdCArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIHQgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKHQgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKHQgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpID8gIXcgOiB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbdCArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gciAtIDQgfCAwLCB1ID0gZVtyICsgNCA+PiAyXSA+Pj4gMTcgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gMTkgJiAxIHwgKG4gPj4+IDE0ICYgMTYgfCAobiA+Pj4gMTYgJiA2NCB8IG4gJiAxNzApKSksIGcgPSBIICsgKElbdSArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBjID0gZVtnID4+IDJdLCBpID0gZVtjID4+IDJdLCBmID0gZiAtIGkgfCAwLCB3ID0gSVt1ICsgMzk3NzYgfCAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwIDwgaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbYyArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtjICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCB1ID0gdSA/IHQgOiAhdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsICEoZiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbYyArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtjICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpID8gIXQgOiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbYyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3YgPj4gMl0gPSAodyB8IDApID09ICh1IHwgMCkgPyBoIDogbywgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMzIsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgOCwgaSA9IHIgLSAyNjggfCAwLCBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gfCAxMzEwNzIsIGkgPSByIC0gMjYwIHwgMCwgZVtpID4+IDJdID0gZVtpID4+IDJdIHwgMzI3NjgsIGkgPSByIC0gMjY0IHwgMCwgSiA9IGksIHQgPSBlW2kgPj4gMl0sIGkgPSB1IF4gdywgZVtKID4+IDJdID0gdCB8IGkgPDwgMzEgfCA2NTUzNiwgbiA9IGkgPDwgMTkgfCBuIHwgMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIHwgMjA5NzE1MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghKG4gJiAzOTYwKSB8IG4gJiAxNjc3NzM0NCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gbiA+Pj4gMyB8IDAsIGcgPSBIICsgKElbZVtrICsgMTA4ID4+IDJdICsgKHcgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBzID0gZVtnID4+IDJdLCBpID0gZVtzID4+IDJdLCBmID0gZiAtIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA8IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtzICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW3MgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBzID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9IChzIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBsID0gOCwgYSA9IChzIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSwgaSA9IHUgPyB0IDogIXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgLSAoaSA8PCAxNikgfCAwLCAhKGYgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtzICsgNCA+PiAyXSwgaSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW3MgKyAoaSA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBzID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9IChzIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBsID0gOCwgYSA9IChzIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSA/ICF0IDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW3MgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHIgLSA0IHwgMCwgdSA9IGVbciArIDQgPj4gMl0gPj4+IDIwICYgNCB8IChlW3MgPj4gMl0gPj4+IDIyICYgMSB8IChuID4+PiAxNSAmIDE2IHwgKG4gPj4+IDE5ICYgNjQgfCB3ICYgMTcwKSkpLCBnID0gSCArIChJW3UgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgYyA9IGVbZyA+PiAyXSwgaSA9IGVbYyA+PiAyXSwgZiA9IGYgLSBpIHwgMCwgdyA9IElbdSArIDM5Nzc2IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA8IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW2MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgYyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKGMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSwgaSA9IHUgPyB0IDogIXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgLSAoaSA8PCAxNikgfCAwLCAhKGYgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW2MgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IGwgKyAxIHwgMCwgYyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKGMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSA/ICF0IDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2MgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt2ICsgMjU2ID4+IDJdID0gKHcgfCAwKSA9PSAoaSB8IDApID8gaCA6IG8sIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSB8IDI1NiwgZVtyICsgNCA+PiAyXSA9IGVbciArIDQgPj4gMl0gfCA2NCwgbiA9IChpIF4gdykgPDwgMjIgfCBuIHwgMTI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbiB8IDE2Nzc3MjE2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCEobiAmIDMxNjgwKSB8IG4gJiAxMzQyMTg3NTIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG4gPj4+IDYgfCAwLCBnID0gSCArIChJW2VbayArIDEwOCA+PiAyXSArICh3ICYgNDk1KSB8IDBdIDw8IDIpIHwgMCwgcyA9IGVbZyA+PiAyXSwgaSA9IGVbcyA+PiAyXSwgZiA9IGYgLSBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPCBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbcyArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtzICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgcyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGEgPSAocyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAocyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIGkgPSB1ID8gdCA6ICF0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgIShmICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbcyArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtzICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IGwgKyAxIHwgMCwgcyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAocyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAocyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgPyAhdCA6IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtzICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByIC0gNCB8IDAsIHUgPSBlW3IgKyA0ID4+IDJdID4+PiAyMyAmIDQgfCAoZVtzID4+IDJdID4+PiAyNSAmIDEgfCAobiA+Pj4gMTggJiAxNiB8IChuID4+PiAyMiAmIDY0IHwgdyAmIDE3MCkpKSwgZyA9IEggKyAoSVt1ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIGMgPSBlW2cgPj4gMl0sIGkgPSBlW2MgPj4gMl0sIGYgPSBmIC0gaSB8IDAsIHcgPSBJW3UgKyAzOTc3NiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPCBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtjICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW2MgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIGMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9IChjIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBsID0gOCwgYSA9IChjIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIGkgPSB1ID8gdCA6ICF0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgIShmICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtjICsgNCA+PiAyXSwgaSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW2MgKyAoaSA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIGMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9IChjIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBsID0gOCwgYSA9IChjIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgPyAhdCA6IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtjICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdiArIDUxMiA+PiAyXSA9ICh3IHwgMCkgPT0gKGkgfCAwKSA/IGggOiBvLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAyMDQ4LCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSB8IDUxMiwgbiA9IChpIF4gdykgPDwgMjUgfCBuIHwgMTAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4gfCAxMzQyMTc3Mjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIShuICYgMjUzNDQwKSB8IG4gJiAxMDczNzUwMDE2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBuID4+PiA5IHwgMCwgZyA9IEggKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAodyAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIHMgPSBlW2cgPj4gMl0sIGkgPSBlW3MgPj4gMl0sIGYgPSBmIC0gaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwIDwgaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW3MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbcyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIHMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKHMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKHMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCBpID0gdSA/IHQgOiAhdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsICEoZiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW3MgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbcyArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIHMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKHMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKHMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpID8gIXQgOiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbcyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gciAtIDQgfCAwLCB1ID0gZVtyICsgNCA+PiAyXSA+Pj4gMjYgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gMjggJiAxIHwgKG4gPj4+IDIxICYgMTYgfCAobiA+Pj4gMjUgJiA2NCB8IHcgJiAxNzApKSksIGcgPSBIICsgKElbdSArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBjID0gZVtnID4+IDJdLCBpID0gZVtjID4+IDJdLCBmID0gZiAtIGkgfCAwLCB3ID0gSVt1ICsgMzk3NzYgfCAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwIDwgaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbYyArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtjICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCBpID0gdSA/IHQgOiAhdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsICEoZiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbYyArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtjICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpID8gIXQgOiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbYyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3YgKyA3NjggPj4gMl0gPSAodyB8IDApID09IChpIHwgMCkgPyBoIDogbywgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMTYzODQsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgNDA5NiwgZVtyICsgMjYwID4+IDJdID0gZVtyICsgMjYwID4+IDJdIHwgNCwgZVtyICsgMjY4ID4+IDJdID0gZVtyICsgMjY4ID4+IDJdIHwgMSwgaSA9IGkgXiB3LCBlW3IgKyAyNjQgPj4gMl0gPSBlW3IgKyAyNjQgPj4gMl0gfCBpIDw8IDE4IHwgMiwgbiA9IGkgPDwgMjggfCBuIHwgODE5MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4gfCAxMDczNzQxODI0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbciA+PiAyXSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHIgKyA0IHwgMCwgaSA9IHYgKyA0IHwgMCwgbSA9IG0gKyAxIHwgMCwgKG0gfCAwKSA9PSA2NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gciArIDEyIHwgMCwgaSA9IHYgKyA3NzIgfCAwLCB2ID0gQyA+Pj4gMCA8IDYwLCBDID0gQyArIDQgfCAwLCAhdikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMSA8PCBwMiwgbyA9IGkgPj4+IDEgfCBpLCB2ID0gZVtrICsgMTIwID4+IDJdLCBuID0gKHYgKyAoUCA8PCAyKSB8IDApICsgMTIgfCAwLCBpID0gZVtrICsgMTI4ID4+IDJdLCBsID0gZVtrICsgOCA+PiAyXSwgZiA9IGVbayArIDQgPj4gMl0sIGEgPSBlW2sgPj4gMl0sIGcgPSBlW2sgKyAxMDQgPj4gMl0sIHcgPSBlW2sgKyAxMTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTMiAmIDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEUgPSBaKFAsIDEyKSwgcyA9IFAgPDwgMywgdiA9IDAgLSBvIHwgMCwgTyA9IGsgKyAyOCB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChIID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gbiwgbiA9IGVbciA+PiAyXSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiAyMDk3MTY4IHx8IChpID0gbiAmIDQ5NSwgIWkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gTyArIChJW2kgKyBlW2sgKyAxMDggPj4gMl0gfCAwXSA8PCAyKSB8IDAsIEMgPSBlW2cgPj4gMl0sIGkgPSBlW0MgPj4gMl0sIGYgPSBmIC0gaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwID49IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgdSA9IGVbQyArIDQgPj4gMl0sIGYgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW0MgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbQyArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIEMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKEMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAoQyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaSA/ICF0IDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbQyArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtDICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIEMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBsID0gOCwgYSA9IChDIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9IChDIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIHUgPSB1ID8gdCA6ICF0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHIgLSA0IHwgMCwgdSA9IGVbciArIDQgPj4gMl0gPj4+IDE3ICYgNCB8IChlW2MgPj4gMl0gPj4+IDE5ICYgMSB8IChuID4+PiAxNCAmIDE2IHwgKG4gPj4+IDE2ICYgNjQgfCBuICYgMTcwKSkpLCBnID0gTyArIChJW3UgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgQiA9IGVbZyA+PiAyXSwgaSA9IGVbQiA+PiAyXSwgZiA9IGYgLSBpIHwgMCwgdCA9IElbdSArIDM5Nzc2IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA+PSBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgdSA9IGVbQiArIDQgPj4gMl0sIGYgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVtCICsgNCA+PiAyXSwgaSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW0IgKyAoaSA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIEIgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAoQiA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKEIgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpID8gIUMgOiBDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVtCICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW0IgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBCID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBsID0gOCwgYSA9IChCIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKEIgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIHUgPSB1ID8gQyA6ICFDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHUsIGVbdyA+PiAyXSA9ICh0IHwgMCkgPT0gKGkgfCAwKSA/IG8gOiB2LCBlW2MgPj4gMl0gPSBlW2MgPj4gMl0gfCAzMiwgZVtyICsgNCA+PiAyXSA9IGVbciArIDQgPj4gMl0gfCA4LCBuID0gKGkgXiB0KSA8PCAxOSB8IG4gfCAxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4gfCAyMDk3MTUyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCEobiAmIDM5NjApIHwgbiAmIDE2Nzc3MzQ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBuID4+PiAzIHwgMCwgZyA9IE8gKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAodCAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIGMgPSBlW2cgPj4gMl0sIGkgPSBlW2MgPj4gMl0sIGYgPSBmIC0gaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwID49IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgdSA9IGVbYyArIDQgPj4gMl0sIGYgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2MgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIGMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKGMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaSA/ICFDIDogQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQyA9IGVbYyArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtjICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIGMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBsID0gOCwgYSA9IChjIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9IChjIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIHUgPSB1ID8gQyA6ICFDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IHIgLSA0IHwgMCwgdSA9IGVbciArIDQgPj4gMl0gPj4+IDIwICYgNCB8IChlW0IgPj4gMl0gPj4+IDIyICYgMSB8IChuID4+PiAxNSAmIDE2IHwgKG4gPj4+IDE5ICYgNjQgfCB0ICYgMTcwKSkpLCBnID0gTyArIChJW3UgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgeSA9IGVbZyA+PiAyXSwgaSA9IGVbeSA+PiAyXSwgZiA9IGYgLSBpIHwgMCwgSiA9IChQIDw8IDIpICsgdyB8IDAsIHQgPSBJW3UgKyAzOTc3NiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPj0gaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsIHUgPSBlW3kgKyA0ID4+IDJdLCBmICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGVbeSArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVt5ICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCB5ID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKHkgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5ID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9ICh5IDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaSA/ICFjIDogYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGVbeSArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVt5ICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgeSA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoeSA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9ICh5IDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCB1ID0gdSA/IGMgOiAhYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1LCBlW0ogPj4gMl0gPSAodCB8IDApID09IChpIHwgMCkgPyBvIDogdiwgZVtCID4+IDJdID0gZVtCID4+IDJdIHwgMjU2LCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSB8IDY0LCBuID0gKGkgXiB0KSA8PCAyMiB8IG4gfCAxMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIHwgMTY3NzcyMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIShuICYgMzE2ODApIHwgbiAmIDEzNDIxODc1MikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbiA+Pj4gNiB8IDAsIGcgPSBPICsgKElbZVtrICsgMTA4ID4+IDJdICsgKHQgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBjID0gZVtnID4+IDJdLCBpID0gZVtjID4+IDJdLCBmID0gZiAtIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA+PSBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsIHUgPSBlW2MgKyA0ID4+IDJdLCBmICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVtjICsgNCA+PiAyXSwgaSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW2MgKyAoaSA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBsID0gOCwgYSA9IChjIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGkgPyAhQyA6IEM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCB1ID0gdSA/IEMgOiAhQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSByIC0gNCB8IDAsIHUgPSBlW3IgKyA0ID4+IDJdID4+PiAyMyAmIDQgfCAoZVtCID4+IDJdID4+PiAyNSAmIDEgfCAobiA+Pj4gMTggJiAxNiB8IChuID4+PiAyMiAmIDY0IHwgdCAmIDE3MCkpKSwgZyA9IE8gKyAoSVt1ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIHkgPSBlW2cgPj4gMl0sIGkgPSBlW3kgPj4gMl0sIGYgPSBmIC0gaSB8IDAsIEogPSBzICsgdyB8IDAsIHQgPSBJW3UgKyAzOTc3NiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPj0gaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsIHUgPSBlW3kgKyA0ID4+IDJdLCBmICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGVbeSArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVt5ICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCB5ID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKHkgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5ID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9ICh5IDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaSA/ICFjIDogYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGVbeSArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVt5ICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgeSA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoeSA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9ICh5IDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCB1ID0gdSA/IGMgOiAhYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1LCBlW0ogPj4gMl0gPSAodCB8IDApID09IChpIHwgMCkgPyBvIDogdiwgZVtCID4+IDJdID0gZVtCID4+IDJdIHwgMjA0OCwgZVtyICsgNCA+PiAyXSA9IGVbciArIDQgPj4gMl0gfCA1MTIsIG4gPSAoaSBeIHQpIDw8IDI1IHwgbiB8IDEwMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIHwgMTM0MjE3NzI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCEobiAmIDI1MzQ0MCkgfCBuICYgMTA3Mzc1MDAxNikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbiA+Pj4gOSB8IDAsIGcgPSBPICsgKElbZVtrICsgMTA4ID4+IDJdICsgKHQgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBjID0gZVtnID4+IDJdLCBpID0gZVtjID4+IDJdLCBmID0gZiAtIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA+PSBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsIHUgPSBlW2MgKyA0ID4+IDJdLCBmICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVtjICsgNCA+PiAyXSwgaSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW2MgKyAoaSA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBsID0gOCwgYSA9IChjIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGkgPyAhQyA6IEM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCB1ID0gdSA/IEMgOiAhQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSByIC0gNCB8IDAsIHUgPSBlW3IgKyA0ID4+IDJdID4+PiAyNiAmIDQgfCAoZVtCID4+IDJdID4+PiAyOCAmIDEgfCAobiA+Pj4gMjEgJiAxNiB8IChuID4+PiAyNSAmIDY0IHwgdCAmIDE3MCkpKSwgZyA9IE8gKyAoSVt1ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIHkgPSBlW2cgPj4gMl0sIGkgPSBlW3kgPj4gMl0sIGYgPSBmIC0gaSB8IDAsIEogPSB3ICsgRSB8IDAsIHQgPSBJW3UgKyAzOTc3NiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPj0gaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsIHUgPSBlW3kgKyA0ID4+IDJdLCBmICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGVbeSArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVt5ICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCB5ID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKHkgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5ID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9ICh5IDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaSA/ICFjIDogYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGVbeSArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVt5ICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgeSA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoeSA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9ICh5IDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCB1ID0gdSA/IGMgOiAhYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1LCBlW0ogPj4gMl0gPSAodCB8IDApID09IChpIHwgMCkgPyBvIDogdiwgZVtCID4+IDJdID0gZVtCID4+IDJdIHwgMTYzODQsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgNDA5NiwgdSA9IHIgKyAoZVtrICsgMTI0ID4+IDJdIDw8IDIpIHwgMCwgZVt1ICsgNCA+PiAyXSA9IGVbdSArIDQgPj4gMl0gfCA0LCBlW3UgKyAxMiA+PiAyXSA9IGVbdSArIDEyID4+IDJdIHwgMSwgaSA9IGkgXiB0LCBlW3UgKyA4ID4+IDJdID0gZVt1ICsgOCA+PiAyXSB8IGkgPDwgMTggfCAyLCBuID0gaSA8PCAyOCB8IG4gfCA4MTkyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbiB8IDEwNzM3NDE4MjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtyID4+IDJdID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gciArIDQgfCAwLCB3ID0gdyArIDQgfCAwLCBIID0gSCArIDEgfCAwLCAoUCB8IDApID09IChIIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHIgKyAxMiB8IDAsIHcgPSB3ICsgRSB8IDAsIGggPSBoICsgNCB8IDAsIGkgPSBlW2sgKyAxMjggPj4gMl0sICEoaCA+Pj4gMCA8IChpICYgLTQpID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaSAmIC00LCBuID0gKG4gPj4+IDAgPD0gNCA/IDQgOiBuKSAtIDEgfCAwLCBoID0gKG4gJiAtNCkgKyA0IHwgMCwgbiA9ICh2ICsgKG4gPDwgMSAmIC04KSB8IDApICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtrICsgOCA+PiAyXSA9IGwsIGVbayArIDQgPj4gMl0gPSBmLCBlW2sgPj4gMl0gPSBhLCBlW2sgKyAxMDQgPj4gMl0gPSBnLCAhUCB8IGkgPj4+IDAgPD0gaCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IChpIHwgMCkgPT0gKGggfCAwKSwgbCA9IDAsIGkgPSBoLCAhZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEg0KGssIG4sIChaKGwsIFApIDw8IDIpICsgdyB8IDAsIG8sIGwsIGVbayArIDEyNCA+PiAyXSArIDIgfCAwLCAxKSwgbCA9IGwgKyAxIHwgMCwgaSA9IGVbayArIDEyOCA+PiAyXSwgbCA+Pj4gMCA8IGkgLSBoID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgNCB8IDAsIHcgPSB3ICsgNCB8IDAsIG0gPSBtICsgMSB8IDAsIChQIHwgMCkgPT0gKG0gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAwIDwgNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoRSA9IFooUCwgMTIpLCBzID0gUCA8PCAzLCB2ID0gMCAtIG8gfCAwLCBPID0gayArIDI4IHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChIID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IG4sIG4gPSBlW3IgPj4gMl0sIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiAyMDk3MTY4IHx8IChpID0gbiAmIDQ5NSwgIWkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBPICsgKElbaSArIGVbayArIDEwOCA+PiAyXSB8IDBdIDw8IDIpIHwgMCwgQyA9IGVbZyA+PiAyXSwgaSA9IGVbQyA+PiAyXSwgZiA9IGYgLSBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA+PSBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgLSAoaSA8PCAxNikgfCAwLCB1ID0gZVtDICsgNCA+PiAyXSwgZiAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtDICsgNCA+PiAyXSwgaSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW0MgKyAoaSA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IGwgKyAxIHwgMCwgQyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKEMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKEMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaSA/ICF0IDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbQyArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtDICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBDID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKEMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9IChDIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSwgdSA9IHUgPyB0IDogIXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gciAtIDQgfCAwLCB1ID0gZVtyICsgNCA+PiAyXSA+Pj4gMTcgJiA0IHwgKGVbYyA+PiAyXSA+Pj4gMTkgJiAxIHwgKG4gPj4+IDE0ICYgMTYgfCAobiA+Pj4gMTYgJiA2NCB8IG4gJiAxNzApKSksIGcgPSBPICsgKElbdSArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBCID0gZVtnID4+IDJdLCBpID0gZVtCID4+IDJdLCBmID0gZiAtIGkgfCAwLCB0ID0gSVt1ICsgMzk3NzYgfCAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPj0gaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgLSAoaSA8PCAxNikgfCAwLCB1ID0gZVtCICsgNCA+PiAyXSwgZiAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQyA9IGVbQiArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtCICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IGwgKyAxIHwgMCwgQiA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAoQiA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9IChCIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpID8gIUMgOiBDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVtCICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW0IgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgQiA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKEIgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKEIgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSwgdSA9IHUgPyBDIDogIUM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdyA+PiAyXSA9ICh0IHwgMCkgPT0gKHUgfCAwKSA/IG8gOiB2LCBlW2MgPj4gMl0gPSBlW2MgPj4gMl0gfCAzMiwgZVtyICsgNCA+PiAyXSA9IGVbciArIDQgPj4gMl0gfCA4LCBpID0gciArICgtMiAtIGVbayArIDEyNCA+PiAyXSA8PCAyKSB8IDAsIGVbaSArIDQgPj4gMl0gPSBlW2kgKyA0ID4+IDJdIHwgMzI3NjgsIHUgPSB0IF4gdSwgZVtpID4+IDJdID0gZVtpID4+IDJdIHwgdSA8PCAzMSB8IDY1NTM2LCBpID0gaSAtIDQgfCAwLCBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gfCAxMzEwNzIsIG4gPSB1IDw8IDE5IHwgbiB8IDE2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIHwgMjA5NzE1MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCEobiAmIDM5NjApIHwgbiAmIDE2Nzc3MzQ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbiA+Pj4gMyB8IDAsIGcgPSBPICsgKElbZVtrICsgMTA4ID4+IDJdICsgKHQgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBjID0gZVtnID4+IDJdLCBpID0gZVtjID4+IDJdLCBmID0gZiAtIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwID49IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsIHUgPSBlW2MgKyA0ID4+IDJdLCBmICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2MgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpID8gIUMgOiBDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVtjICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW2MgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIGMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCB1ID0gdSA/IEMgOiAhQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSByIC0gNCB8IDAsIHUgPSBlW3IgKyA0ID4+IDJdID4+PiAyMCAmIDQgfCAoZVtCID4+IDJdID4+PiAyMiAmIDEgfCAobiA+Pj4gMTUgJiAxNiB8IChuID4+PiAxOSAmIDY0IHwgdCAmIDE3MCkpKSwgZyA9IE8gKyAoSVt1ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIHkgPSBlW2cgPj4gMl0sIGkgPSBlW3kgPj4gMl0sIGYgPSBmIC0gaSB8IDAsIEogPSAoUCA8PCAyKSArIHcgfCAwLCB0ID0gSVt1ICsgMzk3NzYgfCAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPj0gaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgLSAoaSA8PCAxNikgfCAwLCB1ID0gZVt5ICsgNCA+PiAyXSwgZiAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGVbeSArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVt5ICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IGwgKyAxIHwgMCwgeSA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAoeSA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9ICh5IDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpID8gIWMgOiBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gZVt5ICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW3kgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgeSA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKHkgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5ID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKHkgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSwgdSA9IHUgPyBjIDogIWM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1LCBlW0ogPj4gMl0gPSAodCB8IDApID09IChpIHwgMCkgPyBvIDogdiwgZVtCID4+IDJdID0gZVtCID4+IDJdIHwgMjU2LCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSB8IDY0LCBuID0gKGkgXiB0KSA8PCAyMiB8IG4gfCAxMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4gfCAxNjc3NzIxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCEobiAmIDMxNjgwKSB8IG4gJiAxMzQyMTg3NTIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBuID4+PiA2IHwgMCwgZyA9IE8gKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAodCAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIGMgPSBlW2cgPj4gMl0sIGkgPSBlW2MgPj4gMl0sIGYgPSBmIC0gaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPj0gaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgdSA9IGVbYyArIDQgPj4gMl0sIGYgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQyA9IGVbYyArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtjICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIGMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBsID0gOCwgYSA9IChjIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9IChjIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGkgPyAhQyA6IEM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgYyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBsID0gOCwgYSA9IChjIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIHUgPSB1ID8gQyA6ICFDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IHIgLSA0IHwgMCwgdSA9IGVbciArIDQgPj4gMl0gPj4+IDIzICYgNCB8IChlW0IgPj4gMl0gPj4+IDI1ICYgMSB8IChuID4+PiAxOCAmIDE2IHwgKG4gPj4+IDIyICYgNjQgfCB0ICYgMTcwKSkpLCBnID0gTyArIChJW3UgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgeSA9IGVbZyA+PiAyXSwgaSA9IGVbeSA+PiAyXSwgZiA9IGYgLSBpIHwgMCwgSiA9IHMgKyB3IHwgMCwgdCA9IElbdSArIDM5Nzc2IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwID49IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgdSA9IGVbeSArIDQgPj4gMl0sIGYgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGMgPSBlW3kgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbeSArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIHkgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKHkgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5ID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAoeSA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaSA/ICFjIDogYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGVbeSArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVt5ICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIHkgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBsID0gOCwgYSA9ICh5IDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeSA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9ICh5IDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIHUgPSB1ID8gYyA6ICFjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdSwgZVtKID4+IDJdID0gKHQgfCAwKSA9PSAoaSB8IDApID8gbyA6IHYsIGVbQiA+PiAyXSA9IGVbQiA+PiAyXSB8IDIwNDgsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgNTEyLCBuID0gKGkgXiB0KSA8PCAyNSB8IG4gfCAxMDI0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIHwgMTM0MjE3NzI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIShuICYgMjUzNDQwKSB8IG4gJiAxMDczNzUwMDE2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbiA+Pj4gOSB8IDAsIGcgPSBPICsgKElbZVtrICsgMTA4ID4+IDJdICsgKHQgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBjID0gZVtnID4+IDJdLCBpID0gZVtjID4+IDJdLCBmID0gZiAtIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwID49IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsIHUgPSBlW2MgKyA0ID4+IDJdLCBmICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2MgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpID8gIUMgOiBDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVtjICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW2MgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIGMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCB1ID0gdSA/IEMgOiAhQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSByIC0gNCB8IDAsIHUgPSBlW3IgKyA0ID4+IDJdID4+PiAyNiAmIDQgfCAoZVtCID4+IDJdID4+PiAyOCAmIDEgfCAobiA+Pj4gMjEgJiAxNiB8IChuID4+PiAyNSAmIDY0IHwgdCAmIDE3MCkpKSwgZyA9IE8gKyAoSVt1ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIHkgPSBlW2cgPj4gMl0sIGkgPSBlW3kgPj4gMl0sIGYgPSBmIC0gaSB8IDAsIEogPSB3ICsgRSB8IDAsIHQgPSBJW3UgKyAzOTc3NiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA+PSBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsIHUgPSBlW3kgKyA0ID4+IDJdLCBmICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gZVt5ICsgNCA+PiAyXSwgaSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW3kgKyAoaSA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCB5ID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBsID0gOCwgYSA9ICh5IDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeSA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKHkgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGkgPyAhYyA6IGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGMgPSBlW3kgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbeSArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCB5ID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoeSA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGEgPSAoeSA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCB1ID0gdSA/IGMgOiAhYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHUsIGVbSiA+PiAyXSA9ICh0IHwgMCkgPT0gKGkgfCAwKSA/IG8gOiB2LCBlW0IgPj4gMl0gPSBlW0IgPj4gMl0gfCAxNjM4NCwgZVtyICsgNCA+PiAyXSA9IGVbciArIDQgPj4gMl0gfCA0MDk2LCB1ID0gciArIChlW2sgKyAxMjQgPj4gMl0gPDwgMikgfCAwLCBlW3UgKyA0ID4+IDJdID0gZVt1ICsgNCA+PiAyXSB8IDQsIGVbdSArIDEyID4+IDJdID0gZVt1ICsgMTIgPj4gMl0gfCAxLCBpID0gaSBeIHQsIGVbdSArIDggPj4gMl0gPSBlW3UgKyA4ID4+IDJdIHwgaSA8PCAxOCB8IDIsIG4gPSBpIDw8IDI4IHwgbiB8IDgxOTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4gfCAxMDczNzQxODI0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtyID4+IDJdID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSByICsgNCB8IDAsIHcgPSB3ICsgNCB8IDAsIEggPSBIICsgMSB8IDAsIChQIHwgMCkgPT0gKEggfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gciArIDEyIHwgMCwgdyA9IHcgKyBFIHwgMCwgaCA9IGggKyA0IHwgMCwgaSA9IGVbayArIDEyOCA+PiAyXSwgIShoID4+PiAwIDwgKGkgJiAtNCkgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGkgJiAtNCwgbiA9IChuID4+PiAwIDw9IDQgPyA0IDogbikgLSAxIHwgMCwgaCA9IChuICYgLTQpICsgNCB8IDAsIG4gPSAodiArIChuIDw8IDEgJiAtOCkgfCAwKSArIDIwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtrICsgOCA+PiAyXSA9IGwsIGVbayArIDQgPj4gMl0gPSBmLCBlW2sgPj4gMl0gPSBhLCBlW2sgKyAxMDQgPj4gMl0gPSBnLCAhUCB8IGkgPj4+IDAgPD0gaCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IChpIHwgMCkgPT0gKGggfCAwKSwgbCA9IDAsIGkgPSBoLCAhZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBINChrLCBuLCAoWihsLCBQKSA8PCAyKSArIHcgfCAwLCBvLCBsLCBlW2sgKyAxMjQgPj4gMl0gKyAyIHwgMCwgMCksIGwgPSBsICsgMSB8IDAsIGkgPSBlW2sgKyAxMjggPj4gMl0sIGwgPj4+IDAgPCBpIC0gaCA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgNCB8IDAsIHcgPSB3ICsgNCB8IDAsIG0gPSBtICsgMSB8IDAsIChQIHwgMCkgPT0gKG0gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID0gaSwgciA9IG4sIG4gPSBlW3IgPj4gMl0sIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiAmIDIwOTcxNjggfHwgKGkgPSBuICYgNDk1LCAhaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gSCArIChJW2kgKyBlW2sgKyAxMDggPj4gMl0gfCAwXSA8PCAyKSB8IDAsIHQgPSBlW2cgPj4gMl0sIGkgPSBlW3QgPj4gMl0sIGYgPSBmIC0gaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA8IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW3QgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbdCArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgdCA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKHQgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKHQgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSwgaSA9IHUgPyB3IDogIXc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgLSAoaSA8PCAxNikgfCAwLCAhKGYgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW3QgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbdCArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IGwgKyAxIHwgMCwgdCA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKHQgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKHQgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSA/ICF3IDogdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW3QgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHIgLSA0IHwgMCwgdSA9IGVbciArIDQgPj4gMl0gPj4+IDE3ICYgNCB8IChlW3MgPj4gMl0gPj4+IDE5ICYgMSB8IChuID4+PiAxNCAmIDE2IHwgKG4gPj4+IDE2ICYgNjQgfCBuICYgMTcwKSkpLCBnID0gSCArIChJW3UgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgYyA9IGVbZyA+PiAyXSwgaSA9IGVbYyA+PiAyXSwgZiA9IGYgLSBpIHwgMCwgdyA9IElbdSArIDM5Nzc2IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPCBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW2MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKGMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIGkgPSB1ID8gdCA6ICF0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgIShmICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW2MgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKGMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgPyAhdCA6IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtjICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3YgPj4gMl0gPSAodyB8IDApID09IChpIHwgMCkgPyBoIDogbywgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMzIsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgOCwgbiA9IChpIF4gdykgPDwgMTkgfCBuIHwgMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbiB8IDIwOTcxNTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCEobiAmIDM5NjApIHwgbiAmIDE2Nzc3MzQ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG4gPj4+IDMgfCAwLCBnID0gSCArIChJW2VbayArIDEwOCA+PiAyXSArICh3ICYgNDk1KSB8IDBdIDw8IDIpIHwgMCwgcyA9IGVbZyA+PiAyXSwgaSA9IGVbcyA+PiAyXSwgZiA9IGYgLSBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwIDwgaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbcyArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtzICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBzID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGEgPSAocyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAocyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCBpID0gdSA/IHQgOiAhdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsICEoZiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbcyArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtzICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBzID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAocyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAocyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpID8gIXQgOiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbcyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gciAtIDQgfCAwLCB1ID0gZVtyICsgNCA+PiAyXSA+Pj4gMjAgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gMjIgJiAxIHwgKG4gPj4+IDE1ICYgMTYgfCAobiA+Pj4gMTkgJiA2NCB8IHcgJiAxNzApKSksIGcgPSBIICsgKElbdSArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBjID0gZVtnID4+IDJdLCBpID0gZVtjID4+IDJdLCBmID0gZiAtIGkgfCAwLCB3ID0gSVt1ICsgMzk3NzYgfCAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA8IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbYyArIDQgPj4gMl0sIHUgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtjICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIGMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSwgaSA9IHUgPyB0IDogIXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgLSAoaSA8PCAxNikgfCAwLCAhKGYgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbYyArIDQgPj4gMl0sIGkgPSBpID4+PiAwID4gZiA+Pj4gMCwgZVtnID4+IDJdID0gZVtjICsgKGkgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIGMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGEgPSAoYyA8PCA5KSArIGEgfCAwLCBsID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgbCA9IDgsIGEgPSAoYyA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSA/ICF0IDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2MgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdiArIDI1NiA+PiAyXSA9ICh3IHwgMCkgPT0gKGkgfCAwKSA/IGggOiBvLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAyNTYsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgNjQsIG4gPSAoaSBeIHcpIDw8IDIyIHwgbiB8IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIHwgMTY3NzcyMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCEobiAmIDMxNjgwKSB8IG4gJiAxMzQyMTg3NTIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gbiA+Pj4gNiB8IDAsIGcgPSBIICsgKElbZVtrICsgMTA4ID4+IDJdICsgKHcgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBzID0gZVtnID4+IDJdLCBpID0gZVtzID4+IDJdLCBmID0gZiAtIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPCBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtzICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW3MgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGYgPSBsICsgMSB8IDAsIHMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9IChzIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBsID0gOCwgYSA9IChzIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIGkgPSB1ID8gdCA6ICF0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgIShmICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtzICsgNCA+PiAyXSwgaSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW3MgKyAoaSA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIHUgPSBsICsgMSB8IDAsIHMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9IChzIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBsID0gOCwgYSA9IChzIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgPyAhdCA6IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtzICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByIC0gNCB8IDAsIHUgPSBlW3IgKyA0ID4+IDJdID4+PiAyMyAmIDQgfCAoZVtzID4+IDJdID4+PiAyNSAmIDEgfCAobiA+Pj4gMTggJiAxNiB8IChuID4+PiAyMiAmIDY0IHwgdyAmIDE3MCkpKSwgZyA9IEggKyAoSVt1ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIGMgPSBlW2cgPj4gMl0sIGkgPSBlW2MgPj4gMl0sIGYgPSBmIC0gaSB8IDAsIHcgPSBJW3UgKyAzOTc3NiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwIDwgaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtjICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW2MgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgYyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgYSA9IChjIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBsID0gOCwgYSA9IChjIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLCBpID0gdSA/IHQgOiAhdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSAtIChpIDw8IDE2KSB8IDAsICEoZiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtjICsgNCA+PiAyXSwgaSA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW2MgKyAoaSA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IGwgKyAxIHwgMCwgYyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGEgPSBhICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgYSA9IChjIDw8IDkpICsgYSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBsID0gOCwgYSA9IChjIDw8IDgpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gMSB8IDAsIGEgPSBhIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpID8gIXQgOiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbYyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt2ICsgNTEyID4+IDJdID0gKHcgfCAwKSA9PSAoaSB8IDApID8gaCA6IG8sIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSB8IDIwNDgsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgNTEyLCBuID0gKGkgXiB3KSA8PCAyNSB8IG4gfCAxMDI0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4gfCAxMzQyMTc3Mjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCEobiAmIDI1MzQ0MCkgfCBuICYgMTA3Mzc1MDAxNikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBuID4+PiA5IHwgMCwgZyA9IEggKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAodyAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIHMgPSBlW2cgPj4gMl0sIGkgPSBlW3MgPj4gMl0sIGYgPSBmIC0gaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA8IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW3MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbcyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgZiA9IGwgKyAxIHwgMCwgcyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKHMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKHMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSwgaSA9IHUgPyB0IDogIXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgLSAoaSA8PCAxNikgfCAwLCAhKGYgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW3MgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbcyArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IGwgKyAxIHwgMCwgcyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKHMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKHMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBhID0gYSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSA/ICF0IDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW3MgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHIgLSA0IHwgMCwgdSA9IGVbciArIDQgPj4gMl0gPj4+IDI2ICYgNCB8IChlW3MgPj4gMl0gPj4+IDI4ICYgMSB8IChuID4+PiAyMSAmIDE2IHwgKG4gPj4+IDI1ICYgNjQgfCB3ICYgMTcwKSkpLCBnID0gSCArIChJW3UgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgYyA9IGVbZyA+PiAyXSwgaSA9IGVbYyA+PiAyXSwgZiA9IGYgLSBpIHwgMCwgdyA9IElbdSArIDM5Nzc2IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMTYgPj4+IDAgPCBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW2MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBmID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIGwgPSA4LCBhID0gKGMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGksIGkgPSB1ID8gdCA6ICF0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGkgPDwgMTYpIHwgMCwgIShmICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW2MgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbYyArIChpID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCB1ID0gbCArIDEgfCAwLCBjID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBhID0gKGMgPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIGwgPSA4LCBhID0gKGMgPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgYSA9IGEgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgPyAhdCA6IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtjICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3YgKyA3NjggPj4gMl0gPSAodyB8IDApID09IChpIHwgMCkgPyBoIDogbywgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMTYzODQsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgNDA5NiwgZVtyICsgMjYwID4+IDJdID0gZVtyICsgMjYwID4+IDJdIHwgNCwgZVtyICsgMjY4ID4+IDJdID0gZVtyICsgMjY4ID4+IDJdIHwgMSwgaSA9IGkgXiB3LCBlW3IgKyAyNjQgPj4gMl0gPSBlW3IgKyAyNjQgPj4gMl0gfCBpIDw8IDE4IHwgMiwgbiA9IGkgPDwgMjggfCBuIHwgODE5MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIHwgMTA3Mzc0MTgyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtyID4+IDJdID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHIgKyA0IHwgMCwgaSA9IHYgKyA0IHwgMCwgbSA9IG0gKyAxIHwgMCwgKG0gfCAwKSA9PSA2NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gciArIDEyIHwgMCwgaSA9IHYgKyA3NzIgfCAwLCB2ID0gQyA+Pj4gMCA8IDYwLCBDID0gQyArIDQgfCAwLCAhdikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDggPj4gMl0gPSBsLCBlW2sgKyA0ID4+IDJdID0gZiwgZVtrID4+IDJdID0gYSwgZVtrICsgMTA0ID4+IDJdID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFIMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9IDEgPDwgcDIgPj4+IDEgfCAwLCBzID0gZVtrICsgMTI0ID4+IDJdLCB1ID0gcyA8PCAyLCBpID0gKHUgKyBlW2sgKyAxMjAgPj4gMl0gfCAwKSArIDEyIHwgMCwgbiA9IGVbayArIDExNiA+PiAyXSwgbCA9IDAsIGYgPSBlW2sgKyAxMjggPj4gMl0sIGYgPj4+IDAgPj0gNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gWihzLCAxMiksIHIgPSBzIDw8IDMsIEMgPSAwIC0gYyB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaSwgaSA9IGVbaSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpICYgMjA5NzE2OCkgPT0gMTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2sgPj4gMl0sIHQgPSBlW2sgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKGkgfCAwKSA9PSAyNTUsIHYgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IElbdiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHYgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHYgKyAxLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAyNTUsIGVbayA+PiAyXSA9IDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0IC0gMSB8IDAsIGVbayArIDggPj4gMl0gPSBoLCB2ID0gaSA+Pj4gaCAmIDEsIGkgPSBlW24gPj4gMl0sIGVbbiA+PiAyXSA9ICgodiB8IDApID09IChpID4+PiAzMSB8IDApID8gQyA6IGMpICsgaSwgaSA9IGVbbyA+PiAyXSB8IDEwNDg1NzYsIGVbbyA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSAmIDE2Nzc3MzQ0KSA9PSAxMjgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2sgPj4gMl0sIHQgPSBlW2sgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKGkgfCAwKSA9PSAyNTUsIHYgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IElbdiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHYgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHYgKyAxLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAyNTUsIGVbayA+PiAyXSA9IDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0IC0gMSB8IDAsIGVbayArIDggPj4gMl0gPSB2LCBoID0gbiArIHUgfCAwLCBhID0gZVtoID4+IDJdLCBlW2ggPj4gMl0gPSBhICsgKChpID4+PiB2ICYgMSkgPT0gKGEgPj4+IDMxIHwgMCkgPyBDIDogYyksIGkgPSBlW28gPj4gMl0gfCA4Mzg4NjA4LCBlW28gPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgJiAxMzQyMTg3NTIpID09IDEwMjQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2sgPj4gMl0sIHQgPSBlW2sgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKGkgfCAwKSA9PSAyNTUsIHYgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IElbdiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHYgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHYgKyAxLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAyNTUsIGVbayA+PiAyXSA9IDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0IC0gMSB8IDAsIGVbayArIDggPj4gMl0gPSB2LCBoID0gciArIG4gfCAwLCBhID0gZVtoID4+IDJdLCBlW2ggPj4gMl0gPSBhICsgKChpID4+PiB2ICYgMSkgPT0gKGEgPj4+IDMxIHwgMCkgPyBDIDogYyksIGkgPSBlW28gPj4gMl0gfCA2NzEwODg2NCwgZVtvID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpICYgMTA3Mzc1MDAxNikgIT0gODE5MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbayA+PiAyXSwgdCA9IGVbayArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKGkgfCAwKSA9PSAyNTUsIHYgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IElbdiB8IDBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHYgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrID4+IDJdID0gaSwgZVtrICsgMTYgPj4gMl0gPSB2ICsgMSwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMjU1LCBlW2sgPj4gMl0gPSAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHQgLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IHYsIGggPSBuICsgdyB8IDAsIGEgPSBlW2ggPj4gMl0sIGVbaCA+PiAyXSA9IGEgKyAoKGkgPj4+IHYgJiAxKSA9PSAoYSA+Pj4gMzEgfCAwKSA/IEMgOiBjKSwgZVtvID4+IDJdID0gZVtvID4+IDJdIHwgNTM2ODcwOTEyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbiArIDQgfCAwLCBpID0gbyArIDQgfCAwLCBmID0gZiArIDEgfCAwLCAocyB8IDApID09IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IG4gKyB3IHwgMCwgaSA9IG8gKyAxMiB8IDAsIGwgPSBsICsgNCB8IDAsIGYgPSBlW2sgKyAxMjggPj4gMl0sICEobCA+Pj4gMCA8IChmICYgLTQpID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcyB8IGYgPj4+IDAgPD0gbCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG0gPSAwLCBoID0gMCAtIGMgfCAwLCByID0gZjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA9PSAobCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtpID4+IDJdLCBCID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBaKEIsIDMpLCAoMjA5NzE2OCA8PCB1ICYgdCkgPT0gMTYgPDwgdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAoWihzLCBCKSA8PCAyKSArIG4gfCAwLCBmID0gZVtrID4+IDJdLCBnID0gZVtrICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAoZiB8IDApICE9IDI1NSwgdiA9IGVbayArIDE2ID4+IDJdLCBmID0gSVt2IHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IDI1NSwgZVtrID4+IDJdID0gMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrID4+IDJdID0gZiwgZVtrICsgMTYgPj4gMl0gPSB2ICsgMSwgZyA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBmLCBlW2sgKyAxNiA+PiAyXSA9IHYgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBnIC0gMSB8IDAsIGVbayArIDggPj4gMl0gPSBvLCBvID0gZiA+Pj4gbyAmIDEsIGYgPSBlW3IgPj4gMl0sIGVbciA+PiAyXSA9ICgobyB8IDApID09IChmID4+PiAzMSB8IDApID8gaCA6IGMpICsgZiwgdCA9IGVbaSA+PiAyXSB8IDEwNDg1NzYgPDwgdSwgZVtpID4+IDJdID0gdCwgZiA9IGVbayArIDEyOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9IEIgKyAxIHwgMCwgciA9IGYsICEoQiA+Pj4gMCA8IGYgLSBsID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgNCB8IDAsIGkgPSBpICsgNCB8IDAsIG0gPSBtICsgMSB8IDAsIChzIHwgMCkgPT0gKG0gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbayArIDEyMCA+PiAyXSwgciA9IGVbayArIDExNiA+PiAyXSwgRSA9IGVbayArIDEyNCA+PiAyXSwgZiA9IGVbayArIDEyOCA+PiAyXSwgISgoRSB8IDApICE9IDY0IHwgKGYgfCAwKSAhPSA2NCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmID0gaCArIDI2OCB8IDAsIG0gPSAwLCBzID0gMSA8PCBwMiA+Pj4gMSB8IDAsIEMgPSAwIC0gcyB8IDAsIEIgPSBlW2sgKyA4ID4+IDJdLCBuID0gZVtrICsgNCA+PiAyXSwgaSA9IGVbayA+PiAyXSwgbCA9IGVbayArIDEwNCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPSByLCBoID0gZiwgciA9IGVbZiA+PiAyXSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGYsIChyICYgMjA5NzE2OCkgPT0gMTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTDIgKyAoKHIgJiAxMDQ4NTc2ID8gMTYgOiByICYgNDk1ID8gMTUgOiAxNCkgPDwgMikgfCAwLCBhID0gZVtsID4+IDJdLCBmID0gZVthID4+IDJdLCBuID0gbiAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVthICsgNCA+PiAyXSwgdSA9IGYgPj4+IDAgPiBuID4+PiAwLCBlW2wgPj4gMl0gPSBlW2EgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbayArIDE2ID4+IDJdLCBuID0gYSArIDEgfCAwLCB0ID0gSVthICsgMSB8IDBdLCBJW2EgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGkgPSBpICsgNjUyODAgfCAwLCBCID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgaSA9ICh0IDw8IDkpICsgaSB8IDAsIEIgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCBCID0gOCwgaSA9ICh0IDw8IDgpICsgaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiAtIDEgfCAwLCBpID0gaSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZiwgdSA9IHUgPyB3IDogIXc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgLSAoZiA8PCAxNikgfCAwLCAhKG4gJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVthICsgNCA+PiAyXSwgZiA9IGYgPj4+IDAgPiBuID4+PiAwLCBlW2wgPj4gMl0gPSBlW2EgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbayArIDE2ID4+IDJdLCB1ID0gYSArIDEgfCAwLCB0ID0gSVthICsgMSB8IDBdLCBJW2EgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGkgPSBpICsgNjUyODAgfCAwLCBCID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgaSA9ICh0IDw8IDkpICsgaSB8IDAsIEIgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBCID0gOCwgaSA9ICh0IDw8IDgpICsgaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiAtIDEgfCAwLCBpID0gaSA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZiA/ICF3IDogdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW2EgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt2ID4+IDJdLCBlW3YgPj4gMl0gPSAoKHUgfCAwKSA9PSAoZiA+Pj4gMzEgfCAwKSA/IEMgOiBzKSArIGYsIHIgPSByIHwgMTA0ODU3NjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIgJiAxNjc3NzM0NCkgPT0gMTI4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IEwyICsgKChyICYgODM4ODYwOCA/IDE2IDogciAmIDM5NjAgPyAxNSA6IDE0KSA8PCAyKSB8IDAsIGEgPSBlW2wgPj4gMl0sIGYgPSBlW2EgPj4gMl0sIG4gPSBuIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDE2ID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW2EgKyA0ID4+IDJdLCB1ID0gZiA+Pj4gMCA+IG4gPj4+IDAsIGVbbCA+PiAyXSA9IGVbYSArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtrICsgMTYgPj4gMl0sIG4gPSBhICsgMSB8IDAsIHQgPSBJW2EgKyAxIHwgMF0sIElbYSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgaSA9IGkgKyA2NTI4MCB8IDAsIEIgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCBpID0gKHQgPDwgOSkgKyBpIHwgMCwgQiA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIEIgPSA4LCBpID0gKHQgPDwgOCkgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBCIC0gMSB8IDAsIGkgPSBpIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmLCB1ID0gdSA/IHcgOiAhdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSAtIChmIDw8IDE2KSB8IDAsICEobiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW2EgKyA0ID4+IDJdLCBmID0gZiA+Pj4gMCA+IG4gPj4+IDAsIGVbbCA+PiAyXSA9IGVbYSArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtrICsgMTYgPj4gMl0sIHUgPSBhICsgMSB8IDAsIHQgPSBJW2EgKyAxIHwgMF0sIElbYSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgaSA9IGkgKyA2NTI4MCB8IDAsIEIgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBpID0gKHQgPDwgOSkgKyBpIHwgMCwgQiA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIEIgPSA4LCBpID0gKHQgPDwgOCkgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBCIC0gMSB8IDAsIGkgPSBpIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBmID8gIXcgOiB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbYSArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3YgKyAyNTYgPj4gMl0sIGVbdiArIDI1NiA+PiAyXSA9ICgodSB8IDApID09IChmID4+PiAzMSB8IDApID8gQyA6IHMpICsgZiwgciA9IHIgfCA4Mzg4NjA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgociAmIDEzNDIxODc1MikgPT0gMTAyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBMMiArICgociAmIDY3MTA4ODY0ID8gMTYgOiByICYgMzE2ODAgPyAxNSA6IDE0KSA8PCAyKSB8IDAsIGEgPSBlW2wgPj4gMl0sIGYgPSBlW2EgPj4gMl0sIG4gPSBuIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDE2ID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW2EgKyA0ID4+IDJdLCB1ID0gZiA+Pj4gMCA+IG4gPj4+IDAsIGVbbCA+PiAyXSA9IGVbYSArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtrICsgMTYgPj4gMl0sIG4gPSBhICsgMSB8IDAsIHQgPSBJW2EgKyAxIHwgMF0sIElbYSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgaSA9IGkgKyA2NTI4MCB8IDAsIEIgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCBpID0gKHQgPDwgOSkgKyBpIHwgMCwgQiA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIEIgPSA4LCBpID0gKHQgPDwgOCkgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBCIC0gMSB8IDAsIGkgPSBpIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmLCB1ID0gdSA/IHcgOiAhdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSAtIChmIDw8IDE2KSB8IDAsICEobiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW2EgKyA0ID4+IDJdLCBmID0gZiA+Pj4gMCA+IG4gPj4+IDAsIGVbbCA+PiAyXSA9IGVbYSArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtrICsgMTYgPj4gMl0sIHUgPSBhICsgMSB8IDAsIHQgPSBJW2EgKyAxIHwgMF0sIElbYSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgaSA9IGkgKyA2NTI4MCB8IDAsIEIgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBpID0gKHQgPDwgOSkgKyBpIHwgMCwgQiA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIEIgPSA4LCBpID0gKHQgPDwgOCkgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBCIC0gMSB8IDAsIGkgPSBpIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBmID8gIXcgOiB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbYSArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3YgKyA1MTIgPj4gMl0sIGVbdiArIDUxMiA+PiAyXSA9ICgodSB8IDApID09IChmID4+PiAzMSB8IDApID8gQyA6IHMpICsgZiwgciA9IHIgfCA2NzEwODg2NDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIgJiAxMDczNzUwMDE2KSA9PSA4MTkyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IEwyICsgKChyICYgNTM2ODcwOTEyID8gMTYgOiByICYgMjUzNDQwID8gMTUgOiAxNCkgPDwgMikgfCAwLCBhID0gZVtsID4+IDJdLCBmID0gZVthID4+IDJdLCBuID0gbiAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVthICsgNCA+PiAyXSwgdSA9IGYgPj4+IDAgPiBuID4+PiAwLCBlW2wgPj4gMl0gPSBlW2EgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbayArIDE2ID4+IDJdLCBuID0gYSArIDEgfCAwLCB0ID0gSVthICsgMSB8IDBdLCBJW2EgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGkgPSBpICsgNjUyODAgfCAwLCBCID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgaSA9ICh0IDw8IDkpICsgaSB8IDAsIEIgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCBCID0gOCwgaSA9ICh0IDw8IDgpICsgaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiAtIDEgfCAwLCBpID0gaSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZiwgdSA9IHUgPyB3IDogIXc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgLSAoZiA8PCAxNikgfCAwLCAhKG4gJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVthICsgNCA+PiAyXSwgZiA9IGYgPj4+IDAgPiBuID4+PiAwLCBlW2wgPj4gMl0gPSBlW2EgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbayArIDE2ID4+IDJdLCB1ID0gYSArIDEgfCAwLCB0ID0gSVthICsgMSB8IDBdLCBJW2EgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGkgPSBpICsgNjUyODAgfCAwLCBCID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgaSA9ICh0IDw8IDkpICsgaSB8IDAsIEIgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCBCID0gOCwgaSA9ICh0IDw8IDgpICsgaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiAtIDEgfCAwLCBpID0gaSA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZiA/ICF3IDogdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW2EgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt2ICsgNzY4ID4+IDJdLCBlW3YgKyA3NjggPj4gMl0gPSAoKHUgfCAwKSA9PSAoZiA+Pj4gMzEgfCAwKSA/IEMgOiBzKSArIGYsIHIgPSByIHwgNTM2ODcwOTEyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbyA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGggKyA0IHwgMCwgciA9IHYgKyA0IHwgMCwgZyA9IGcgKyAxIHwgMCwgKGcgfCAwKSA9PSA2NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gaCArIDEyIHwgMCwgciA9IHYgKyA3NzIgfCAwLCBvID0gbSA+Pj4gMCA8IDYwLCBtID0gbSArIDQgfCAwLCAhbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDggPj4gMl0gPSBCLCBlW2sgKyA0ID4+IDJdID0gbiwgZVtrID4+IDJdID0gaSwgZVtrICsgMTA0ID4+IDJdID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAxIDw8IHAyID4+PiAxIHwgMCwgdCA9IEUgPDwgMiwgYSA9ICh0ICsgaCB8IDApICsgMTIgfCAwLCBCID0gZVtrICsgOCA+PiAyXSwgbiA9IGVbayArIDQgPj4gMl0sIGkgPSBlW2sgPj4gMl0sIGwgPSBlW2sgKyAxMDQgPj4gMl0sIHcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA+Pj4gMCA8IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHMgPSBaKEUsIDEyKSwgdSA9IEUgPDwgMywgSCA9IDAgLSBtIHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gYSwgaCA9IGVbYSA+PiAyXSwgaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaCAmIDIwOTcxNjgpID09IDE2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTDIgKyAoKGggJiAxMDQ4NTc2ID8gMTYgOiBoICYgNDk1ID8gMTUgOiAxNCkgPDwgMikgfCAwLCBhID0gZVtsID4+IDJdLCBmID0gZVthID4+IDJdLCBuID0gbiAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMTYgPj4+IDAgPj0gZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSAtIChmIDw8IDE2KSB8IDAsIHYgPSBlW2EgKyA0ID4+IDJdLCBuICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQyA9IGVbYSArIDQgPj4gMl0sIGYgPSBmID4+PiAwID4gbiA+Pj4gMCwgZVtsID4+IDJdID0gZVthICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbayArIDE2ID4+IDJdLCB2ID0gYSArIDEgfCAwLCBjID0gSVthICsgMSB8IDBdLCBJW2EgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHYsIEIgPSA4LCBpID0gKGMgPDwgOCkgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdiwgaSA9IChjIDw8IDkpICsgaSB8IDAsIEIgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGkgPSBpICsgNjUyODAgfCAwLCBCID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiAtIDEgfCAwLCBpID0gaSA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gZiA/ICFDIDogQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQyA9IGVbYSArIDQgPj4gMl0sIHYgPSBmID4+PiAwID4gbiA+Pj4gMCwgZVtsID4+IDJdID0gZVthICsgKHYgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBlW2sgKyAxNiA+PiAyXSwgbiA9IGEgKyAxIHwgMCwgYyA9IElbYSArIDEgfCAwXSwgSVthIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgQiA9IDgsIGkgPSAoYyA8PCA4KSArIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgaSA9IChjIDw8IDkpICsgaSB8IDAsIEIgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIGkgPSBpICsgNjUyODAgfCAwLCBCID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBCIC0gMSB8IDAsIGkgPSBpIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmLCB2ID0gdiA/IEMgOiAhQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3IgPj4gMl0sIGVbciA+PiAyXSA9ICgodiB8IDApID09IChmID4+PiAzMSB8IDApID8gSCA6IG0pICsgZiwgaCA9IGggfCAxMDQ4NTc2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggJiAxNjc3NzM0NCkgPT0gMTI4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTDIgKyAoKGggJiA4Mzg4NjA4ID8gMTYgOiBoICYgMzk2MCA/IDE1IDogMTQpIDw8IDIpIHwgMCwgYSA9IGVbbCA+PiAyXSwgZiA9IGVbYSA+PiAyXSwgbiA9IG4gLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDE2ID4+PiAwID49IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgLSAoZiA8PCAxNikgfCAwLCB2ID0gZVthICsgNCA+PiAyXSwgbiAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2EgKyA0ID4+IDJdLCBmID0gZiA+Pj4gMCA+IG4gPj4+IDAsIGVbbCA+PiAyXSA9IGVbYSArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBlW2sgKyAxNiA+PiAyXSwgdiA9IGEgKyAxIHwgMCwgYyA9IElbYSArIDEgfCAwXSwgSVthIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB2LCBCID0gOCwgaSA9IChjIDw8IDgpICsgaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHYsIGkgPSAoYyA8PCA5KSArIGkgfCAwLCBCID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBpID0gaSArIDY1MjgwIHwgMCwgQiA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9IEIgLSAxIHwgMCwgaSA9IGkgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGYgPyAhQyA6IEM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2EgKyA0ID4+IDJdLCB2ID0gZiA+Pj4gMCA+IG4gPj4+IDAsIGVbbCA+PiAyXSA9IGVbYSArICh2ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtrICsgMTYgPj4gMl0sIG4gPSBhICsgMSB8IDAsIGMgPSBJW2EgKyAxIHwgMF0sIElbYSB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIEIgPSA4LCBpID0gKGMgPDwgOCkgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIGkgPSAoYyA8PCA5KSArIGkgfCAwLCBCID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBpID0gaSArIDY1MjgwIHwgMCwgQiA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiAtIDEgfCAwLCBpID0gaSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZiwgdiA9IHYgPyBDIDogIUM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdiwgZiA9IHIgKyB0IHwgMCwgdiA9IGVbZiA+PiAyXSwgZVtmID4+IDJdID0gdiArICgoYSB8IDApID09ICh2ID4+PiAzMSB8IDApID8gSCA6IG0pLCBoID0gaCB8IDgzODg2MDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaCAmIDEzNDIxODc1MikgPT0gMTAyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IEwyICsgKChoICYgNjcxMDg4NjQgPyAxNiA6IGggJiAzMTY4MCA/IDE1IDogMTQpIDw8IDIpIHwgMCwgYSA9IGVbbCA+PiAyXSwgZiA9IGVbYSA+PiAyXSwgbiA9IG4gLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDE2ID4+PiAwID49IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgLSAoZiA8PCAxNikgfCAwLCB2ID0gZVthICsgNCA+PiAyXSwgbiAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2EgKyA0ID4+IDJdLCBmID0gZiA+Pj4gMCA+IG4gPj4+IDAsIGVbbCA+PiAyXSA9IGVbYSArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBlW2sgKyAxNiA+PiAyXSwgdiA9IGEgKyAxIHwgMCwgYyA9IElbYSArIDEgfCAwXSwgSVthIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB2LCBCID0gOCwgaSA9IChjIDw8IDgpICsgaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHYsIGkgPSAoYyA8PCA5KSArIGkgfCAwLCBCID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBpID0gaSArIDY1MjgwIHwgMCwgQiA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9IEIgLSAxIHwgMCwgaSA9IGkgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGYgPyAhQyA6IEM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSBlW2EgKyA0ID4+IDJdLCB2ID0gZiA+Pj4gMCA+IG4gPj4+IDAsIGVbbCA+PiAyXSA9IGVbYSArICh2ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtrICsgMTYgPj4gMl0sIG4gPSBhICsgMSB8IDAsIGMgPSBJW2EgKyAxIHwgMF0sIElbYSB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIEIgPSA4LCBpID0gKGMgPDwgOCkgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIGkgPSAoYyA8PCA5KSArIGkgfCAwLCBCID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBpID0gaSArIDY1MjgwIHwgMCwgQiA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiAtIDEgfCAwLCBpID0gaSA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZiwgdiA9IHYgPyBDIDogIUM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdiwgZiA9IHIgKyB1IHwgMCwgdiA9IGVbZiA+PiAyXSwgZVtmID4+IDJdID0gdiArICgoYSB8IDApID09ICh2ID4+PiAzMSB8IDApID8gSCA6IG0pLCBoID0gaCB8IDY3MTA4ODY0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggJiAxMDczNzUwMDE2KSA9PSA4MTkyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTDIgKyAoKGggJiA1MzY4NzA5MTIgPyAxNiA6IGggJiAyNTM0NDAgPyAxNSA6IDE0KSA8PCAyKSB8IDAsIGEgPSBlW2wgPj4gMl0sIGYgPSBlW2EgPj4gMl0sIG4gPSBuIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAxNiA+Pj4gMCA+PSBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBpIC0gKGYgPDwgMTYpIHwgMCwgdiA9IGVbYSArIDQgPj4gMl0sIG4gJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVthICsgNCA+PiAyXSwgZiA9IGYgPj4+IDAgPiBuID4+PiAwLCBlW2wgPj4gMl0gPSBlW2EgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtrICsgMTYgPj4gMl0sIHYgPSBhICsgMSB8IDAsIGMgPSBJW2EgKyAxIHwgMF0sIElbYSB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdiwgQiA9IDgsIGkgPSAoYyA8PCA4KSArIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB2LCBpID0gKGMgPDwgOSkgKyBpIHwgMCwgQiA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgaSA9IGkgKyA2NTI4MCB8IDAsIEIgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBCIC0gMSB8IDAsIGkgPSBpIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBmID8gIUMgOiBDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVthICsgNCA+PiAyXSwgdiA9IGYgPj4+IDAgPiBuID4+PiAwLCBlW2wgPj4gMl0gPSBlW2EgKyAodiA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbayArIDE2ID4+IDJdLCBuID0gYSArIDEgfCAwLCBjID0gSVthICsgMSB8IDBdLCBJW2EgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCBCID0gOCwgaSA9IChjIDw8IDgpICsgaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCBpID0gKGMgPDwgOSkgKyBpIHwgMCwgQiA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgaSA9IGkgKyA2NTI4MCB8IDAsIEIgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9IEIgLSAxIHwgMCwgaSA9IGkgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGYsIHYgPSB2ID8gQyA6ICFDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHYsIGYgPSByICsgcyB8IDAsIHYgPSBlW2YgPj4gMl0sIGVbZiA+PiAyXSA9IHYgKyAoKGEgfCAwKSA9PSAodiA+Pj4gMzEgfCAwKSA/IEggOiBtKSwgaCA9IGggfCA1MzY4NzA5MTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbyA+PiAyXSA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBvICsgNCB8IDAsIHIgPSByICsgNCB8IDAsIGcgPSBnICsgMSB8IDAsIChFIHwgMCkgPT0gKGcgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gbyArIDEyIHwgMCwgciA9IHIgKyBzIHwgMCwgdyA9IHcgKyA0IHwgMCwgZiA9IGVbayArIDEyOCA+PiAyXSwgISh3ID4+PiAwIDwgKGYgJiAtNCkgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZiAmIC00LCBvID0gKG8gPj4+IDAgPD0gNCA/IDQgOiBvKSAtIDEgfCAwLCB3ID0gKG8gJiAtNCkgKyA0IHwgMCwgYSA9IChoICsgKG8gPDwgMSAmIC04KSB8IDApICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbayArIDggPj4gMl0gPSBCLCBlW2sgKyA0ID4+IDJdID0gbiwgZVtrID4+IDJdID0gaSwgZVtrICsgMTA0ID4+IDJdID0gbCwgIUUgfCBmID4+PiAwIDw9IHcgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEggPSAwLCBvID0gMCAtIG0gfCAwLCBpID0gZjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApID09ICh3IHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChCID0gZVthID4+IDJdLCB0ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gWih0LCAzKSwgKDIwOTcxNjggPDwgZyAmIEIpID09IDE2IDw8IGcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IChaKHQsIEUpIDw8IDIpICsgciB8IDAsIGkgPSBCID4+PiBnIHwgMCwgaCA9IEwyICsgKChpICYgMTA0ODU3NiA/IDE2IDogaSAmIDQ5NSA/IDE1IDogMTQpIDw8IDIpIHwgMCwgZVtrICsgMTA0ID4+IDJdID0gaCwgdiA9IGVbaCA+PiAyXSwgaSA9IGVbdiA+PiAyXSwgZiA9IGVbayArIDQgPj4gMl0gLSBpIHwgMCwgZVtrICsgNCA+PiAyXSA9IGYsIG4gPSBlW2sgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA+Pj4gMTYgPj4+IDAgPCBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSBlW3YgKyA0ID4+IDJdLCBlW2sgKyA0ID4+IDJdID0gaSwgZiA9IGkgPj4+IDAgPiBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW3YgKyAoZiA/IDggOiAxMikgPj4gMl0sIEIgPSBlW2sgKyA4ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID0gZVtrICsgMTYgPj4gMl0sIGggPSB2ICsgMSB8IDAsIEMgPSBJW3YgKyAxIHwgMF0sIElbdiB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCBuID0gbiArIDY1MjgwIHwgMCwgQiA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGgsIG4gPSAoQyA8PCA5KSArIG4gfCAwLCBCID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaCwgQiA9IDgsIG4gPSAoQyA8PCA4KSArIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiAtIDEgfCAwLCBlW2sgKyA4ID4+IDJdID0gQiwgbiA9IG4gPDwgMSwgZVtrID4+IDJdID0gbiwgaSA9IGkgPDwgMSwgZVtrICsgNCA+PiAyXSA9IGksICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmID8gdSA6ICF1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuIC0gKGkgPDwgMTYpIHwgMCwgZVtrID4+IDJdID0gbiwgIShmICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSBlW3YgKyA0ID4+IDJdLCBpID0gaSA+Pj4gMCA+IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbdiArIChpID8gMTIgOiA4KSA+PiAyXSwgQiA9IGVbayArIDggPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPSBlW2sgKyAxNiA+PiAyXSwgaCA9IHYgKyAxIHwgMCwgQyA9IElbdiArIDEgfCAwXSwgSVt2IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIG4gPSBuICsgNjUyODAgfCAwLCBCID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaCwgbiA9IChDIDw8IDkpICsgbiB8IDAsIEIgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBoLCBCID0gOCwgbiA9IChDIDw8IDgpICsgbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBCIC0gMSB8IDAsIGVbayArIDggPj4gMl0gPSBCLCBuID0gbiA8PCAxLCBlW2sgPj4gMl0gPSBuLCBmID0gZiA8PCAxLCBlW2sgKyA0ID4+IDJdID0gZiwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGkgPyAhdSA6IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt2ICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtsID4+IDJdLCBlW2wgPj4gMl0gPSAoKGYgfCAwKSA9PSAoaSA+Pj4gMzEgfCAwKSA/IG8gOiBtKSArIGksIEIgPSBlW2EgPj4gMl0gfCAxMDQ4NTc2IDw8IGcsIGVbYSA+PiAyXSA9IEIsIGYgPSBlW2sgKyAxMjggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgKyAxIHwgMCwgaSA9IGYsICEodCA+Pj4gMCA8IGkgLSB3ID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSArIDQgfCAwLCByID0gciArIDQgfCAwLCBIID0gSCArIDEgfCAwLCAoRSB8IDApID09IChIIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAwLCBDID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjMiA9IGVbayArIDEyNCA+PiAyXSwgISgoYzIgfCAwKSAhPSA2NCB8IGVbayArIDEyOCA+PiAyXSAhPSA2NCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAxIDw8IHAyLCBFID0gaSA+Pj4gMSB8IGksIG0gPSAwIC0gRSB8IDAsIHYgPSBrICsgMTAwIHwgMCwgbyA9IGsgKyA5NiB8IDAsIHkgPSBrICsgMjggfCAwLCBuID0gZVtrICsgMTIwID4+IDJdICsgMjY4IHwgMCwgdCA9IGVbayArIDggPj4gMl0sIGkgPSBlW2sgKyA0ID4+IDJdLCByID0gZVtrID4+IDJdLCBoID0gZVtrICsgMTA0ID4+IDJdLCBmID0gZVtrICsgMTE2ID4+IDJdLCBTMiAmIDgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChIID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmLCBsID0gbiwgbiA9IGVbbiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZVtvID4+IDJdLCBuID0gZVtoID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gZVtoICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW28gPj4gMl0gPSBlW2ggKyAoZiA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgaSA9IGggKyAxIHwgMCwgdyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9ICh3IDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9ICh3IDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBmID0gZiA/IHUgOiAhdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gZVtoICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW28gPj4gMl0gPSBlW2ggKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgbiA9IGggKyAxIHwgMCwgdyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgciA9ICh3IDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCB0ID0gOCwgciA9ICh3IDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmID8gIXUgOiB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbaCArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt2ID4+IDJdLCBuID0gZVtmID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVtmICsgNCA+PiAyXSwgaCA9IGkgPj4+IDAgPCBuID4+PiAwLCBmID0gZVsoaCA/IDggOiAxMikgKyBmID4+IDJdLCBlW3YgPj4gMl0gPSBmOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB1ICsgMSB8IDAsIGcgPSBJW3UgKyAxIHwgMF0sIElbdSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgdSA9IGggPyB3IDogIXc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IGVbZiArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZiA9IGVbKG4gPyAxMiA6IDgpICsgZiA+PiAyXSwgZVt2ID4+IDJdID0gZjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbayArIDE2ID4+IDJdLCBoID0gdSArIDEgfCAwLCBnID0gSVt1ICsgMSB8IDBdLCBJW3UgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBoLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGgsIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4gPyAhdyA6IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZVtmICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVtmID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVtmICsgNCA+PiAyXSwgaCA9IGYsIGYgPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVt2ID4+IDJdID0gZVtoICsgKGYgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIGkgPSBoICsgMSB8IDAsIGcgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgZiA9IGYgPyB3IDogIXc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IGVbZiArIDQgPj4gMl0sIGggPSBmLCBmID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbdiA+PiAyXSA9IGVbaCArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbayArIDE2ID4+IDJdLCBuID0gaCArIDEgfCAwLCBnID0gSVtoICsgMSB8IDBdLCBJW2ggfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgPyAhdyA6IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVtmICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMCwgaCA9IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmIHwgdSA8PCAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gbCAtIDQgfCAwLCBoID0gZVtsICsgNCA+PiAyXSA+Pj4gMTcgJiA0IHwgZVtnID4+IDJdID4+PiAxOSAmIDEsIGYgPSB5ICsgKElbaCArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCB1ID0gZVtmID4+IDJdLCBuID0gZVt1ID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVt1ICsgNCA+PiAyXSwgSiA9IGYsIGYgPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtKID4+IDJdID0gZVt1ICsgKGYgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHUgKyAxIHwgMCwgcyA9IElbdSArIDEgfCAwXSwgSVt1IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIHUgPSBmID8gdyA6ICF3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IGVbdSArIDQgPj4gMl0sIEogPSBmLCBmID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbSiA+PiAyXSA9IGVbdSArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gZVtrICsgMTYgPj4gMl0sIG4gPSB1ICsgMSB8IDAsIHMgPSBJW3UgKyAxIHwgMF0sIElbdSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBmID8gIXcgOiB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbdSArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBJW2ggKyAzOTc3NiB8IDBdLCBlW2EgPj4gMl0gPSAodSB8IDApID09IChuIHwgMCkgPyBFIDogbSwgZVtnID4+IDJdID0gZVtnID4+IDJdIHwgMzIsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgOCwgZiA9IGwgLSAyNjggfCAwLCBlW2YgPj4gMl0gPSBlW2YgPj4gMl0gfCAxMzEwNzIsIGYgPSBsIC0gMjYwIHwgMCwgZVtmID4+IDJdID0gZVtmID4+IDJdIHwgMzI3NjgsIGYgPSBsIC0gMjY0IHwgMCwgaCA9IGYsIHcgPSBlW2YgPj4gMl0sIGYgPSBuIF4gdSwgZVtoID4+IDJdID0gdyB8IGYgPDwgMzEgfCA2NTUzNiwgaCA9IGYgPDwgMTksIEIgPSBlW2sgKyAxMDggPj4gMl0sIGYgPSB5ICsgKElbQiArIDIgfCAwXSA8PCAyKSB8IDAsIHUgPSBlW2YgPj4gMl0sIG4gPSBlW3UgPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW3UgKyA0ID4+IDJdLCBKID0gZiwgZiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW0ogPj4gMl0gPSBlW3UgKyAoZiA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbayArIDE2ID4+IDJdLCBpID0gdSArIDEgfCAwLCBnID0gSVt1ICsgMSB8IDBdLCBJW3UgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChnIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChnIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgZiA9IGYgPyB3IDogIXc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVt1ICsgNCA+PiAyXSwgSiA9IGYsIGYgPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtKID4+IDJdID0gZVt1ICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW2sgKyAxNiA+PiAyXSwgbiA9IHUgKyAxIHwgMCwgZyA9IElbdSArIDEgfCAwXSwgSVt1IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgPyAhdyA6IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt1ICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBoIHwgMTYsICFmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBsIC0gNCB8IDAsIHUgPSBlW2wgKyA0ID4+IDJdID4+PiAyMCAmIDQgfCAoZVtzID4+IDJdID4+PiAyMiAmIDEgfCAobiA+Pj4gMTUgJiAxNiB8IChuID4+PiAxOSAmIDY0IHwgbiA+Pj4gMyAmIDE3MCkpKSwgaCA9IHkgKyAoSVt1ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIHcgPSBlW2ggPj4gMl0sIGYgPSBlW3cgPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3cgKyA0ID4+IDJdLCBKID0gaCwgaCA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW0ogPj4gMl0gPSBlW3cgKyAoaCA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IGVbayArIDE2ID4+IDJdLCBpID0gdyArIDEgfCAwLCBjID0gSVt3ICsgMSB8IDBdLCBJW3cgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgaCA9IGggPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVt3ICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW3cgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IGVbayArIDE2ID4+IDJdLCBoID0gdyArIDEgfCAwLCBjID0gSVt3ICsgMSB8IDBdLCBJW3cgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaCwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBoLCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlW3cgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gSVt1ICsgMzk3NzYgfCAwXSwgZVthICsgMjU2ID4+IDJdID0gKGggfCAwKSA9PSAoZiB8IDApID8gRSA6IG0sIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSB8IDI1NiwgZVtsICsgNCA+PiAyXSA9IGVbbCArIDQgPj4gMl0gfCA2NCwgQiA9IGVbayArIDEwOCA+PiAyXSwgbiA9IChmIF4gaCkgPDwgMjIgfCBuIHwgMTI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB5ICsgKElbKG4gPj4+IDYgJiA0OTUpICsgQiB8IDBdIDw8IDIpIHwgMCwgdSA9IGVbaCA+PiAyXSwgZiA9IGVbdSA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IGVbdSArIDQgPj4gMl0sIEogPSBoLCBoID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbSiA+PiAyXSA9IGVbdSArIChoID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbayArIDE2ID4+IDJdLCBpID0gdSArIDEgfCAwLCBnID0gSVt1ICsgMSB8IDBdLCBJW3UgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIGYgPSBoID8gdyA6ICF3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW3UgKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbdSArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbayArIDE2ID4+IDJdLCBoID0gdSArIDEgfCAwLCBnID0gSVt1ICsgMSB8IDBdLCBJW3UgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBoLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGgsIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgPyAhdyA6IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt1ICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBsIC0gNCB8IDAsIHUgPSBlW2wgKyA0ID4+IDJdID4+PiAyMyAmIDQgfCAoZVtzID4+IDJdID4+PiAyNSAmIDEgfCAobiA+Pj4gMTggJiAxNiB8IChuID4+PiAyMiAmIDY0IHwgbiA+Pj4gNiAmIDE3MCkpKSwgaCA9IHkgKyAoSVt1ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIHcgPSBlW2ggPj4gMl0sIGYgPSBlW3cgPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3cgKyA0ID4+IDJdLCBKID0gaCwgaCA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW0ogPj4gMl0gPSBlW3cgKyAoaCA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB3ICsgMSB8IDAsIGMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIGggPSBoID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVt3ICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW3cgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIGggPSB3ICsgMSB8IDAsIGMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaCwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBoLCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGYgPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZVt3ICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBJW3UgKyAzOTc3NiB8IDBdLCBlW2EgKyA1MTIgPj4gMl0gPSAoaCB8IDApID09IChmIHwgMCkgPyBFIDogbSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMjA0OCwgZVtsICsgNCA+PiAyXSA9IGVbbCArIDQgPj4gMl0gfCA1MTIsIG4gPSAoZiBeIGgpIDw8IDI1IHwgbiB8IDEwMjQsIEIgPSBlW2sgKyAxMDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB5ICsgKElbKG4gPj4+IDkgJiA0OTUpICsgQiB8IDBdIDw8IDIpIHwgMCwgdyA9IGVbaCA+PiAyXSwgZiA9IGVbdyA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPCBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbdyArIDQgPj4gMl0sIHUgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVt3ICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHcgKyAxIHwgMCwgcyA9IElbdyArIDEgfCAwXSwgSVt3IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIGYgPSB1ID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbdyArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVt3ICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IHcgKyAxIHwgMCwgcyA9IElbdyArIDEgfCAwXSwgSVt3IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt3ICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbCAtIDQgfCAwLCBPID0gZVtsICsgNCA+PiAyXSA+Pj4gMjYgJiA0IHwgKGVbYyA+PiAyXSA+Pj4gMjggJiAxIHwgKG4gPj4+IDIxICYgMTYgfCAobiA+Pj4gMjUgJiA2NCB8IG4gPj4+IDkgJiAxNzApKSksIGggPSB5ICsgKElbTyArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBCID0gZVtoID4+IDJdLCBmID0gZVtCID4+IDJdLCBpID0gaSAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiAmIDIwOTcxNjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHkgKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAobiAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIHcgPSBlW2ggPj4gMl0sIGYgPSBlW3cgPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPCBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3cgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbdyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IGVbayArIDE2ID4+IDJdLCBpID0gdyArIDEgfCAwLCBzID0gSVt3ICsgMSB8IDBdLCBJW3cgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIGYgPSB1ID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3cgKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbdyArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IGVbayArIDE2ID4+IDJdLCB1ID0gdyArIDEgfCAwLCBzID0gSVt3ICsgMSB8IDBdLCBJW3cgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt3ICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwgLSA0IHwgMCwgdyA9IGVbbCArIDQgPj4gMl0gPj4+IDE3ICYgNCB8IChlW3MgPj4gMl0gPj4+IDE5ICYgMSB8IChuID4+PiAxNCAmIDE2IHwgKG4gPj4+IDE2ICYgNjQgfCBuICYgMTcwKSkpLCBoID0geSArIChJW3cgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgYyA9IGVbaCA+PiAyXSwgZiA9IGVbYyA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbYyArIDQgPj4gMl0sIHUgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtjICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB0ICsgMSB8IDAsIGMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoYyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoYyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgZyA9IHUgPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbYyArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtjICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB0ICsgMSB8IDAsIGMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHIgPSAoYyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgdCA9IDgsIHIgPSAoYyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBlW2MgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBJW3cgKyAzOTc3NiB8IDBdLCBlW2EgPj4gMl0gPSAoZyB8IDApID09ICh1IHwgMCkgPyBFIDogbSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMzIsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgOCwgZiA9IGwgLSAyNjggfCAwLCBlW2YgPj4gMl0gPSBlW2YgPj4gMl0gfCAxMzEwNzIsIGYgPSBsIC0gMjYwIHwgMCwgZVtmID4+IDJdID0gZVtmID4+IDJdIHwgMzI3NjgsIGYgPSBsIC0gMjY0IHwgMCwgdyA9IGYsIEogPSBlW2YgPj4gMl0sIGYgPSBnIF4gdSwgZVt3ID4+IDJdID0gSiB8IGYgPDwgMzEgfCA2NTUzNiwgbiA9IGYgPDwgMTkgfCBuIHwgMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuICYgMTY3NzczNDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG4gPj4+IDMgfCAwLCBoID0geSArIChJW2VbayArIDEwOCA+PiAyXSArICh3ICYgNDk1KSB8IDBdIDw8IDIpIHwgMCwgcyA9IGVbaCA+PiAyXSwgZiA9IGVbcyA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIHUgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgZiA9IHUgPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3MgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbCAtIDQgfCAwLCB3ID0gZVtsICsgNCA+PiAyXSA+Pj4gMjAgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gMjIgJiAxIHwgKG4gPj4+IDE1ICYgMTYgfCAobiA+Pj4gMTkgJiA2NCB8IHcgJiAxNzApKSksIGggPSB5ICsgKElbdyArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBjID0gZVtoID4+IDJdLCBmID0gZVtjID4+IDJdLCBpID0gaSAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtjICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW2MgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHQgKyAxIHwgMCwgYyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCB1ID0gdSA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtjICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW2MgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IHQgKyAxIHwgMCwgYyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBmID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbYyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IElbdyArIDM5Nzc2IHwgMF0sIGVbYSArIDI1NiA+PiAyXSA9ICh1IHwgMCkgPT0gKGYgfCAwKSA/IEUgOiBtLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAyNTYsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgNjQsIG4gPSAoZiBeIHUpIDw8IDIyIHwgbiB8IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiAxMzQyMTg3NTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG4gPj4+IDYgfCAwLCBoID0geSArIChJW2VbayArIDEwOCA+PiAyXSArICh3ICYgNDk1KSB8IDBdIDw8IDIpIHwgMCwgcyA9IGVbaCA+PiAyXSwgZiA9IGVbcyA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIHUgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgZiA9IHUgPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3MgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbCAtIDQgfCAwLCB3ID0gZVtsICsgNCA+PiAyXSA+Pj4gMjMgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gMjUgJiAxIHwgKG4gPj4+IDE4ICYgMTYgfCAobiA+Pj4gMjIgJiA2NCB8IHcgJiAxNzApKSksIGggPSB5ICsgKElbdyArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBjID0gZVtoID4+IDJdLCBmID0gZVtjID4+IDJdLCBpID0gaSAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtjICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW2MgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHQgKyAxIHwgMCwgYyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCB1ID0gdSA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtjICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW2MgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IHQgKyAxIHwgMCwgYyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBmID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbYyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IElbdyArIDM5Nzc2IHwgMF0sIGVbYSArIDUxMiA+PiAyXSA9ICh1IHwgMCkgPT0gKGYgfCAwKSA/IEUgOiBtLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAyMDQ4LCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSB8IDUxMiwgbiA9IChmIF4gdSkgPDwgMjUgfCBuIHwgMTAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuICYgMTA3Mzc1MDAxNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBuID4+PiA5IHwgMCwgaCA9IHkgKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAodyAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIHMgPSBlW2ggPj4gMl0sIGYgPSBlW3MgPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHQgKyAxIHwgMCwgcyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgZiA9IHUgPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IHQgKyAxIHwgMCwgcyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3MgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwgLSA0IHwgMCwgTyA9IGVbbCArIDQgPj4gMl0gPj4+IDI2ICYgNCB8IChlW2MgPj4gMl0gPj4+IDI4ICYgMSB8IChuID4+PiAyMSAmIDE2IHwgKG4gPj4+IDI1ICYgNjQgfCB3ICYgMTcwKSkpLCBoID0geSArIChJW08gKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgQiA9IGVbaCA+PiAyXSwgZiA9IGVbQiA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW0IgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbKHUgPyA4IDogMTIpICsgQiA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB3ICsgMSB8IDAsIHMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCB1ID0gdSA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW0IgKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbKGYgPyAxMiA6IDgpICsgQiA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB3ICsgMSB8IDAsIHMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBmID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbQiArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBJW08gKyAzOTc3NiB8IDBdLCBlW2EgKyA3NjggPj4gMl0gPSAodSB8IDApID09IChmIHwgMCkgPyBFIDogbSwgZVtjID4+IDJdID0gZVtjID4+IDJdIHwgMTYzODQsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgNDA5NiwgZVtsICsgMjYwID4+IDJdID0gZVtsICsgMjYwID4+IDJdIHwgNCwgZVtsICsgMjY4ID4+IDJdID0gZVtsICsgMjY4ID4+IDJdIHwgMSwgZiA9IGYgXiB1LCBlW2wgKyAyNjQgPj4gMl0gPSBlW2wgKyAyNjQgPj4gMl0gfCBmIDw8IDE4IHwgMiwgbiA9IGYgPDwgMjggfCBuIHwgODE5MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2wgPj4gMl0gPSBuICYgLTEyMjY4MzM5MjE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGwgKyA0IHwgMCwgZiA9IGEgKyA0IHwgMCwgSCA9IEggKyAxIHwgMCwgKEggfCAwKSA9PSA2NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbCArIDEyIHwgMCwgZiA9IGEgKyA3NzIgfCAwLCB1ID0gQyA+Pj4gMCA8IDYwLCBDID0gQyArIDQgfCAwLCAhdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IDEgPDwgcDIsIEogPSBpID4+PiAxIHwgaSwgbyA9IGVbayArIDEyMCA+PiAyXSwgZiA9IChvICsgKGMyIDw8IDIpIHwgMCkgKyAxMiB8IDAsIG4gPSBlW2sgKyAxMjggPj4gMl0sIHQgPSBlW2sgKyA4ID4+IDJdLCBpID0gZVtrICsgNCA+PiAyXSwgciA9IGVbayA+PiAyXSwgaCA9IGVbayArIDEwNCA+PiAyXSwgdyA9IGVbayArIDExNiA+PiAyXSwgUzIgJiA4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA+Pj4gMCA8IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gayArIDEwMCB8IDAsIHYgPSBrICsgOTYgfCAwLCBtID0gWihjMiwgMTIpLCBIID0gYzIgPDwgMywgeSA9IDAgLSBKIHwgMCwgUCA9IGsgKyAyOCB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoRSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGYsIGYgPSBlW2YgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgJiAyMDk3MTY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBQICsgKElbZVtrICsgMTA4ID4+IDJdICsgKGYgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBsID0gZVtoID4+IDJdLCBuID0gZVtsID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwID49IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsIG8gPSBlW2wgKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW2wgKyA0ID4+IDJdLCBuID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbaCA+PiAyXSA9IGVbbCArIChuID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBvID0gbCArIDEgfCAwLCBzID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtsICsgNCA+PiAyXSwgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW2wgKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGkgPSBsICsgMSB8IDAsIHMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBvID0gbyA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEgLSA0IHwgMCwgbCA9IGVbYSArIDQgPj4gMl0gPj4+IDE3ICYgNCB8IChlW3MgPj4gMl0gPj4+IDE5ICYgMSB8IChmID4+PiAxNCAmIDE2IHwgKGYgPj4+IDE2ICYgNjQgfCBmICYgMTcwKSkpLCBoID0gUCArIChJW2wgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgQiA9IGVbaCA+PiAyXSwgbiA9IGVbQiA+PiAyXSwgaSA9IGkgLSBuIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCBvID0gZVtCICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtCICsgNCA+PiAyXSwgbiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW0IgKyAobiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgbyA9IHQgKyAxIHwgMCwgQiA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKEIgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbQiArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtCICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDE2ID4+IDJdLCBpID0gdCArIDEgfCAwLCBCID0gSVt0ICsgMSB8IDBdLCBJW3QgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKEIgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChCIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgbyA9IG8gPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IElbbCArIDM5Nzc2IHwgMF0sIGVbdyA+PiAyXSA9IChvIHwgMCkgPT0gKG4gfCAwKSA/IEogOiB5LCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAzMiwgZVthICsgNCA+PiAyXSA9IGVbYSArIDQgPj4gMl0gfCA4LCBmID0gKG4gXiBvKSA8PCAxOSB8IGYgfCAxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgJiAxNjc3NzM0NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZiA+Pj4gMyB8IDAsIGggPSBQICsgKElbZVtrICsgMTA4ID4+IDJdICsgKGwgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBzID0gZVtoID4+IDJdLCBuID0gZVtzID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwID49IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsIG8gPSBlW3MgKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCBuID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArIChuID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDE2ID4+IDJdLCBvID0gdCArIDEgfCAwLCBzID0gSVt0ICsgMSB8IDBdLCBJW3QgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtzICsgNCA+PiAyXSwgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW3MgKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBvID0gbyA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEgLSA0IHwgMCwgbCA9IGVbYSArIDQgPj4gMl0gPj4+IDIwICYgNCB8IChlW3MgPj4gMl0gPj4+IDIyICYgMSB8IChmID4+PiAxNSAmIDE2IHwgKGYgPj4+IDE5ICYgNjQgfCBsICYgMTcwKSkpLCBoID0gUCArIChJW2wgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgQiA9IGVbaCA+PiAyXSwgbiA9IGVbQiA+PiAyXSwgaSA9IGkgLSBuIHwgMCwgZzIgPSAoYzIgPDwgMikgKyB3IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCBvID0gZVtCICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtCICsgNCA+PiAyXSwgbiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW0IgKyAobiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgbyA9IHQgKyAxIHwgMCwgQiA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKEIgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbQiArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtCICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDE2ID4+IDJdLCBpID0gdCArIDEgfCAwLCBCID0gSVt0ICsgMSB8IDBdLCBJW3QgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKEIgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChCIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgbyA9IG8gPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IElbbCArIDM5Nzc2IHwgMF0sIGVbZzIgPj4gMl0gPSAobyB8IDApID09IChuIHwgMCkgPyBKIDogeSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMjU2LCBlW2EgKyA0ID4+IDJdID0gZVthICsgNCA+PiAyXSB8IDY0LCBmID0gKG4gXiBvKSA8PCAyMiB8IGYgfCAxMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmICYgMTM0MjE4NzUyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmID4+PiA2IHwgMCwgaCA9IFAgKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAobCAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIHMgPSBlW2ggPj4gMl0sIG4gPSBlW3MgPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgbyA9IGVbcyArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKG4gPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIG8gPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCBvID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArIChvID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHQgKyAxIHwgMCwgcyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIG8gPSBvID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYSAtIDQgfCAwLCBsID0gZVthICsgNCA+PiAyXSA+Pj4gMjMgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gMjUgJiAxIHwgKGYgPj4+IDE4ICYgMTYgfCAoZiA+Pj4gMjIgJiA2NCB8IGwgJiAxNzApKSksIGggPSBQICsgKElbbCArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBCID0gZVtoID4+IDJdLCBuID0gZVtCID4+IDJdLCBpID0gaSAtIG4gfCAwLCBnMiA9IHcgKyBIIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCBvID0gZVtCICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtCICsgNCA+PiAyXSwgbiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW0IgKyAobiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgbyA9IHQgKyAxIHwgMCwgQiA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKEIgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbQiArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtCICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDE2ID4+IDJdLCBpID0gdCArIDEgfCAwLCBCID0gSVt0ICsgMSB8IDBdLCBJW3QgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKEIgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChCIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgbyA9IG8gPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IElbbCArIDM5Nzc2IHwgMF0sIGVbZzIgPj4gMl0gPSAobyB8IDApID09IChuIHwgMCkgPyBKIDogeSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMjA0OCwgZVthICsgNCA+PiAyXSA9IGVbYSArIDQgPj4gMl0gfCA1MTIsIGYgPSAobiBeIG8pIDw8IDI1IHwgZiB8IDEwMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiAmIDEwNzM3NTAwMTYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZiA+Pj4gOSB8IDAsIGggPSBQICsgKElbZVtrICsgMTA4ID4+IDJdICsgKGwgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBzID0gZVtoID4+IDJdLCBuID0gZVtzID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsIG8gPSBlW3MgKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKG4gPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDE2ID4+IDJdLCBvID0gdCArIDEgfCAwLCBzID0gSVt0ICsgMSB8IDBdLCBJW3QgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHQgKyAxIHwgMCwgcyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBvID0gbyA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBhIC0gNCB8IDAsIHcyID0gZVthICsgNCA+PiAyXSA+Pj4gMjYgJiA0IHwgKGVbTyA+PiAyXSA+Pj4gMjggJiAxIHwgKGYgPj4+IDIxICYgMTYgfCAoZiA+Pj4gMjUgJiA2NCB8IGwgJiAxNzApKSksIGggPSBQICsgKElbdzIgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgQiA9IGVbaCA+PiAyXSwgbiA9IGVbQiA+PiAyXSwgaSA9IGkgLSBuIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlW3YgPj4gMl0sIGYgPSBlW28gPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwID49IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgbiA9IGVbbyArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGggPSBlW28gKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbdiA+PiAyXSA9IGVbbyArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gZVtrICsgMTYgPj4gMl0sIG4gPSBvICsgMSB8IDAsIGwgPSBJW28gKyAxIHwgMF0sIElbbyB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHQgPSA4LCByID0gKGwgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHIgPSAobCA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZiA/ICFoIDogaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaCA9IGVbbyArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVt2ID4+IDJdID0gZVtvICsgKG4gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gZVtrICsgMTYgPj4gMl0sIGkgPSBvICsgMSB8IDAsIGwgPSBJW28gKyAxIHwgMF0sIElbbyB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChsIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChsIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIG4gPSBuID8gaCA6ICFoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbdSA+PiAyXSwgZiA9IGVbbiA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCBvID0gZVtuICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbbiArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgbiA9IGVbKGYgPyAxMiA6IDgpICsgbiA+PiAyXSwgZVt1ID4+IDJdID0gbjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIG8gPSBoICsgMSB8IDAsIGcgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZiA/ICFsIDogbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbbiArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgZiA+Pj4gMCwgbiA9IGVbKG8gPyA4IDogMTIpICsgbiA+PiAyXSwgZVt1ID4+IDJdID0gbjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbayArIDE2ID4+IDJdLCBpID0gaCArIDEgfCAwLCBnID0gSVtoICsgMSB8IDBdLCBJW2ggfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCBvID0gbyA/IGwgOiAhbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbbiA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCBoID0gZVtuICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbbiArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVt1ID4+IDJdID0gZVsoZiA/IDEyIDogOCkgKyBuID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgbiA9IGggKyAxIHwgMCwgZyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgciA9IChnIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmID8gIWwgOiBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVtuICsgNCA+PiAyXSwgaCA9IG4sIG4gPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVt1ID4+IDJdID0gZVtoICsgKG4gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIGkgPSBoICsgMSB8IDAsIGcgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChnIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChnIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIGggPSBuID8gbCA6ICFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaCwgZiA9IDAsIGggPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobiB8IG8gPDwgMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBhIC0gNCB8IDAsIG8gPSBlW2EgKyA0ID4+IDJdID4+PiAxNyAmIDQgfCBlW2cgPj4gMl0gPj4+IDE5ICYgMSwgbiA9IFAgKyAoSVtvICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIGggPSBlW24gPj4gMl0sIGYgPSBlW2ggPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgbCA9IGVbaCArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVtoICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW24gPj4gMl0gPSBlW2ggKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIG4gPSBoICsgMSB8IDAsIHMgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgWjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmID8gIWwgOiBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVtoICsgNCA+PiAyXSwgcyA9IG4sIG4gPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtzID4+IDJdID0gZVtoICsgKG4gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFo6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgaSA9IGggKyAxIHwgMCwgcyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCBsID0gbiA/IGwgOiAhbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBsLCBmID0gSVtvICsgMzk3NzYgfCAwXSwgZVt3ID4+IDJdID0gKG4gfCAwKSA9PSAoZiB8IDApID8gSiA6IHksIGVbZyA+PiAyXSA9IGVbZyA+PiAyXSB8IDMyLCBlW2EgKyA0ID4+IDJdID0gZVthICsgNCA+PiAyXSB8IDgsIG8gPSAoZiBeIG4pIDw8IDE5LCBCID0gZVtrICsgMTA4ID4+IDJdLCBuID0gUCArIChJW0IgKyAyIHwgMF0gPDwgMikgfCAwLCBoID0gZVtuID4+IDJdLCBmID0gZVtoID4+IDJdLCBpID0gaSAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsIGwgPSBlW2ggKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbaCArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtuID4+IDJdID0gZVtoICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbayArIDE2ID4+IDJdLCBuID0gaCArIDEgfCAwLCBnID0gSVtoICsgMSB8IDBdLCBJW2ggfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgciA9IChnIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZiA/ICFsIDogbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbaCArIDQgPj4gMl0sIGcgPSBuLCBuID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbZyA+PiAyXSA9IGVbaCArIChuID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgWjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIGkgPSBoICsgMSB8IDAsIGcgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgWjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgWjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgbCA9IG4gPyBsIDogIWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGwsIGYgPSBvIHwgMTYsICFuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhIC0gNCB8IDAsIGggPSBlW2EgKyA0ID4+IDJdID4+PiAyMCAmIDQgfCAoZVtzID4+IDJdID4+PiAyMiAmIDEgfCAoZiA+Pj4gMTUgJiAxNiB8IChmID4+PiAxOSAmIDY0IHwgZiA+Pj4gMyAmIDE3MCkpKSwgbyA9IFAgKyAoSVtoICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIGwgPSBlW28gPj4gMl0sIG4gPSBlW2wgPj4gMl0sIGkgPSBpIC0gbiB8IDAsIGcyID0gKGMyIDw8IDIpICsgdyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgZyA9IGVbbCArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtsICsgNCA+PiAyXSwgbiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW28gPj4gMl0gPSBlW2wgKyAobiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIG8gPSBsICsgMSB8IDAsIEIgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAoQiA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBuID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtsICsgNCA+PiAyXSwgQiA9IG8sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtCID4+IDJdID0gZVtsICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IGwgKyAxIHwgMCwgQiA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoQiA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChCIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBnID0gbyA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBnLCBuID0gSVtoICsgMzk3NzYgfCAwXSwgZVtnMiA+PiAyXSA9IChvIHwgMCkgPT0gKG4gfCAwKSA/IEogOiB5LCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAyNTYsIGVbYSArIDQgPj4gMl0gPSBlW2EgKyA0ID4+IDJdIHwgNjQsIEIgPSBlW2sgKyAxMDggPj4gMl0sIGYgPSAobiBeIG8pIDw8IDIyIHwgZiB8IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFAgKyAoSVsoZiA+Pj4gNiAmIDQ5NSkgKyBCIHwgMF0gPDwgMikgfCAwLCBoID0gZVtvID4+IDJdLCBuID0gZVtoID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsIGwgPSBlW2ggKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVtoICsgNCA+PiAyXSwgbiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW28gPj4gMl0gPSBlW2ggKyAobiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbayArIDE2ID4+IDJdLCBvID0gaCArIDEgfCAwLCBnID0gSVtoICsgMSB8IDBdLCBJW2ggfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCB0ID0gOCwgciA9IChnIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4gPyAhbCA6IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBlW2ggKyA0ID4+IDJdLCBnID0gbywgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2cgPj4gMl0gPSBlW2ggKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgaSA9IGggKyAxIHwgMCwgZyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgbCA9IG8gPyBsIDogIWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEgLSA0IHwgMCwgaCA9IGVbYSArIDQgPj4gMl0gPj4+IDIzICYgNCB8IChlW3MgPj4gMl0gPj4+IDI1ICYgMSB8IChmID4+PiAxOCAmIDE2IHwgKGYgPj4+IDIyICYgNjQgfCBmID4+PiA2ICYgMTcwKSkpLCBvID0gUCArIChJW2ggKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgbCA9IGVbbyA+PiAyXSwgbiA9IGVbbCA+PiAyXSwgaSA9IGkgLSBuIHwgMCwgZzIgPSB3ICsgSCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgZyA9IGVbbCArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbbCArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtvID4+IDJdID0gZVtsICsgKG4gPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIG8gPSBsICsgMSB8IDAsIEIgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCB0ID0gOCwgciA9IChCIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgciA9IChCIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4gPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW2wgKyA0ID4+IDJdLCBCID0gbywgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW0IgPj4gMl0gPSBlW2wgKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGkgPSBsICsgMSB8IDAsIEIgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoQiA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBnID0gbyA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZywgbiA9IElbaCArIDM5Nzc2IHwgMF0sIGVbZzIgPj4gMl0gPSAobyB8IDApID09IChuIHwgMCkgPyBKIDogeSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMjA0OCwgZVthICsgNCA+PiAyXSA9IGVbYSArIDQgPj4gMl0gfCA1MTIsIGYgPSAobiBeIG8pIDw8IDI1IHwgZiB8IDEwMjQsIEIgPSBlW2sgKyAxMDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gUCArIChJWyhmID4+PiA5ICYgNDk1KSArIEIgfCAwXSA8PCAyKSB8IDAsIGwgPSBlW2ggPj4gMl0sIG4gPSBlW2wgPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgbyA9IGVbbCArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtsICsgNCA+PiAyXSwgbiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW2wgKyAobiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIG8gPSBsICsgMSB8IDAsIHMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtsICsgNCA+PiAyXSwgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW2wgKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBpID0gbCArIDEgfCAwLCBzID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIG8gPSBvID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPID0gYSAtIDQgfCAwLCB3MiA9IGVbYSArIDQgPj4gMl0gPj4+IDI2ICYgNCB8IChlW08gPj4gMl0gPj4+IDI4ICYgMSB8IChmID4+PiAyMSAmIDE2IHwgKGYgPj4+IDI1ICYgNjQgfCBmID4+PiA5ICYgMTcwKSkpLCBoID0gUCArIChJW3cyICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIEIgPSBlW2ggPj4gMl0sIG4gPSBlW0IgPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzIgPSB3ICsgbSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgbyA9IGVbQiArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbQiArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVsobiA/IDEyIDogOCkgKyBCID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIG8gPSBsICsgMSB8IDAsIHMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW0IgKyA0ID4+IDJdLCBvID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbaCA+PiAyXSA9IGVbKG8gPyA4IDogMTIpICsgQiA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IGwgKyAxIHwgMCwgcyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIG8gPSBvID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBJW3cyICsgMzk3NzYgfCAwXSwgZVtnMiA+PiAyXSA9IChvIHwgMCkgPT0gKG4gfCAwKSA/IEogOiB5LCBlW08gPj4gMl0gPSBlW08gPj4gMl0gfCAxNjM4NCwgZVthICsgNCA+PiAyXSA9IGVbYSArIDQgPj4gMl0gfCA0MDk2LCBsID0gYSArIChlW2sgKyAxMjQgPj4gMl0gPDwgMikgfCAwLCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSB8IDQsIGVbbCArIDEyID4+IDJdID0gZVtsICsgMTIgPj4gMl0gfCAxLCBuID0gbiBeIG8sIGVbbCArIDggPj4gMl0gPSBlW2wgKyA4ID4+IDJdIHwgbiA8PCAxOCB8IDIsIGYgPSBuIDw8IDI4IHwgZiB8IDgxOTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2EgPj4gMl0gPSBmICYgLTEyMjY4MzM5MjE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gYSArIDQgfCAwLCB3ID0gdyArIDQgfCAwLCBFID0gRSArIDEgfCAwLCAoYzIgfCAwKSA9PSAoRSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBhICsgMTIgfCAwLCB3ID0gdyArIG0gfCAwLCBDID0gQyArIDQgfCAwLCBuID0gZVtrICsgMTI4ID4+IDJdLCAhKEMgPj4+IDAgPCAobiAmIC00KSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbiAmIC00LCBmID0gKGYgPj4+IDAgPD0gNCA/IDQgOiBmKSAtIDEgfCAwLCBDID0gKGYgJiAtNCkgKyA0IHwgMCwgZiA9IChvICsgKGYgPDwgMSAmIC04KSB8IDApICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2sgKyA4ID4+IDJdID0gdCwgZVtrICsgNCA+PiAyXSA9IGksIGVbayA+PiAyXSA9IHIsIGVbayArIDEwNCA+PiAyXSA9IGgsICFjMiB8IG4gPj4+IDAgPD0gQyA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IDAsIGVbayArIDEyOCA+PiAyXSAhPSAoQyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IFg0KGssIGYsIChaKHQsIGMyKSA8PCAyKSArIHcgfCAwLCBKLCB0LCAxKSwgdCA9IHQgKyAxIHwgMCwgdCA+Pj4gMCA8IGVbayArIDEyOCA+PiAyXSAtIEMgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2YgPj4gMl0gPSBlW2YgPj4gMl0gJiAtMTIyNjgzMzkyMSwgdyA9IHcgKyA0IHwgMCwgZiA9IGYgKyA0IHwgMCwgYyA9IGMgKyAxIHwgMCwgKGMyIHwgMCkgPT0gKGMgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID4+PiAwIDwgNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYzIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSBrICsgMTAwIHwgMCwgdiA9IGsgKyA5NiB8IDAsIG0gPSBaKGMyLCAxMiksIEggPSBjMiA8PCAzLCB5ID0gMCAtIEogfCAwLCBQID0gayArIDI4IHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoRSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmLCBmID0gZVtmID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmICYgMjA5NzE2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBQICsgKElbZVtrICsgMTA4ID4+IDJdICsgKGYgJiA0OTUpIHwgMF0gPDwgMikgfCAwLCBsID0gZVtoID4+IDJdLCBuID0gZVtsID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsIG8gPSBlW2wgKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbbCArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtsICsgKG4gPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBvID0gbCArIDEgfCAwLCBzID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbbCArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtsICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IGwgKyAxIHwgMCwgcyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBvID0gbyA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhIC0gNCB8IDAsIGwgPSBlW2EgKyA0ID4+IDJdID4+PiAxNyAmIDQgfCAoZVtzID4+IDJdID4+PiAxOSAmIDEgfCAoZiA+Pj4gMTQgJiAxNiB8IChmID4+PiAxNiAmIDY0IHwgZiAmIDE3MCkpKSwgaCA9IFAgKyAoSVtsICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIEIgPSBlW2ggPj4gMl0sIG4gPSBlW0IgPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgbyA9IGVbQiArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtCICsgNCA+PiAyXSwgbiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW0IgKyAobiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIG8gPSB0ICsgMSB8IDAsIEIgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAoQiA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtCICsgNCA+PiAyXSwgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW0IgKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDE2ID4+IDJdLCBpID0gdCArIDEgfCAwLCBCID0gSVt0ICsgMSB8IDBdLCBJW3QgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChCIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIG8gPSBvID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IElbbCArIDM5Nzc2IHwgMF0sIGVbdyA+PiAyXSA9IChvIHwgMCkgPT0gKG4gfCAwKSA/IEogOiB5LCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAzMiwgZVthICsgNCA+PiAyXSA9IGVbYSArIDQgPj4gMl0gfCA4LCBsID0gYSArICgtMiAtIGVbayArIDEyNCA+PiAyXSA8PCAyKSB8IDAsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgMzI3NjgsIG8gPSBuIF4gbywgZVtsID4+IDJdID0gZVtsID4+IDJdIHwgbyA8PCAzMSB8IDY1NTM2LCBuID0gbCAtIDQgfCAwLCBlW24gPj4gMl0gPSBlW24gPj4gMl0gfCAxMzEwNzIsIGYgPSBvIDw8IDE5IHwgZiB8IDE2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiAmIDE2Nzc3MzQ0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGYgPj4+IDMgfCAwLCBoID0gUCArIChJW2VbayArIDEwOCA+PiAyXSArIChsICYgNDk1KSB8IDBdIDw8IDIpIHwgMCwgcyA9IGVbaCA+PiAyXSwgbiA9IGVbcyA+PiAyXSwgaSA9IGkgLSBuIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwID49IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCBvID0gZVtzICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCBuID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArIChuID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgbyA9IHQgKyAxIHwgMCwgcyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCBvID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArIChvID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgbyA9IG8gPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYSAtIDQgfCAwLCBsID0gZVthICsgNCA+PiAyXSA+Pj4gMjAgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gMjIgJiAxIHwgKGYgPj4+IDE1ICYgMTYgfCAoZiA+Pj4gMTkgJiA2NCB8IGwgJiAxNzApKSksIGggPSBQICsgKElbbCArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBCID0gZVtoID4+IDJdLCBuID0gZVtCID4+IDJdLCBpID0gaSAtIG4gfCAwLCBnMiA9IChjMiA8PCAyKSArIHcgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsIG8gPSBlW0IgKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbQiArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtCICsgKG4gPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDE2ID4+IDJdLCBvID0gdCArIDEgfCAwLCBCID0gSVt0ICsgMSB8IDBdLCBJW3QgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKEIgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgciA9IChCIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbQiArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtCICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHQgKyAxIHwgMCwgQiA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoQiA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChCIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBvID0gbyA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBJW2wgKyAzOTc3NiB8IDBdLCBlW2cyID4+IDJdID0gKG8gfCAwKSA9PSAobiB8IDApID8gSiA6IHksIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSB8IDI1NiwgZVthICsgNCA+PiAyXSA9IGVbYSArIDQgPj4gMl0gfCA2NCwgZiA9IChuIF4gbykgPDwgMjIgfCBmIHwgMTI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiAmIDEzNDIxODc1MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmID4+PiA2IHwgMCwgaCA9IFAgKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAobCAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIHMgPSBlW2ggPj4gMl0sIG4gPSBlW3MgPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgbyA9IGVbcyArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtzICsgNCA+PiAyXSwgbiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW3MgKyAobiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIG8gPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtzICsgNCA+PiAyXSwgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW3MgKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDE2ID4+IDJdLCBpID0gdCArIDEgfCAwLCBzID0gSVt0ICsgMSB8IDBdLCBJW3QgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIG8gPSBvID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEgLSA0IHwgMCwgbCA9IGVbYSArIDQgPj4gMl0gPj4+IDIzICYgNCB8IChlW3MgPj4gMl0gPj4+IDI1ICYgMSB8IChmID4+PiAxOCAmIDE2IHwgKGYgPj4+IDIyICYgNjQgfCBsICYgMTcwKSkpLCBoID0gUCArIChJW2wgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgQiA9IGVbaCA+PiAyXSwgbiA9IGVbQiA+PiAyXSwgaSA9IGkgLSBuIHwgMCwgZzIgPSB3ICsgSCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgbyA9IGVbQiArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtCICsgNCA+PiAyXSwgbiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW0IgKyAobiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIG8gPSB0ICsgMSB8IDAsIEIgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAoQiA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtCICsgNCA+PiAyXSwgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW0IgKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDE2ID4+IDJdLCBpID0gdCArIDEgfCAwLCBCID0gSVt0ICsgMSB8IDBdLCBJW3QgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChCIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIG8gPSBvID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IElbbCArIDM5Nzc2IHwgMF0sIGVbZzIgPj4gMl0gPSAobyB8IDApID09IChuIHwgMCkgPyBKIDogeSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMjA0OCwgZVthICsgNCA+PiAyXSA9IGVbYSArIDQgPj4gMl0gfCA1MTIsIGYgPSAobiBeIG8pIDw8IDI1IHwgZiB8IDEwMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmICYgMTA3Mzc1MDAxNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGYgPj4+IDkgfCAwLCBoID0gUCArIChJW2VbayArIDEwOCA+PiAyXSArIChsICYgNDk1KSB8IDBdIDw8IDIpIHwgMCwgcyA9IGVbaCA+PiAyXSwgbiA9IGVbcyA+PiAyXSwgaSA9IGkgLSBuIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCBvID0gZVtzICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKG4gPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgbyA9IHQgKyAxIHwgMCwgcyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtzICsgNCA+PiAyXSwgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW2ggPj4gMl0gPSBlW3MgKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHQgKyAxIHwgMCwgcyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgbyA9IG8gPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IGEgLSA0IHwgMCwgdzIgPSBlW2EgKyA0ID4+IDJdID4+PiAyNiAmIDQgfCAoZVtPID4+IDJdID4+PiAyOCAmIDEgfCAoZiA+Pj4gMjEgJiAxNiB8IChmID4+PiAyNSAmIDY0IHwgbCAmIDE3MCkpKSwgaCA9IFAgKyAoSVt3MiArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBCID0gZVtoID4+IDJdLCBuID0gZVtCID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbdiA+PiAyXSwgZiA9IGVbbyA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCBuID0gZVtvICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gZVtvICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW3YgPj4gMl0gPSBlW28gKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBlW2sgKyAxNiA+PiAyXSwgbiA9IG8gKyAxIHwgMCwgbCA9IElbbyArIDEgfCAwXSwgSVtvIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHQgPSA4LCByID0gKGwgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCByID0gKGwgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZiA/ICFoIDogaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaCA9IGVbbyArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVt2ID4+IDJdID0gZVtvICsgKG4gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGVbayArIDE2ID4+IDJdLCBpID0gbyArIDEgfCAwLCBsID0gSVtvICsgMSB8IDBdLCBJW28gfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKGwgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChsIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgbiA9IG4gPyBoIDogIWg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVt1ID4+IDJdLCBmID0gZVtuID4+IDJdLCBpID0gaSAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwID49IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsIG8gPSBlW24gKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBlW24gKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIG4gPSBlWyhmID8gMTIgOiA4KSArIG4gPj4gMl0sIGVbdSA+PiAyXSA9IG47IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgbyA9IGggKyAxIHwgMCwgZyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZiA/ICFsIDogbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbbiArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgZiA+Pj4gMCwgbiA9IGVbKG8gPyA4IDogMTIpICsgbiA+PiAyXSwgZVt1ID4+IDJdID0gbjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgaSA9IGggKyAxIHwgMCwgZyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChnIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIG8gPSBvID8gbCA6ICFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW24gPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgaCA9IGVbbiArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbbiArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVt1ID4+IDJdID0gZVsoZiA/IDEyIDogOCkgKyBuID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIG4gPSBoICsgMSB8IDAsIGcgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCB0ID0gOCwgciA9IChnIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgciA9IChnIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGYgPyAhbCA6IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBlW24gKyA0ID4+IDJdLCBoID0gbiwgbiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW3UgPj4gMl0gPSBlW2ggKyAobiA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIGkgPSBoICsgMSB8IDAsIGcgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCBoID0gbiA/IGwgOiAhbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaCwgZiA9IDAsIGggPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobiB8IG8gPDwgMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGEgLSA0IHwgMCwgbyA9IGVbYSArIDQgPj4gMl0gPj4+IDE3ICYgNCB8IGVbZyA+PiAyXSA+Pj4gMTkgJiAxLCBuID0gUCArIChJW28gKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgaCA9IGVbbiA+PiAyXSwgZiA9IGVbaCA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCBsID0gZVtoICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbaCArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtuID4+IDJdID0gZVtoICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFo6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgbiA9IGggKyAxIHwgMCwgcyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmID8gIWwgOiBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVtoICsgNCA+PiAyXSwgcyA9IG4sIG4gPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtzID4+IDJdID0gZVtoICsgKG4gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIGkgPSBoICsgMSB8IDAsIHMgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgWjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIGwgPSBuID8gbCA6ICFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbCwgZiA9IElbbyArIDM5Nzc2IHwgMF0sIGVbdyA+PiAyXSA9IChuIHwgMCkgPT0gKGYgfCAwKSA/IEogOiB5LCBlW2cgPj4gMl0gPSBlW2cgPj4gMl0gfCAzMiwgZVthICsgNCA+PiAyXSA9IGVbYSArIDQgPj4gMl0gfCA4LCBvID0gYSArICgtMiAtIGVbayArIDEyNCA+PiAyXSA8PCAyKSB8IDAsIGVbbyArIDQgPj4gMl0gPSBlW28gKyA0ID4+IDJdIHwgMzI3NjgsIG4gPSBmIF4gbiwgZVtvID4+IDJdID0gZVtvID4+IDJdIHwgbiA8PCAzMSB8IDY1NTM2LCBmID0gbyAtIDQgfCAwLCBlW2YgPj4gMl0gPSBlW2YgPj4gMl0gfCAxMzEwNzIsIG8gPSBuIDw8IDE5LCBCID0gZVtrICsgMTA4ID4+IDJdLCBuID0gUCArIChJW0IgKyAyIHwgMF0gPDwgMikgfCAwLCBoID0gZVtuID4+IDJdLCBmID0gZVtoID4+IDJdLCBpID0gaSAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA+PSBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsIGwgPSBlW2ggKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVtoICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW24gPj4gMl0gPSBlW2ggKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbayArIDE2ID4+IDJdLCBuID0gaCArIDEgfCAwLCBnID0gSVtoICsgMSB8IDBdLCBJW2ggfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCB0ID0gOCwgciA9IChnIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGYgPyAhbCA6IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBlW2ggKyA0ID4+IDJdLCBnID0gbiwgbiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2cgPj4gMl0gPSBlW2ggKyAobiA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFo6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgaSA9IGggKyAxIHwgMCwgZyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgbCA9IG4gPyBsIDogIWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbCwgZiA9IG8gfCAxNiwgIW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEgLSA0IHwgMCwgaCA9IGVbYSArIDQgPj4gMl0gPj4+IDIwICYgNCB8IChlW3MgPj4gMl0gPj4+IDIyICYgMSB8IChmID4+PiAxNSAmIDE2IHwgKGYgPj4+IDE5ICYgNjQgfCBmID4+PiAzICYgMTcwKSkpLCBvID0gUCArIChJW2ggKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgbCA9IGVbbyA+PiAyXSwgbiA9IGVbbCA+PiAyXSwgaSA9IGkgLSBuIHwgMCwgZzIgPSAoYzIgPDwgMikgKyB3IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCBnID0gZVtsICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbbCArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtvID4+IDJdID0gZVtsICsgKG4gPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgbyA9IGwgKyAxIHwgMCwgQiA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAoQiA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgciA9IChCIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBuID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtsICsgNCA+PiAyXSwgQiA9IG8sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtCID4+IDJdID0gZVtsICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGkgPSBsICsgMSB8IDAsIEIgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChCIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChCIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIGcgPSBvID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZywgbiA9IElbaCArIDM5Nzc2IHwgMF0sIGVbZzIgPj4gMl0gPSAobyB8IDApID09IChuIHwgMCkgPyBKIDogeSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMjU2LCBlW2EgKyA0ID4+IDJdID0gZVthICsgNCA+PiAyXSB8IDY0LCBCID0gZVtrICsgMTA4ID4+IDJdLCBmID0gKG4gXiBvKSA8PCAyMiB8IGYgfCAxMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFAgKyAoSVsoZiA+Pj4gNiAmIDQ5NSkgKyBCIHwgMF0gPDwgMikgfCAwLCBoID0gZVtvID4+IDJdLCBuID0gZVtoID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwID49IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsIGwgPSBlW2ggKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBlW2ggKyA0ID4+IDJdLCBuID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbbyA+PiAyXSA9IGVbaCArIChuID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbayArIDE2ID4+IDJdLCBvID0gaCArIDEgfCAwLCBnID0gSVtoICsgMSB8IDBdLCBJW2ggfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuID8gIWwgOiBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVtoICsgNCA+PiAyXSwgZyA9IG8sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtnID4+IDJdID0gZVtoICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbayArIDE2ID4+IDJdLCBpID0gaCArIDEgfCAwLCBnID0gSVtoICsgMSB8IDBdLCBJW2ggfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChnIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgbCA9IG8gPyBsIDogIWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYSAtIDQgfCAwLCBoID0gZVthICsgNCA+PiAyXSA+Pj4gMjMgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gMjUgJiAxIHwgKGYgPj4+IDE4ICYgMTYgfCAoZiA+Pj4gMjIgJiA2NCB8IGYgPj4+IDYgJiAxNzApKSksIG8gPSBQICsgKElbaCArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBsID0gZVtvID4+IDJdLCBuID0gZVtsID4+IDJdLCBpID0gaSAtIG4gfCAwLCBnMiA9IHcgKyBIIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwID49IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCBnID0gZVtsICsgNCA+PiAyXSwgaSAmIDMyNzY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW2wgKyA0ID4+IDJdLCBuID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbbyA+PiAyXSA9IGVbbCArIChuID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgbyA9IGwgKyAxIHwgMCwgQiA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBvLCB0ID0gOCwgciA9IChCIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHIgPSAoQiA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4gPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW2wgKyA0ID4+IDJdLCBCID0gbywgbyA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW0IgPj4gMl0gPSBlW2wgKyAobyA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBpID0gbCArIDEgfCAwLCBCID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChCIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKEIgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIGcgPSBvID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGcsIG4gPSBJW2ggKyAzOTc3NiB8IDBdLCBlW2cyID4+IDJdID0gKG8gfCAwKSA9PSAobiB8IDApID8gSiA6IHksIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSB8IDIwNDgsIGVbYSArIDQgPj4gMl0gPSBlW2EgKyA0ID4+IDJdIHwgNTEyLCBmID0gKG4gXiBvKSA8PCAyNSB8IGYgfCAxMDI0LCBCID0gZVtrICsgMTA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gUCArIChJWyhmID4+PiA5ICYgNDk1KSArIEIgfCAwXSA8PCAyKSB8IDAsIGwgPSBlW2ggPj4gMl0sIG4gPSBlW2wgPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwID49IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgbyA9IGVbbCArIDQgPj4gMl0sIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW2wgKyA0ID4+IDJdLCBuID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbaCA+PiAyXSA9IGVbbCArIChuID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIG8gPSBsICsgMSB8IDAsIHMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbbCArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVtsICsgKG8gPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtrICsgMTYgPj4gMl0sIGkgPSBsICsgMSB8IDAsIHMgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdICE9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA8PSAxNDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIG8gPSBvID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBhIC0gNCB8IDAsIHcyID0gZVthICsgNCA+PiAyXSA+Pj4gMjYgJiA0IHwgKGVbTyA+PiAyXSA+Pj4gMjggJiAxIHwgKGYgPj4+IDIxICYgMTYgfCAoZiA+Pj4gMjUgJiA2NCB8IGYgPj4+IDkgJiAxNzApKSksIGggPSBQICsgKElbdzIgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgQiA9IGVbaCA+PiAyXSwgbiA9IGVbQiA+PiAyXSwgaSA9IGkgLSBuIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcyID0gdyArIG0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsIG8gPSBlW0IgKyA0ID4+IDJdLCBpICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbQiArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVsobiA/IDEyIDogOCkgKyBCID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbayArIDE2ID4+IDJdLCBvID0gbCArIDEgfCAwLCBzID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG8sIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwIDw9IDE0MykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbywgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbQiArIDQgPj4gMl0sIG8gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtoID4+IDJdID0gZVsobyA/IDggOiAxMikgKyBCID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IGwgKyAxIHwgMCwgcyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPD0gMTQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBvID0gbyA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBJW3cyICsgMzk3NzYgfCAwXSwgZVtnMiA+PiAyXSA9IChvIHwgMCkgPT0gKG4gfCAwKSA/IEogOiB5LCBlW08gPj4gMl0gPSBlW08gPj4gMl0gfCAxNjM4NCwgZVthICsgNCA+PiAyXSA9IGVbYSArIDQgPj4gMl0gfCA0MDk2LCBsID0gYSArIChlW2sgKyAxMjQgPj4gMl0gPDwgMikgfCAwLCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSB8IDQsIGVbbCArIDEyID4+IDJdID0gZVtsICsgMTIgPj4gMl0gfCAxLCBuID0gbiBeIG8sIGVbbCArIDggPj4gMl0gPSBlW2wgKyA4ID4+IDJdIHwgbiA8PCAxOCB8IDIsIGYgPSBuIDw8IDI4IHwgZiB8IDgxOTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbYSA+PiAyXSA9IGYgJiAtMTIyNjgzMzkyMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGEgKyA0IHwgMCwgdyA9IHcgKyA0IHwgMCwgRSA9IEUgKyAxIHwgMCwgKGMyIHwgMCkgPT0gKEUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gYSArIDEyIHwgMCwgdyA9IHcgKyBtIHwgMCwgQyA9IEMgKyA0IHwgMCwgbiA9IGVbayArIDEyOCA+PiAyXSwgIShDID4+PiAwIDwgKG4gJiAtNCkgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbiAmIC00LCBmID0gKGYgPj4+IDAgPD0gNCA/IDQgOiBmKSAtIDEgfCAwLCBDID0gKGYgJiAtNCkgKyA0IHwgMCwgZiA9IChvICsgKGYgPDwgMSAmIC04KSB8IDApICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbayArIDggPj4gMl0gPSB0LCBlW2sgKyA0ID4+IDJdID0gaSwgZVtrID4+IDJdID0gciwgZVtrICsgMTA0ID4+IDJdID0gaCwgIWMyIHwgbiA+Pj4gMCA8PSBDID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gMCwgZVtrICsgMTI4ID4+IDJdICE9IChDIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IFg0KGssIGYsIChaKHQsIGMyKSA8PCAyKSArIHcgfCAwLCBKLCB0LCAwKSwgdCA9IHQgKyAxIHwgMCwgdCA+Pj4gMCA8IGVbayArIDEyOCA+PiAyXSAtIEMgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbZiA+PiAyXSA9IGVbZiA+PiAyXSAmIC0xMjI2ODMzOTIxLCB3ID0gdyArIDQgfCAwLCBmID0gZiArIDQgfCAwLCBjID0gYyArIDEgfCAwLCAoYzIgfCAwKSA9PSAoYyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEggPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZiwgbCA9IG4sIG4gPSBlW24gPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlW28gPj4gMl0sIG4gPSBlW2ggPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSBlW2ggKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbbyA+PiAyXSA9IGVbaCArIChmID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIGkgPSBoICsgMSB8IDAsIHcgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKHcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBmID0gZiA/IHUgOiAhdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSBlW2ggKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbbyA+PiAyXSA9IGVbaCArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtrICsgMTYgPj4gMl0sIG4gPSBoICsgMSB8IDAsIHcgPSBJW2ggKyAxIHwgMF0sIElbaCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCByID0gKHcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHQgPSA4LCByID0gKHcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmID8gIXUgOiB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbaCArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt2ID4+IDJdLCBuID0gZVtmID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVtmICsgNCA+PiAyXSwgaCA9IGkgPj4+IDAgPCBuID4+PiAwLCBmID0gZVsoaCA/IDggOiAxMikgKyBmID4+IDJdLCBlW3YgPj4gMl0gPSBmOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHUgKyAxIHwgMCwgZyA9IElbdSArIDEgfCAwXSwgSVt1IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIHUgPSBoID8gdyA6ICF3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IGVbZiArIDQgPj4gMl0sIG4gPSBpID4+PiAwIDwgbiA+Pj4gMCwgZiA9IGVbKG4gPyAxMiA6IDgpICsgZiA+PiAyXSwgZVt2ID4+IDJdID0gZjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gZVtrICsgMTYgPj4gMl0sIGggPSB1ICsgMSB8IDAsIGcgPSBJW3UgKyAxIHwgMF0sIElbdSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBoLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGgsIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBuID8gIXcgOiB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbZiArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlW2YgPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW2YgKyA0ID4+IDJdLCBoID0gZiwgZiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW3YgPj4gMl0gPSBlW2ggKyAoZiA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbayArIDE2ID4+IDJdLCBpID0gaCArIDEgfCAwLCBnID0gSVtoICsgMSB8IDBdLCBJW2ggfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChnIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChnIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBuID0gbiA8PCAxLCAhKG4gPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiwgZiA9IGYgPyB3IDogIXc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAobiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVtmICsgNCA+PiAyXSwgaCA9IGYsIGYgPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVt2ID4+IDJdID0gZVtoICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2sgKyAxNiA+PiAyXSwgbiA9IGggKyAxIHwgMCwgZyA9IElbaCArIDEgfCAwXSwgSVtoIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgPyAhdyA6IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVtmICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDAsIGggPSB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZiB8IHUgPDwgMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBsIC0gNCB8IDAsIGggPSBlW2wgKyA0ID4+IDJdID4+PiAxNyAmIDQgfCBlW2cgPj4gMl0gPj4+IDE5ICYgMSwgZiA9IHkgKyAoSVtoICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIHUgPSBlW2YgPj4gMl0sIG4gPSBlW3UgPj4gMl0sIGkgPSBpIC0gbiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW3UgKyA0ID4+IDJdLCBKID0gZiwgZiA9IGkgPj4+IDAgPCBuID4+PiAwLCBlW0ogPj4gMl0gPSBlW3UgKyAoZiA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB1ICsgMSB8IDAsIHMgPSBJW3UgKyAxIHwgMF0sIElbdSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgbiA9IG4gPDwgMSwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4sIG4gPSBmID8gdyA6ICF3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKG4gPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVt1ICsgNCA+PiAyXSwgSiA9IGYsIGYgPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtKID4+IDJdID0gZVt1ICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbayArIDE2ID4+IDJdLCBuID0gdSArIDEgfCAwLCBzID0gSVt1ICsgMSB8IDBdLCBJW3UgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gbiwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmID8gIXcgOiB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbdSArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gSVtoICsgMzk3NzYgfCAwXSwgZVthID4+IDJdID0gKG4gfCAwKSA9PSAoZiB8IDApID8gRSA6IG0sIGVbZyA+PiAyXSA9IGVbZyA+PiAyXSB8IDMyLCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSB8IDgsIGggPSAoZiBeIG4pIDw8IDE5LCBCID0gZVtrICsgMTA4ID4+IDJdLCBmID0geSArIChJW0IgKyAyIHwgMF0gPDwgMikgfCAwLCB1ID0gZVtmID4+IDJdLCBuID0gZVt1ID4+IDJdLCBpID0gaSAtIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPCBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gZVt1ICsgNCA+PiAyXSwgSiA9IGYsIGYgPSBpID4+PiAwIDwgbiA+Pj4gMCwgZVtKID4+IDJdID0gZVt1ICsgKGYgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbayArIDE2ID4+IDJdLCBpID0gdSArIDEgfCAwLCBnID0gSVt1ICsgMSB8IDBdLCBJW3UgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoZyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoZyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIG4gPSBuIDw8IDEsICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLCBmID0gZiA/IHcgOiAhdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChuIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IGVbdSArIDQgPj4gMl0sIEogPSBmLCBmID0gaSA+Pj4gMCA8IG4gPj4+IDAsIGVbSiA+PiAyXSA9IGVbdSArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW2sgKyAxNiA+PiAyXSwgbiA9IHUgKyAxIHwgMCwgZyA9IElbdSArIDEgfCAwXSwgSVt1IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBuLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IG4sIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiA/ICF3IDogdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3UgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBoIHwgMTYsICFmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBsIC0gNCB8IDAsIHUgPSBlW2wgKyA0ID4+IDJdID4+PiAyMCAmIDQgfCAoZVtzID4+IDJdID4+PiAyMiAmIDEgfCAobiA+Pj4gMTUgJiAxNiB8IChuID4+PiAxOSAmIDY0IHwgbiA+Pj4gMyAmIDE3MCkpKSwgaCA9IHkgKyAoSVt1ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIHcgPSBlW2ggPj4gMl0sIGYgPSBlW3cgPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3cgKyA0ID4+IDJdLCBKID0gaCwgaCA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW0ogPj4gMl0gPSBlW3cgKyAoaCA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB3ICsgMSB8IDAsIGMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIGggPSBoID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVt3ICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW3cgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIGggPSB3ICsgMSB8IDAsIGMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaCwgciA9IChjIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBoLCB0ID0gOCwgciA9IChjIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGYgPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZVt3ICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBJW3UgKyAzOTc3NiB8IDBdLCBlW2EgKyAyNTYgPj4gMl0gPSAoaCB8IDApID09IChmIHwgMCkgPyBFIDogbSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMjU2LCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSB8IDY0LCBCID0gZVtrICsgMTA4ID4+IDJdLCBuID0gKGYgXiBoKSA8PCAyMiB8IG4gfCAxMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB5ICsgKElbKG4gPj4+IDYgJiA0OTUpICsgQiB8IDBdIDw8IDIpIHwgMCwgdSA9IGVbaCA+PiAyXSwgZiA9IGVbdSA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPCBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IGVbdSArIDQgPj4gMl0sIEogPSBoLCBoID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbSiA+PiAyXSA9IGVbdSArIChoID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB1ICsgMSB8IDAsIGcgPSBJW3UgKyAxIHwgMF0sIElbdSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCBmID0gaCA/IHcgOiAhdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW3UgKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbdSArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gZVtrICsgMTYgPj4gMl0sIGggPSB1ICsgMSB8IDAsIGcgPSBJW3UgKyAxIHwgMF0sIElbdSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBoLCByID0gKGcgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGgsIHQgPSA4LCByID0gKGcgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmID8gIXcgOiB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbdSArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwgLSA0IHwgMCwgdSA9IGVbbCArIDQgPj4gMl0gPj4+IDIzICYgNCB8IChlW3MgPj4gMl0gPj4+IDI1ICYgMSB8IChuID4+PiAxOCAmIDE2IHwgKG4gPj4+IDIyICYgNjQgfCBuID4+PiA2ICYgMTcwKSkpLCBoID0geSArIChJW3UgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgdyA9IGVbaCA+PiAyXSwgZiA9IGVbdyA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbdyArIDQgPj4gMl0sIEogPSBoLCBoID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbSiA+PiAyXSA9IGVbdyArIChoID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IGVbayArIDE2ID4+IDJdLCBpID0gdyArIDEgfCAwLCBjID0gSVt3ICsgMSB8IDBdLCBJW3cgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKGMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKGMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIGggPSBoID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3cgKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbdyArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IGVbayArIDE2ID4+IDJdLCBoID0gdyArIDEgfCAwLCBjID0gSVt3ICsgMSB8IDBdLCBJW3cgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBoLCByID0gKGMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGgsIHQgPSA4LCByID0gKGMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGYgPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZVt3ICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gSVt1ICsgMzk3NzYgfCAwXSwgZVthICsgNTEyID4+IDJdID0gKGggfCAwKSA9PSAoZiB8IDApID8gRSA6IG0sIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSB8IDIwNDgsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgNTEyLCBuID0gKGYgXiBoKSA8PCAyNSB8IG4gfCAxMDI0LCBCID0gZVtrICsgMTA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHkgKyAoSVsobiA+Pj4gOSAmIDQ5NSkgKyBCIHwgMF0gPDwgMikgfCAwLCB3ID0gZVtoID4+IDJdLCBmID0gZVt3ID4+IDJdLCBpID0gaSAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPCBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVt3ICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW3cgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB3ICsgMSB8IDAsIHMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIGYgPSB1ID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVt3ICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW3cgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB3ICsgMSB8IDAsIHMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVt3ICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwgLSA0IHwgMCwgTyA9IGVbbCArIDQgPj4gMl0gPj4+IDI2ICYgNCB8IChlW2MgPj4gMl0gPj4+IDI4ICYgMSB8IChuID4+PiAyMSAmIDE2IHwgKG4gPj4+IDI1ICYgNjQgfCBuID4+PiA5ICYgMTcwKSkpLCBoID0geSArIChJW08gKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgQiA9IGVbaCA+PiAyXSwgZiA9IGVbQiA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiAmIDIwOTcxNjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB5ICsgKElbZVtrICsgMTA4ID4+IDJdICsgKG4gJiA0OTUpIHwgMF0gPDwgMikgfCAwLCB3ID0gZVtoID4+IDJdLCBmID0gZVt3ID4+IDJdLCBpID0gaSAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVt3ICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW3cgKyAodSA/IDggOiAxMikgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IGVbayArIDE2ID4+IDJdLCBpID0gdyArIDEgfCAwLCBzID0gSVt3ICsgMSB8IDBdLCBJW3cgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgZiA9IHUgPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVt3ICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlW3cgKyAoZiA/IDEyIDogOCkgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IGVbayArIDE2ID4+IDJdLCB1ID0gdyArIDEgfCAwLCBzID0gSVt3ICsgMSB8IDBdLCBJW3cgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3cgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBsIC0gNCB8IDAsIHcgPSBlW2wgKyA0ID4+IDJdID4+PiAxNyAmIDQgfCAoZVtzID4+IDJdID4+PiAxOSAmIDEgfCAobiA+Pj4gMTQgJiAxNiB8IChuID4+PiAxNiAmIDY0IHwgbiAmIDE3MCkpKSwgaCA9IHkgKyAoSVt3ICsgMzk1MjAgfCAwXSA8PCAyKSB8IDAsIGMgPSBlW2ggPj4gMl0sIGYgPSBlW2MgPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW2MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbYyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB0ICsgMSB8IDAsIGMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKGMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKGMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCB1ID0gdSA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW2MgKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbYyArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB0ICsgMSB8IDAsIGMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCByID0gKGMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHQgPSA4LCByID0gKGMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBmID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbYyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBJW3cgKyAzOTc3NiB8IDBdLCBlW2EgPj4gMl0gPSAodSB8IDApID09IChmIHwgMCkgPyBFIDogbSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMzIsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgOCwgbiA9IChmIF4gdSkgPDwgMTkgfCBuIHwgMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuICYgMTY3NzczNDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBuID4+PiAzIHwgMCwgaCA9IHkgKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAodyAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIHMgPSBlW2ggPj4gMl0sIGYgPSBlW3MgPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCBmID0gdSA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbcyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwgLSA0IHwgMCwgdyA9IGVbbCArIDQgPj4gMl0gPj4+IDIwICYgNCB8IChlW3MgPj4gMl0gPj4+IDIyICYgMSB8IChuID4+PiAxNSAmIDE2IHwgKG4gPj4+IDE5ICYgNjQgfCB3ICYgMTcwKSkpLCBoID0geSArIChJW3cgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgYyA9IGVbaCA+PiAyXSwgZiA9IGVbYyA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPCBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbYyArIDQgPj4gMl0sIHUgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtjICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHQgKyAxIHwgMCwgYyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoYyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoYyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIHUgPSB1ID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbYyArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtjICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IHQgKyAxIHwgMCwgYyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHIgPSAoYyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgdCA9IDgsIHIgPSAoYyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGYgPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZVtjICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IElbdyArIDM5Nzc2IHwgMF0sIGVbYSArIDI1NiA+PiAyXSA9ICh1IHwgMCkgPT0gKGYgfCAwKSA/IEUgOiBtLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAyNTYsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgNjQsIG4gPSAoZiBeIHUpIDw8IDIyIHwgbiB8IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiAxMzQyMTg3NTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBuID4+PiA2IHwgMCwgaCA9IHkgKyAoSVtlW2sgKyAxMDggPj4gMl0gKyAodyAmIDQ5NSkgfCAwXSA8PCAyKSB8IDAsIHMgPSBlW2ggPj4gMl0sIGYgPSBlW3MgPj4gMl0sIGkgPSBpIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDE2ID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCB1ID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArICh1ID8gOCA6IDEyKSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGYgPSBmIDw8IDEsICEoZiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmLCBmID0gdSA/IGcgOiAhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciAtIChmIDw8IDE2KSB8IDAsICEoaSAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3MgKyA0ID4+IDJdLCBmID0gaSA+Pj4gMCA8IGYgPj4+IDAsIGVbaCA+PiAyXSA9IGVbcyArIChmID8gMTIgOiA4KSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgciA9IHIgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCByID0gKHMgPDwgOSkgKyByIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHQgPSA4LCByID0gKHMgPDwgOCkgKyByIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIHIgPSByIDw8IDEsIGkgPSBpIDw8IDEsICEoaSA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmID8gIWcgOiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbcyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwgLSA0IHwgMCwgdyA9IGVbbCArIDQgPj4gMl0gPj4+IDIzICYgNCB8IChlW3MgPj4gMl0gPj4+IDI1ICYgMSB8IChuID4+PiAxOCAmIDE2IHwgKG4gPj4+IDIyICYgNjQgfCB3ICYgMTcwKSkpLCBoID0geSArIChJW3cgKyAzOTUyMCB8IDBdIDw8IDIpIHwgMCwgYyA9IGVbaCA+PiAyXSwgZiA9IGVbYyA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPCBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbYyArIDQgPj4gMl0sIHUgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtjICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgaSA9IHQgKyAxIHwgMCwgYyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAoYyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAoYyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIHUgPSB1ID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbYyArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtjICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxNiA+PiAyXSwgdSA9IHQgKyAxIHwgMCwgYyA9IElbdCArIDEgfCAwXSwgSVt0IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHIgPSAoYyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgdCA9IDgsIHIgPSAoYyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGYgPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZVtjICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IElbdyArIDM5Nzc2IHwgMF0sIGVbYSArIDUxMiA+PiAyXSA9ICh1IHwgMCkgPT0gKGYgfCAwKSA/IEUgOiBtLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAyMDQ4LCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSB8IDUxMiwgbiA9IChmIF4gdSkgPDwgMjUgfCBuIHwgMTAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiAmIDEwNzM3NTAwMTYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG4gPj4+IDkgfCAwLCBoID0geSArIChJW2VbayArIDEwOCA+PiAyXSArICh3ICYgNDk1KSB8IDBdIDw8IDIpIHwgMCwgcyA9IGVbaCA+PiAyXSwgZiA9IGVbcyA+PiAyXSwgaSA9IGkgLSBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAxNiA+Pj4gMCA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIHUgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKHUgPyA4IDogMTIpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBmID0gZiA8PCAxLCAhKGYgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgZiA9IHUgPyBnIDogIWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAoZiA8PCAxNikgfCAwLCAhKGkgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbcyArIDQgPj4gMl0sIGYgPSBpID4+PiAwIDwgZiA+Pj4gMCwgZVtoID4+IDJdID0gZVtzICsgKGYgPyAxMiA6IDgpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB0ICsgMSB8IDAsIHMgPSBJW3QgKyAxIHwgMF0sIElbdCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCByID0gciArIDY1MjgwIHwgMCwgdCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHUsIHIgPSAocyA8PCA5KSArIHIgfCAwLCB0ID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgdCA9IDgsIHIgPSAocyA8PCA4KSArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIDEgfCAwLCByID0gciA8PCAxLCBpID0gaSA8PCAxLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiA/ICFnIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3MgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbCAtIDQgfCAwLCBPID0gZVtsICsgNCA+PiAyXSA+Pj4gMjYgJiA0IHwgKGVbYyA+PiAyXSA+Pj4gMjggJiAxIHwgKG4gPj4+IDIxICYgMTYgfCAobiA+Pj4gMjUgJiA2NCB8IHcgJiAxNzApKSksIGggPSB5ICsgKElbTyArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBCID0gZVtoID4+IDJdLCBmID0gZVtCID4+IDJdLCBpID0gaSAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMTYgPj4+IDAgPCBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtCICsgNCA+PiAyXSwgdSA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlWyh1ID8gOCA6IDEyKSArIEIgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIGkgPSB3ICsgMSB8IDAsIHMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgZiA9IGYgPDwgMSwgIShmID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYsIHUgPSB1ID8gZyA6ICFnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gKGYgPDwgMTYpIHwgMCwgIShpICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtCICsgNCA+PiAyXSwgZiA9IGkgPj4+IDAgPCBmID4+PiAwLCBlW2ggPj4gMl0gPSBlWyhmID8gMTIgOiA4KSArIEIgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gZVtrICsgMTYgPj4gMl0sIHUgPSB3ICsgMSB8IDAsIHMgPSBJW3cgKyAxIHwgMF0sIElbdyB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHIgPSByICsgNjUyODAgfCAwLCB0ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gdSwgciA9IChzIDw8IDkpICsgciB8IDAsIHQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSB1LCB0ID0gOCwgciA9IChzIDw8IDgpICsgciB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgLSAxIHwgMCwgciA9IHIgPDwgMSwgaSA9IGkgPDwgMSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGYgPyAhZyA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZVtCICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBJW08gKyAzOTc3NiB8IDBdLCBlW2EgKyA3NjggPj4gMl0gPSAodSB8IDApID09IChmIHwgMCkgPyBFIDogbSwgZVtjID4+IDJdID0gZVtjID4+IDJdIHwgMTYzODQsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgNDA5NiwgZVtsICsgMjYwID4+IDJdID0gZVtsICsgMjYwID4+IDJdIHwgNCwgZVtsICsgMjY4ID4+IDJdID0gZVtsICsgMjY4ID4+IDJdIHwgMSwgZiA9IGYgXiB1LCBlW2wgKyAyNjQgPj4gMl0gPSBlW2wgKyAyNjQgPj4gMl0gfCBmIDw8IDE4IHwgMiwgbiA9IGYgPDwgMjggfCBuIHwgODE5MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtsID4+IDJdID0gbiAmIC0xMjI2ODMzOTIxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbCArIDQgfCAwLCBmID0gYSArIDQgfCAwLCBIID0gSCArIDEgfCAwLCAoSCB8IDApID09IDY0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBsICsgMTIgfCAwLCBmID0gYSArIDc3MiB8IDAsIHUgPSBDID4+PiAwIDwgNjAsIEMgPSBDICsgNCB8IDAsICF1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgOCA+PiAyXSA9IHQsIGVbayArIDQgPj4gMl0gPSBpLCBlW2sgPj4gMl0gPSByLCBlW2sgKyAxMDQgPj4gMl0gPSBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShTMiAmIDMyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMDQgPj4gMl0gPSBrICsgMTAwLCBuID0gZVtrICsgMTAwID4+IDJdLCBpID0gZVtuID4+IDJdLCByID0gZVtrICsgNCA+PiAyXSAtIGkgfCAwLCBlW2sgKyA0ID4+IDJdID0gciwgdCA9IGVbayA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAxNiA+Pj4gMCA8IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtrICsgNCA+PiAyXSA9IGksIG4gPSBlWyhpID4+PiAwID4gciA+Pj4gMCA/IDggOiAxMikgKyBuID4+IDJdLCBlW2sgKyAxMDAgPj4gMl0gPSBuLCByID0gZVtrICsgOCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGVbayArIDE2ID4+IDJdLCBmID0gbyArIDEgfCAwLCBoID0gSVtvICsgMSB8IDBdLCBJW28gfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgdCA9IHQgKyA2NTI4MCB8IDAsIHIgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCB0ID0gKGggPDwgOSkgKyB0IHwgMCwgciA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIHIgPSA4LCB0ID0gKGggPDwgOCkgKyB0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IHIsIHQgPSB0IDw8IDEsIGVbayA+PiAyXSA9IHQsIGkgPSBpIDw8IDEsIGVbayArIDQgPj4gMl0gPSBpLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIChpIDw8IDE2KSB8IDAsIGVbayA+PiAyXSA9IHQsIHIgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gZVsoaSA+Pj4gMCA+IHIgPj4+IDAgPyAxMiA6IDgpICsgbiA+PiAyXSwgZVtrICsgMTAwID4+IDJdID0gbiwgaSA9IGVbayArIDggPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtrICsgMTYgPj4gMl0sIGkgPSBmICsgMSB8IDAsIG8gPSBJW2YgKyAxIHwgMF0sIElbZiB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHQgPSB0ICsgNjUyODAgfCAwLCBpID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IChvIDw8IDkpICsgdCB8IDAsIGkgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCBpID0gOCwgdCA9IChvIDw8IDgpICsgdCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IGksIHQgPSB0IDw8IDEsIGVbayA+PiAyXSA9IHQsIHIgPSByIDw8IDEsIGVbayArIDQgPj4gMl0gPSByLCAhKHIgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtuID4+IDJdLCByID0gciAtIGkgfCAwLCBlW2sgKyA0ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAxNiA+Pj4gMCA8IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtrICsgNCA+PiAyXSA9IGksIG4gPSBlWyhpID4+PiAwID4gciA+Pj4gMCA/IDggOiAxMikgKyBuID4+IDJdLCBlW2sgKyAxMDAgPj4gMl0gPSBuLCByID0gZVtrICsgOCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGVbayArIDE2ID4+IDJdLCBmID0gbyArIDEgfCAwLCBoID0gSVtvICsgMSB8IDBdLCBJW28gfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgdCA9IHQgKyA2NTI4MCB8IDAsIHIgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCB0ID0gKGggPDwgOSkgKyB0IHwgMCwgciA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIHIgPSA4LCB0ID0gKGggPDwgOCkgKyB0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IHIsIHQgPSB0IDw8IDEsIGVbayA+PiAyXSA9IHQsIGkgPSBpIDw8IDEsIGVbayArIDQgPj4gMl0gPSBpLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIChpIDw8IDE2KSB8IDAsIGVbayA+PiAyXSA9IHQsIHIgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gZVsoaSA+Pj4gMCA+IHIgPj4+IDAgPyAxMiA6IDgpICsgbiA+PiAyXSwgZVtrICsgMTAwID4+IDJdID0gbiwgaSA9IGVbayArIDggPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtrICsgMTYgPj4gMl0sIGkgPSBmICsgMSB8IDAsIG8gPSBJW2YgKyAxIHwgMF0sIElbZiB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHQgPSB0ICsgNjUyODAgfCAwLCBpID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IChvIDw8IDkpICsgdCB8IDAsIGkgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCBpID0gOCwgdCA9IChvIDw8IDgpICsgdCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IGksIHQgPSB0IDw8IDEsIGVbayA+PiAyXSA9IHQsIHIgPSByIDw8IDEsIGVbayArIDQgPj4gMl0gPSByLCAhKHIgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtuID4+IDJdLCByID0gciAtIGkgfCAwLCBlW2sgKyA0ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAxNiA+Pj4gMCA8IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtrICsgNCA+PiAyXSA9IGksIG4gPSBlWyhpID4+PiAwID4gciA+Pj4gMCA/IDggOiAxMikgKyBuID4+IDJdLCBlW2sgKyAxMDAgPj4gMl0gPSBuLCByID0gZVtrICsgOCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGVbayArIDE2ID4+IDJdLCBmID0gbyArIDEgfCAwLCBoID0gSVtvICsgMSB8IDBdLCBJW28gfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgdCA9IHQgKyA2NTI4MCB8IDAsIHIgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBmLCB0ID0gKGggPDwgOSkgKyB0IHwgMCwgciA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIHIgPSA4LCB0ID0gKGggPDwgOCkgKyB0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IHIsIHQgPSB0IDw8IDEsIGVbayA+PiAyXSA9IHQsIGkgPSBpIDw8IDEsIGVbayArIDQgPj4gMl0gPSBpLCAhKGkgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIChpIDw8IDE2KSB8IDAsIGVbayA+PiAyXSA9IHQsIHIgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gZVsoaSA+Pj4gMCA+IHIgPj4+IDAgPyAxMiA6IDgpICsgbiA+PiAyXSwgZVtrICsgMTAwID4+IDJdID0gbiwgaSA9IGVbayArIDggPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtrICsgMTYgPj4gMl0sIGkgPSBmICsgMSB8IDAsIG8gPSBJW2YgKyAxIHwgMF0sIElbZiB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSArIDEsIHQgPSB0ICsgNjUyODAgfCAwLCBpID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gaSwgdCA9IChvIDw8IDkpICsgdCB8IDAsIGkgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCBpID0gOCwgdCA9IChvIDw8IDgpICsgdCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgLSAxIHwgMCwgZVtrICsgOCA+PiAyXSA9IGksIHQgPSB0IDw8IDEsIGVbayA+PiAyXSA9IHQsIHIgPSByIDw8IDEsIGVbayArIDQgPj4gMl0gPSByLCAhKHIgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbbiA+PiAyXSwgciA9IHIgLSBpIHwgMCwgZVtrICsgNCA+PiAyXSA9IHIsIHQgPj4+IDE2ID4+PiAwIDwgaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtrICsgNCA+PiAyXSA9IGksIGVbayArIDEwMCA+PiAyXSA9IGVbKGkgPj4+IDAgPiByID4+PiAwID8gOCA6IDEyKSArIG4gPj4gMl0sIHIgPSBlW2sgKyA4ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbayArIDE2ID4+IDJdLCBmID0gbiArIDEgfCAwLCBvID0gSVtuICsgMSB8IDBdLCBJW24gfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZVtrICsgMTIgPj4gMl0gKyAxLCB0ID0gdCArIDY1MjgwIHwgMCwgciA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGYsIHQgPSAobyA8PCA5KSArIHQgfCAwLCByID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDE2ID4+IDJdID0gZiwgciA9IDgsIHQgPSAobyA8PCA4KSArIHQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gMSB8IDAsIGVbayArIDggPj4gMl0gPSByLCB0ID0gdCA8PCAxLCBlW2sgPj4gMl0gPSB0LCBpID0gaSA8PCAxLCBlW2sgKyA0ID4+IDJdID0gaSwgIShpID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IHQgLSAoaSA8PCAxNikgfCAwLCBlW2sgPj4gMl0gPSBmLCByICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW2sgKyAxMDAgPj4gMl0gPSBlWyhpID4+PiAwID4gciA+Pj4gMCA/IDEyIDogOCkgKyBuID4+IDJdLCB0ID0gZVtrICsgOCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gZVtrICsgMTYgPj4gMl0sIGkgPSBuICsgMSB8IDAsIG8gPSBJW24gKyAxIHwgMF0sIElbbiB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGVbayArIDEyID4+IDJdICsgMSwgZiA9IGYgKyA2NTI4MCB8IDAsIHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSBpLCBmID0gKG8gPDwgOSkgKyBmIHwgMCwgdCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IGksIHQgPSA4LCBmID0gKG8gPDwgOCkgKyBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IC0gMSB8IDAsIGVbayArIDggPj4gMl0gPSB0LCBmID0gZiA8PCAxLCBlW2sgPj4gMl0gPSBmLCByID0gciA8PCAxLCBlW2sgKyA0ID4+IDJdID0gciwgIShyID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3IoayksIGVbayArIDEwMCA+PiAyXSA9IDM3NDQwLCBlW2sgKyA5NiA+PiAyXSA9IDM2MDY0LCBlW2sgKyAyOCA+PiAyXSA9IDM2MDk2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gWTIgKyAxIHwgMCwgZiA9IChpIHwgMCkgPT0gMywgWTIgPSBmID8gMCA6IGksIHAyID0gcDIgLSBmIHwgMCwgaiA9IGogKyAxIHwgMCwgaiA+Pj4gMCA+PSBkW3QwICsgOCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgocDIgfCAwKSA+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobjIgPSBwICsgbjIgfCAwLCBmID0gZVtrICsgMjQgPj4gMl0sIGkgPSBHMltrICsgMTEyID4+IDFdLCBGW2YgfCAwXSA9IGksIEZbZiArIDEgfCAwXSA9IGkgPj4+IDgsIHEgPSBxICsgMSB8IDAsICEocSA+Pj4gMCA8IGRbeiArIDQ0ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghRDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtrICsgMjQgPj4gMl0sIG4gPSBlW2sgKyAxNiA+PiAyXSwgZiA+Pj4gMCA+IG4gKyAyID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXgyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbayArIDIwID4+IDJdLCBlW1gyICsgNTYgPj4gMl0gPSBmIC0gaSwgZVtYMiArIDUyID4+IDJdID0gbiAtIGksIGVbWDIgKyA0OCA+PiAyXSA9IChmIC0gbiB8IDApIC0gMiwgUShmMiwgMiwgMjcyMzAsIFgyICsgNDggfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVtrICsgMTIgPj4gMl0sIGkgPj4+IDAgPCAzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbWDIgKyA4MCA+PiAyXSA9IGksIFEoZjIsIDIsIDE2NzEwLCBYMiArIDgwIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlW1gyICsgNjQgPj4gMl0gPSBpLCBRKGYyLCAyLCAxNjcxMCwgWDIgLSAtNjQgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2sgKyAyMCA+PiAyXSwgZVtYMiArIDQwID4+IDJdID0gZiAtIGksIGVbWDIgKyAzNiA+PiAyXSA9IG4gLSBpLCBlW1gyICsgMzIgPj4gMl0gPSAoZiAtIG4gfCAwKSAtIDIsIFEoZjIsIDIsIDI3MjMwLCBYMiArIDMyIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbeiArIDYwID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTE2ID4+IDJdID0gazA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG8gPSBlW3gwICsgNCA+PiAyXSwgbiA9IGVbeiArIDEyID4+IDJdLCBnID0gZVt6ICsgOCA+PiAyXSAtIGVbeDAgPj4gMl0gfCAwLCBmID0gZVt4MCArIDE2ID4+IDJdLCBmICYgMSAmJiAoaSA9IGVbRTAgKyAyOCA+PiAyXSArIFooYjAsIDE1MikgfCAwLCBnID0gKGVbaSAtIDE0NCA+PiAyXSArIGcgfCAwKSAtIGVbaSAtIDE1MiA+PiAyXSB8IDApLCBoID0gbiAtIG8gfCAwLCBmICYgMiAmJiAoaSA9IGVbRTAgKyAyOCA+PiAyXSArIFooYjAsIDE1MikgfCAwLCBoID0gKGVbaSAtIDE0MCA+PiAyXSArIGggfCAwKSAtIGVbaSAtIDE0OCA+PiAyXSB8IDApLCB1ID0gZVt6ICsgNjAgPj4gMl0sIEIgPSB1IHx8IGVbayArIDExNiA+PiAyXSwgQyA9IGVbayArIDEyOCA+PiAyXSwgcyA9IGVbayArIDEyNCA+PiAyXSwgciA9IGVbTTAgKyA4MDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAhQyB8ICFzLCAociB8IDApIDw9IDMwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gKFoodCwgcykgPDwgMikgKyBCIHwgMCwgaSA9IDA7IG4gPSBvICsgKGkgPDwgMikgfCAwLCB2ID0gZVtuID4+IDJdLCBmID0gdiA+PiAzMSwgZiA9IChmIF4gdikgLSBmIHwgMCwgZiA+Pj4gciB8IDAgJiYgKGYgPSBmID4+PiBlW00wICsgODA4ID4+IDJdIHwgMCwgZVtuID4+IDJdID0gKHYgfCAwKSA8IDAgPyAwIC0gZiB8IDAgOiBmKSwgaSA9IGkgKyAxIHwgMCwgKHMgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0ICsgMSB8IDAsIChDIHwgMCkgPT0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIGQyKEIsIDAsIFoocywgQykgPDwgMik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IFoocywgQyksIGVbTTAgKyAyMCA+PiAyXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaCkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IDAsIChoIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSBoICYgLTIsIG4gPSAwOyBvID0gKGkgPDwgMikgKyBCIHwgMCwgZVtvID4+IDJdID0gZVtvID4+IDJdIC8gMiwgZVtvICsgNCA+PiAyXSA9IGVbbyArIDQgPj4gMl0gLyAyLCBpID0gaSArIDIgfCAwLCBuID0gbiArIDIgfCAwLCAoZiB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaCAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAoaSA8PCAyKSArIEIgfCAwLCBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gLyAyOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGkwID0gVyhHW3gwICsgMzIgPj4gMl0gKiBXKDAuNSkpLCBoID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGggJiAtNCwgaSA9IDA7IEdbQiA+PiAyXSA9IGkwICogVyhlW0IgPj4gMl0pLCBHW0IgKyA0ID4+IDJdID0gaTAgKiBXKGVbQiArIDQgPj4gMl0pLCBHW0IgKyA4ID4+IDJdID0gaTAgKiBXKGVbQiArIDggPj4gMl0pLCBHW0IgKyAxMiA+PiAyXSA9IGkwICogVyhlW0IgKyAxMiA+PiAyXSksIEIgPSBCICsgMTYgfCAwLCBpID0gaSArIDQgfCAwLCAoZiB8IDApICE9IChpIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGggJiAzLCAhZikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IEdbQiA+PiAyXSA9IGkwICogVyhlW0IgPj4gMl0pLCBCID0gQiArIDQgfCAwLCBpID0gaSArIDEgfCAwLCAoZiB8IDApICE9IChpIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBhMSAtIGYxIHwgMCwgZVtNMCArIDIwID4+IDJdID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmICghQykKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IChlW0UwICsgMzYgPj4gMl0gKyAoWih0LCBoKSA8PCAyKSB8IDApICsgKGcgPDwgMikgfCAwLCBhID0gcyAmIC00LCBoID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAwLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IGwgKyAoWih0LCBoKSA8PCAyKSB8IDAsIHIgPSAoWihoLCBzKSA8PCAyKSArIEIgfCAwOyB2ID0gaSA8PCAyLCB3ID0gdiArIHIgfCAwLCBvID0gZVt3ICsgNCA+PiAyXSwgbiA9IGVbdyArIDggPj4gMl0sIGYgPSBlW3cgKyAxMiA+PiAyXSwgdiA9IHUgKyB2IHwgMCwgZVt2ID4+IDJdID0gZVt3ID4+IDJdIC8gMiwgZVt2ICsgMTIgPj4gMl0gPSAoZiB8IDApIC8gMiwgZVt2ICsgOCA+PiAyXSA9IChuIHwgMCkgLyAyLCBlW3YgKyA0ID4+IDJdID0gKG8gfCAwKSAvIDIsIGkgPSBpICsgNCB8IDAsIGEgPj4+IDAgPiBpID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA+PSBzID4+PiAwIHx8IChmID0gaSArIDEgfCAwLCBvID0gbCArIChaKHQsIGgpIDw8IDIpIHwgMCwgbiA9IChaKGgsIHMpIDw8IDIpICsgQiB8IDAsIHMgLSBpICYgMSAmJiAoaSA9IGkgPDwgMiwgZVtpICsgbyA+PiAyXSA9IGVbaSArIG4gPj4gMl0gLyAyLCBpID0gZiksIChmIHwgMCkgPT0gKHMgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBmID0gaSA8PCAyLCBlW2YgKyBvID4+IDJdID0gZVtmICsgbiA+PiAyXSAvIDIsIGYgPSBmICsgNCB8IDAsIGVbZiArIG8gPj4gMl0gPSBlW2YgKyBuID4+IDJdIC8gMiwgaSA9IGkgKyAyIHwgMCwgKHMgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBoICsgMSB8IDAsIChDIHwgMCkgPT0gKGggfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghQyB8ICFzKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGkwID0gVyhHW3gwICsgMzIgPj4gMl0gKiBXKDAuNSkpLCBoID0gKGVbRTAgKyAzNiA+PiAyXSArIChaKHQsIGgpIDw8IDIpIHwgMCkgKyAoZyA8PCAyKSB8IDAsIG4gPSBzICYgLTQsIG8gPSBzICYgMywgYSA9IDAsIGYgPSBzIC0gMSA+Pj4gMCA8IDM7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGgsIGsgPSAwLCAhZikKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEdbaSA+PiAyXSA9IGkwICogVyhlW0IgPj4gMl0pLCBHW2kgKyA0ID4+IDJdID0gaTAgKiBXKGVbQiArIDQgPj4gMl0pLCBHW2kgKyA4ID4+IDJdID0gaTAgKiBXKGVbQiArIDggPj4gMl0pLCBHW2kgKyAxMiA+PiAyXSA9IGkwICogVyhlW0IgKyAxMiA+PiAyXSksIGkgPSBpICsgMTYgfCAwLCBCID0gQiArIDE2IHwgMCwgayA9IGsgKyA0IHwgMCwgKG4gfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAwLCBvKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgR1tpID4+IDJdID0gaTAgKiBXKGVbQiA+PiAyXSksIGkgPSBpICsgNCB8IDAsIEIgPSBCICsgNCB8IDAsIGsgPSBrICsgMSB8IDAsIChvIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gKHQgPDwgMikgKyBoIHwgMCwgYSA9IGEgKyAxIHwgMCwgKEMgfCAwKSA9PSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW1gyID4+IDJdID0gcDIsIFEoZjIsIDIsIDE5MDAxLCBYMik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW2VbaCA+PiAyXSA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFIoQSksIFggPSBYMiArIDk2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBQZShBLCBpLCByLCBmLCBrLCB0KSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBrID0gayB8IDAsIHQgPSB0IHwgMDsKICAgICAgICAgICAgICB2YXIgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gMCwgQyA9IDAsIG0gPSAwLCB5ID0gMCwgcCA9IDAsIEggPSAwLCBKID0gMCwgRSA9IDAsIEQgPSAwLCBVID0gMCwgUCA9IDAsIHggPSAwLCB6ID0gMCwgaiA9IDAsIE8gPSAwLCBxID0gMCwgZjIgPSAwLCBuMiA9IDAsIGcyID0gMCwgdzIgPSAwLCBjMiA9IDAsIG0yID0gMCwgcDIgPSAwLCBZMiA9IDAsIFgyID0gMCwgRDIgPSAwLCBTMiA9IDAsIFAyID0gMCwgeDIgPSAwLCB6MiA9IDAsIEwyID0gMCwgZTAgPSBXKDApLCBpMCA9IDAsIHIwID0gMCwgazAgPSAwLCB0MCA9IDAsIGgwID0gMCwgQzAgPSAwLCBIMCA9IDAsIEUwID0gMCwgTTAgPSAwLCB4MCA9IDAsIFQwID0gMCwgYjAgPSAwLCBmMSA9IDAsIGExID0gMCwgWjEgPSAwLCBwMSA9IDAsIGoxID0gMCwgZWUgPSAwLCB3ZSA9IDAsIEJlID0gMCwgY2UgPSAwLCBZZSA9IDAsIEhlID0gMCwgWGUgPSAwLCBGZSA9IDAsIE9lID0gMCwgX2UgPSAwLCBiZSA9IDAsICRlID0gMCwgUWkgPSAwLCBWaSA9IDAsIFlpID0gMCwgSGkgPSAwLCBYaSA9IDAsIEZpID0gMCwgSmkgPSAwLCBSaSA9IDAsIEVpID0gMCwgRGkgPSAwLCBVaSA9IDAsIE1pID0gMCwgUXIgPSAwLCBWciA9IDAsIFlyID0gMCwgSHIgPSAwLCBYciA9IDAsIEZyID0gMCwgR2YgPSAwLCBXZiA9IDAsIG1mID0gMCwgeWYgPSAwLCBwZiA9IDAsIFFmID0gMCwgVmYgPSAwLCBZZiA9IDAsIEhmID0gMCwgWGYgPSAwLCBGZiA9IDAsIEpmID0gMCwgUmYgPSAwLCBFZiA9IDAsIERmID0gMCwgVWYgPSAwLCBNZiA9IDAsIFNmID0gMCwgTmYgPSAwLCBQZiA9IDAsIHhmID0gMCwgVGYgPSAwLCB6ZiA9IDAsIGRmID0gMCwgS2YgPSAwLCBqZiA9IDA7CiAgICAgICAgICAgICAgd2UgPSBYIC0gMTYgfCAwLCBYID0gd2U7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCEoSVtBICsgOCB8IDBdICYgMTI4KSB8IGVbQSArIDIwNCA+PiAyXSAhPSAoaSB8IDApKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKGVlID0gZVtBICsgMTU2ID4+IDJdICsgWihpLCA1NjQ0KSB8IDAsIEIgPSBlW2VlICsgNTU5NiA+PiAyXSwgIUIpIHsKICAgICAgICAgICAgICAgICAgdmkoZWUpOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgRCA9IGVbQSArIDIwOCA+PiAyXSwgVSA9IGVbQSArIDc2ID4+IDJdLCBVIHx8IChVID0gZVtBICsgNzIgPj4gMl0pLCBuID0gZVtVID4+IDJdLCBvID0gZVtVICsgNCA+PiAyXSwgYSA9IGVbVSArIDggPj4gMl0sIGggPSBlW1UgKyAxMiA+PiAyXSwgbCA9IGVbQSArIDYwID4+IDJdLCBnID0gZVtBICsgNjQgPj4gMl0sIHkgPSBlW2VlICsgNTYwMCA+PiAyXSwgTTAgPSBYIC0gMTYgfCAwLCBYID0gTTAsIGVbRCArIDM2ID4+IDJdID0gaSwgdSA9IGVbZVtEICsgMjggPj4gMl0gKyA3NiA+PiAyXSwgZVtEICsgNjQgPj4gMl0gPSAxLCBlW0QgKyA2MCA+PiAyXSA9IGgsIGVbRCArIDU2ID4+IDJdID0gYSwgZVtEICsgNTIgPj4gMl0gPSBvLCBlW0QgKyA0OCA+PiAyXSA9IG4sIGVbRCArIDMyID4+IDJdID0gdSArIFooaSwgNTY0NCksIFIoZVtEICsgNjggPj4gMl0pLCBlW0QgKyA2OCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHcyID0gRTIoNCwgZVtlW0QgKyAyNCA+PiAyXSArIDE2ID4+IDJdKSwgIXcyKSB7CiAgICAgICAgICAgICAgICAgICAgICBVID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChVID0gMCwgbCA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gbCAmIC00LCBuID0gMDsgaSA9IGcgKyAoVSA8PCAyKSB8IDAsIGVbKGVbaSA+PiAyXSA8PCAyKSArIHcyID4+IDJdID0gMSwgZVsoZVtpICsgNCA+PiAyXSA8PCAyKSArIHcyID4+IDJdID0gMSwgZVsoZVtpICsgOCA+PiAyXSA8PCAyKSArIHcyID4+IDJdID0gMSwgZVsoZVtpICsgMTIgPj4gMl0gPDwgMikgKyB3MiA+PiAyXSA9IDEsIFUgPSBVICsgNCB8IDAsIG4gPSBuICsgNCB8IDAsIChvIHwgMCkgIT0gKG4gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBsICYgMywgaSkKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyhlW2cgKyAoVSA8PCAyKSA+PiAyXSA8PCAyKSArIHcyID4+IDJdID0gMSwgVSA9IFUgKyAxIHwgMCwgbTIgPSBtMiArIDEgfCAwLCAoaSB8IDApICE9IChtMiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBlW0QgKyA2OCA+PiAyXSA9IHcyOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpID0gZVtEICsgMjQgPj4gMl0sIFAgPSBlW2kgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIVApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBVID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlWyhVIDw8IDIpICsgdzIgPj4gMl0gJiYgdzIgfHwgKHUgPSBlW2kgKyAyNCA+PiAyXSArIFooVSwgNTIpIHwgMCwgbiA9IGVbdSArIDQgPj4gMl0sIGcgPSBuIC0gMSB8IDAsIGggPSBlW0QgKyA2MCA+PiAyXSwgbCA9IGcgKyBoIHwgMCwgbyA9IDAgLSAhbiB8IDAsIGEgPSBvLCBoID0gbjAobCwgbCA+Pj4gMCA8IGggPj4+IDAgPyBhICsgMSB8IDAgOiBhLCBuLCAwKSwgbCA9IGVbdSA+PiAyXSwgdSA9IGwgLSAxIHwgMCwgYyA9IGVbRCArIDU2ID4+IDJdLCBzID0gdSArIGMgfCAwLCB3ID0gMCAtICFsIHwgMCwgYSA9IHcsIHMgPSBuMChzLCBzID4+PiAwIDwgYyA+Pj4gMCA/IGEgKyAxIHwgMCA6IGEsIGwsIDApLCBhID0gbywgYyA9IGVbRCArIDUyID4+IDJdLCBnID0gYyArIGcgfCAwLCBuID0gbjAoZywgZyA+Pj4gMCA8IGMgPj4+IDAgPyBhICsgMSB8IDAgOiBhLCBuLCAwKSwgZyA9IGVbZVtlW0QgKyAyMCA+PiAyXSA+PiAyXSArIDIwID4+IDJdICsgWihVLCA3NikgfCAwLCBvID0gZVtnICsgMjAgPj4gMl0gLSBlW2cgKyAyNCA+PiAyXSB8IDAsIG8gPj4+IDAgPiAzMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZVtEICsgNDggPj4gMl0sIGEgPSBjICsgdSB8IDAsIHUgPSB3LCBsID0gbjAoYSwgYSA+Pj4gMCA8IGMgPj4+IDAgPyB1ICsgMSB8IDAgOiB1LCBsLCAwKSwgYSA9IGwgLSBlW2cgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgPj4+IDAgPj0gYSA+Pj4gMCA/IGEgOiAwKSA+Pj4gbyB8IDAgfHwgKGwgPSBuIC0gZVtnICsgNCA+PiAyXSB8IDAsIChuID4+PiAwID49IGwgPj4+IDAgPyBsIDogMCkgPj4+IG8gfCAwKSB8fCAobiA9IGVbZyArIDggPj4gMl0sIGwgPSBuIC0gcyB8IDAsIChuID4+PiAwID49IGwgPj4+IDAgPyBsIDogMCkgPj4+IG8gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbZyArIDEyID4+IDJdLCBsID0gbiAtIGggfCAwLCAhKChuID4+PiAwID49IGwgPj4+IDAgPyBsIDogMCkgPj4+IG8gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtEICsgNjQgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFUgPSBVICsgMSB8IDAsIChQIHwgMCkgPT0gKFUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtEICsgNjQgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChtMiA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbZVtlW0QgKyAyMCA+PiAyXSA+PiAyXSArIDIwID4+IDJdICsgWihtMiwgNzYpIHwgMCwgbiA9IGVbaSArIDI4ID4+IDJdICsgWihlW2kgKyAyNCA+PiAyXSwgMTUyKSB8IDAsIGwgPSBlW24gLSAxNDggPj4gMl0sIGcgPSBlW24gLSAxNDAgPj4gMl0sIG8gPSBlW24gLSAxNTIgPj4gMl0sIGEgPSBlW24gLSAxNDQgPj4gMl0sIG4gPSBlW0QgKyA2OCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbbiArIChtMiA8PCAyKSA+PiAyXSAmJiBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGcgLSBsIHwgMCwgbyA9IGEgLSBvIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsIHwgMCkgPT0gKGcgfCAwKSB8fCAoZDAobiwgMCwgbywgMCksICFxMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVSA9IDAsIFEodCwgMSwgNDk1MSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IFoobiwgbyksIG4gPj4+IDAgPj0gMTA3Mzc0MTgyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVID0gMCwgUSh0LCAxLCA0OTUxLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIDw8IDIsIGVbaSArIDQ0ID4+IDJdID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtpICsgMzYgPj4gMl0sIGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPj4+IDAgPD0gZFtpICsgNDggPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDQwID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IFAwKG4pLCBlW2kgKyAzNiA+PiAyXSA9IG4sIGwgPSBuLCBuID0gZVtpICsgNDQgPj4gMl0sICEoIW4gfHwgbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA0MCA+PiAyXSA9IDEsIGVbaSArIDQ4ID4+IDJdID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSKGwpLCBuID0gUDAoZVtpICsgNDQgPj4gMl0pLCBlW2kgKyAzNiA+PiAyXSA9IG4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbaSArIDQ4ID4+IDJdID0gMCwgZVtpICsgNDAgPj4gMl0gPSAwLCBlW2kgKyA0NCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVSA9IDAsIFEodCwgMSwgNDk1MSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA0MCA+PiAyXSA9IDEsIGVbaSArIDQ4ID4+IDJdID0gZVtpICsgNDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtMiA9IG0yICsgMSB8IDAsIGkgPSBlW0QgKyAyNCA+PiAyXSwgIShtMiA+Pj4gMCA8IGRbaSArIDE2ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBlW2kgKyAyNCA+PiAyXSwgRSA9IGVbZVtlW0QgKyAyMCA+PiAyXSA+PiAyXSArIDIwID4+IDJdLCBuID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVsobiA8PCAyKSArIHcyID4+IDJdICYmIHcyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IEUgKyBaKG4sIDc2KSB8IDAsIHcgPSBlW2wgPj4gMl0sIHMgPSBqICsgWihuLCA1MikgfCAwLCBnID0gZVtzID4+IDJdLCBoID0gZyAtIDEgfCAwLCBjID0gZVtEICsgNDggPj4gMl0sIG8gPSBoICsgYyB8IDAsIHUgPSAwIC0gIWcgfCAwLCBhID0gdSwgbyA9IG4wKG8sIG8gPj4+IDAgPCBjID4+PiAwID8gYSArIDEgfCAwIDogYSwgZywgMCksIHYgPSBvID4+PiAwIDwgdyA+Pj4gMCA/IHcgOiBvLCBlW2wgKyA1NiA+PiAyXSA9IHYsIG8gPSBlW3MgKyA0ID4+IDJdLCB3ID0gbyAtIDEgfCAwLCBDID0gZVtEICsgNTIgPj4gMl0sIGMgPSB3ICsgQyB8IDAsIHMgPSAwIC0gIW8gfCAwLCBhID0gcywgbSA9IGVbbCArIDQgPj4gMl0sIGEgPSBuMChjLCBjID4+PiAwIDwgQyA+Pj4gMCA/IGEgKyAxIHwgMCA6IGEsIG8sIDApLCBDID0gYSA+Pj4gMCA8IG0gPj4+IDAgPyBtIDogYSwgZVtsICsgNjAgPj4gMl0gPSBDLCBhID0gdSwgYyA9IGVbbCArIDggPj4gMl0sIG0gPSBlW0QgKyA1NiA+PiAyXSwgaCA9IG0gKyBoIHwgMCwgZyA9IG4wKGgsIGggPj4+IDAgPCBtID4+PiAwID8gYSArIDEgfCAwIDogYSwgZywgMCksIGEgPSBnID4+PiAwID4gYyA+Pj4gMCA/IGMgOiBnLCBlW2wgKyA2NCA+PiAyXSA9IGEsIHUgPSBzLCBoID0gZVtsICsgMTIgPj4gMl0sIGcgPSB3LCB3ID0gZVtEICsgNjAgPj4gMl0sIGcgPSBnICsgdyB8IDAsIGcgPSBuMChnLCBnID4+PiAwIDwgdyA+Pj4gMCA/IHUgKyAxIHwgMCA6IHUsIG8sIDApLCBnID0gZyA+Pj4gMCA+IGggPj4+IDAgPyBoIDogZywgZVtsICsgNjggPj4gMl0gPSBnLCBhID4+PiAwIDwgdiA+Pj4gMCB8IGcgPj4+IDAgPCBDID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IGVbbCArIDIwID4+IDJdLCAhcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gZyAtIDEgfCAwLCB4ID0gMCAtICFnIHwgMCwgVSA9IGEgLSAxIHwgMCwgZjIgPSAwIC0gIWEgfCAwLCBtID0gQyAtIDEgfCAwLCBKID0gMCAtICFDIHwgMCwgQyA9IHYgLSAxIHwgMCwgcCA9IDAgLSAhdiB8IDAsIG4yID0gZVtsICsgMjggPj4gMl0sIGggPSAwLCBnID0gMDsgbCA9IG4yICsgWihoLCAxNTIpIHwgMCwgbyA9IHMgKyAoaCBeIC0xKSB8IDAsIHUgPSBvICYgMzEsIChvICYgNjMpID4+PiAwID49IDMyID8gKGEgPSAxIDw8IHUsIHcgPSAwKSA6ICh3ID0gMSA8PCB1LCBhID0gdyAtIDEgJiAxID4+PiAzMiAtIHUpLCB2ID0gdywgeiA9IGMgKyB2IHwgMCwgdyA9IGEsIHUgPSB4ICsgYSB8IDAsIHUgPSBjID4+PiAwID4geiA+Pj4gMCA/IHUgKyAxIHwgMCA6IHUsIGEgPSBvICYgMzEsIChvICYgNjMpID4+PiAwID49IDMyID8gYSA9IHUgPj4+IGEgfCAwIDogYSA9ICgoMSA8PCBhKSAtIDEgJiB1KSA8PCAzMiAtIGEgfCB6ID4+PiBhLCBlW2wgKyAxNDggPj4gMl0gPSBhLCBhID0gdyArIGYyIHwgMCwgdSA9IHYgKyBVIHwgMCwgYSA9IHUgPj4+IDAgPCB2ID4+PiAwID8gYSArIDEgfCAwIDogYSwgeiA9IHUsIHUgPSBvICYgMzEsIChvICYgNjMpID4+PiAwID49IDMyID8gYSA9IGEgPj4+IHUgfCAwIDogYSA9ICgoMSA8PCB1KSAtIDEgJiBhKSA8PCAzMiAtIHUgfCB6ID4+PiB1LCBlW2wgKyAxNDQgPj4gMl0gPSBhLCB1ID0gdyArIEogfCAwLCBhID0gdiArIG0gfCAwLCB1ID0gYSA+Pj4gMCA8IG0gPj4+IDAgPyB1ICsgMSB8IDAgOiB1LCB6ID0gYSwgYSA9IG8gJiAzMSwgKG8gJiA2MykgPj4+IDAgPj0gMzIgPyBhID0gdSA+Pj4gYSB8IDAgOiBhID0gKCgxIDw8IGEpIC0gMSAmIHUpIDw8IDMyIC0gYSB8IHogPj4+IGEsIGVbbCArIDE0MCA+PiAyXSA9IGEsIGEgPSB3ICsgcCB8IDAsIHUgPSB2ICsgQyB8IDAsIGEgPSB1ID4+PiAwIDwgQyA+Pj4gMCA/IGEgKyAxIHwgMCA6IGEsIHcgPSBsLCBsID0gbyAmIDMxLCAobyAmIDYzKSA+Pj4gMCA+PSAzMiA/IGwgPSBhID4+PiBsIHwgMCA6IGwgPSAoKDEgPDwgbCkgLSAxICYgYSkgPDwgMzIgLSBsIHwgdSA+Pj4gbCwgZVt3ICsgMTM2ID4+IDJdID0gbCwgdSA9IGcsIGggPSBoICsgMSB8IDAsIHUgPSBoID8gdSA6IHUgKyAxIHwgMCwgZyA9IHUsICEhKChoIHwgMCkgIT0gKHMgfCAwKSB8IHUpOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgMSB8IDAsIChQIHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKFUgPSAwLCBlW00wICsgOCA+PiAyXSA9IDAsIFAgPSBHcihpLCBlW0QgKyAyOCA+PiAyXSksICFQKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBuMiA9IGVbZVtEICsgMjAgPj4gMl0gPj4gMl0sIHYgPSBYIC0gMTQ0IHwgMCwgWCA9IHYsIHMgPSBlW1AgKyA0ID4+IDJdLCBnID0gZVtEICsgMzYgPj4gMl0sIFMyID0gZVtzICsgNzYgPj4gMl0gKyBaKGcsIDU2NDQpIHwgMCwgRDIgPSBlW1MyICsgNDIwID4+IDJdLCBZMiA9IGVbUCA+PiAyXSwgbSA9IFkyLCB3ID0gMCwgYyA9IDAsIG8gPSAwLCBoID0gWCAtIDMyIHwgMCwgWCA9IGgsIHogPSBlW3MgKyA3NiA+PiAyXSArIFooZywgNTY0NCkgfCAwLCBmMiA9IGVbeiArIDQyMCA+PiAyXSwgQyA9IGVbbSArIDE2ID4+IDJdLCBhID0gVTIoWihDLCA1MjgpKTsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBsID0gVTIoQyA8PCAyKTsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IG42KG0sIGVbcyArIDc2ID4+IDJdLCBnLCB0KSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gYSwgQyA+Pj4gMCA+PSA4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBDICYgLTg7IHUgPSAoYyA8PCAyKSArIGwgfCAwLCBlW3UgPj4gMl0gPSBuLCBlW3UgKyA0ID4+IDJdID0gbiArIDUyOCwgZVt1ICsgOCA+PiAyXSA9IG4gKyAxMDU2LCBlW3UgKyAxMiA+PiAyXSA9IG4gKyAxNTg0LCBlW3UgKyAxNiA+PiAyXSA9IG4gKyAyMTEyLCBlW3UgKyAyMCA+PiAyXSA9IG4gKyAyNjQwLCBlW3UgKyAyNCA+PiAyXSA9IG4gKyAzMTY4LCBlW3UgKyAyOCA+PiAyXSA9IG4gKyAzNjk2LCBjID0gYyArIDggfCAwLCBuID0gbiArIDQyMjQgfCAwLCB3ID0gdyArIDggfCAwLCAoaiB8IDApICE9ICh3IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IEMgJiA3LCAhdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyhjIDw8IDIpICsgbCA+PiAyXSA9IG4sIGMgPSBjICsgMSB8IDAsIG4gPSBuICsgNTI4IHwgMCwgSCA9IEggKyAxIHwgMCwgKHUgfCAwKSAhPSAoSCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGYyICsgMSB8IDAsIHRyKG0sIHMsIGcsIGggKyAyMCB8IDAsIGggKyAxNiB8IDAsIGggKyAxMiB8IDAsIGggKyA4IHwgMCwgaCArIDQgfCAwLCBoLCBoICsgMjQgfCAwLCBoICsgMjggfCAwLCBsKSwgRSA9IGVbaCArIDI4ID4+IDJdLCBqID0gZVtoICsgMjQgPj4gMl0sIGVbaSArIDQgPj4gMl0gPSAwLCBuID0gZVt6ICsgOCA+PiAyXSArIDEgfCAwLCBnMiA9IFooQywgaiksIHggPSBaKGcyLCBFKSwgZDAobiwgMCwgeCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxMiAmJiAobiA9IFoobiwgeCksIGVbaSArIDggPj4gMl0gPSBuLCBuID0gRTIobiwgMiksIGVbaSArIDQgPj4gMl0gPSBuLCBuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSKGEpLCBSKGwpLCBuID0gZVtpICsgNCA+PiAyXSwgbiAmJiAoUihuKSwgZVtpICsgNCA+PiAyXSA9IDApLCAhcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IDAsIHcgPSBpOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbdyArIDIwMCA+PiAyXSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtID0gMCwgYyA9IGVbdyArIDE5NiA+PiAyXSwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGwgPSBlW24gKyAxMiA+PiAyXSwgbCAmJiAoUihsKSwgZVtuICsgMTIgPj4gMl0gPSAwLCBjID0gZVt3ICsgMTk2ID4+IDJdKSwgbiA9IG4gKyAxNiB8IDAsIG0gPSBtICsgMSB8IDAsIGMgPj4+IDAgPiBtID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlW3cgKyAyMDAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIobiksIGVbdyArIDIwMCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSB3ICsgMjQwIHwgMCwgbiA9IChnIHwgMCkgPT0gKGYyIHwgMCksIGcgPSBnICsgMSB8IDAsICEhbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBlW20gKyAyNCA+PiAyXSwgWDIgPSBlW2ggKyAyMCA+PiAyXSwgZVtpICsgMjA0ID4+IDJdID0gWDIsIHoyID0gZVtoICsgMTIgPj4gMl0sIGVbaSArIDIwOCA+PiAyXSA9IHoyLCBpMCA9IGVbaCArIDE2ID4+IDJdLCBlW2kgKyAyMTIgPj4gMl0gPSBpMCwgTDIgPSBlW2ggKyA4ID4+IDJdLCBlW2kgKyAyMTYgPj4gMl0gPSBMMiwgZVtpICsgMTIgPj4gMl0gPSB4LCBlW2kgKyAxNiA+PiAyXSA9IGcyLCBlW2kgKyAyMCA+PiAyXSA9IGosIEogPSAxLCBlW2kgKyAyNCA+PiAyXSA9IDEsIEMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBlW2kgKyAyMDAgPj4gMl0sIEggPSAwLCBnID0gbzsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbKEggPDwgMikgKyBsID4+IDJdLCBlW3cgPj4gMl0gPSBlW2cgPj4gMl0sIGVbdyArIDQgPj4gMl0gPSBlW2cgKyA0ID4+IDJdLCB1ID0gZVt3ICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0gPSBlW3cgKyAxMiA+PiAyXSwgKHUgfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gdSAmIC0yLCBjID0gMDsgZVttID4+IDJdID0gZVtuID4+IDJdLCBlW20gKyA0ID4+IDJdID0gZVtuICsgNCA+PiAyXSwgZVttICsgOCA+PiAyXSA9IGVbbiArIDggPj4gMl0sIGVbbSArIDEyID4+IDJdID0gZVtuICsgMTIgPj4gMl0sIGVbbSArIDE2ID4+IDJdID0gZVtuICsgMTYgPj4gMl0sIGVbbSArIDIwID4+IDJdID0gZVtuICsgMjAgPj4gMl0sIGVbbSArIDI0ID4+IDJdID0gZVtuICsgMjQgPj4gMl0sIGVbbSArIDI4ID4+IDJdID0gZVtuICsgMjggPj4gMl0sIG0gPSBtICsgMzIgfCAwLCBuID0gbiArIDMyIHwgMCwgYyA9IGMgKyAyIHwgMCwgKHMgfCAwKSAhPSAoYyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh1ICYgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbSA+PiAyXSA9IGVbbiA+PiAyXSwgZVttICsgNCA+PiAyXSA9IGVbbiArIDQgPj4gMl0sIGVbbSArIDggPj4gMl0gPSBlW24gKyA4ID4+IDJdLCBlW20gKyAxMiA+PiAyXSA9IGVbbiArIDEyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZyArIDUyIHwgMCwgdyA9IHcgKyAxNiB8IDAsIEggPSBIICsgMSB8IDAsIChDIHwgMCkgPT0gKEggfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCA+Pj4gMCA+IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHMgPSBpOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtzICsgNDU2ID4+IDJdID0gTDIsIGVbcyArIDQ1MiA+PiAyXSA9IGkwLCBlW3MgKyA0NDggPj4gMl0gPSB6MiwgZVtzICsgNDQ0ID4+IDJdID0gWDIsIGVbcyArIDI2NCA+PiAyXSA9IDEsIGVbcyArIDI2MCA+PiAyXSA9IGosIGVbcyArIDI1NiA+PiAyXSA9IGcyLCBlW3MgKyAyNTIgPj4gMl0gPSB4LCBDKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IGVbcyArIDQ0MCA+PiAyXSwgSCA9IDAsIGcgPSBvOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbKEggPDwgMikgKyBsID4+IDJdLCBlW3cgPj4gMl0gPSBlW2cgPj4gMl0sIGVbdyArIDQgPj4gMl0gPSBlW2cgKyA0ID4+IDJdLCB1ID0gZVt3ICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtID0gZVt3ICsgMTIgPj4gMl0sICh1IHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgPSB1ICYgLTIsIGMgPSAwOyBlW20gPj4gMl0gPSBlW24gPj4gMl0sIGVbbSArIDQgPj4gMl0gPSBlW24gKyA0ID4+IDJdLCBlW20gKyA4ID4+IDJdID0gZVtuICsgOCA+PiAyXSwgZVttICsgMTIgPj4gMl0gPSBlW24gKyAxMiA+PiAyXSwgZVttICsgMTYgPj4gMl0gPSBlW24gKyAxNiA+PiAyXSwgZVttICsgMjAgPj4gMl0gPSBlW24gKyAyMCA+PiAyXSwgZVttICsgMjQgPj4gMl0gPSBlW24gKyAyNCA+PiAyXSwgZVttICsgMjggPj4gMl0gPSBlW24gKyAyOCA+PiAyXSwgbSA9IG0gKyAzMiB8IDAsIG4gPSBuICsgMzIgfCAwLCBjID0gYyArIDIgfCAwLCAocCB8IDApICE9IChjIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodSAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbSA+PiAyXSA9IGVbbiA+PiAyXSwgZVttICsgNCA+PiAyXSA9IGVbbiArIDQgPj4gMl0sIGVbbSArIDggPj4gMl0gPSBlW24gKyA4ID4+IDJdLCBlW20gKyAxMiA+PiAyXSA9IGVbbiArIDEyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBnICsgNTIgfCAwLCB3ID0gdyArIDE2IHwgMCwgSCA9IEggKyAxIHwgMCwgKEMgfCAwKSA9PSAoSCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gZVtzICsgOCA+PiAyXSwgZVtzICsgMjQ0ID4+IDJdID0gZVtzICsgNCA+PiAyXSwgZVtzICsgMjQ4ID4+IDJdID0gbiwgbiA9IChKIHwgMCkgIT0gKGYyIHwgMCksIHMgPSBzICsgMjQwIHwgMCwgSiA9IEogKyAxIHwgMCwgIW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgUihhKSwgUihsKSwgbCA9IGVbeiArIDQyMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSVt6ICsgNTY0MCB8IDBdICYgNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgfCAwKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG0gPSB6ICsgNDI0IHwgMCwgZyA9IGVbeiArIDggPj4gMl0sIGMgPSAwLCBuID0gaTsgbyA9IGVbbSArIDM2ID4+IDJdLCBlW24gKyA0NCA+PiAyXSA9IDEsIGVbbiArIDg0ID4+IDJdID0gbywgZVtuICsgNDggPj4gMl0gPSBlW20gPj4gMl0sIG8gPSBlW20gKyA0ID4+IDJdLCBlW24gKyA2OCA+PiAyXSA9IDAsIGVbbiArIDcyID4+IDJdID0gMCwgZVtuICsgNTIgPj4gMl0gPSBvLCBlW24gKyA2MCA+PiAyXSA9IGVbbSArIDEyID4+IDJdLCBlW24gKyA2NCA+PiAyXSA9IGVbbSArIDE2ID4+IDJdLCBvID0gZVttICsgOCA+PiAyXSwgZVtuICsgNzYgPj4gMl0gPSBqLCBlW24gKyA1NiA+PiAyXSA9IG8gPj4+IDAgPCBnID4+PiAwID8gbyA6IGcsIG0gPSBtICsgMTQ4IHwgMCwgbiA9IG4gKyAyNDAgfCAwLCBvID0gKGwgfCAwKSA9PSAoYyB8IDApLCBjID0gYyArIDEgfCAwLCAhbzsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCB8IDApID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBlW3ogKyA4ID4+IDJdLCBvID0gZVt6ICsgNCA+PiAyXSwgbiA9IGksIGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IGwgKyAxICYgLTIsIEggPSAwOyBlW24gKyA2OCA+PiAyXSA9IDAsIGVbbiArIDcyID4+IDJdID0gMCwgZVtuICsgNTIgPj4gMl0gPSAwLCBlW24gKyA0NCA+PiAyXSA9IDEsIGVbbiArIDQ4ID4+IDJdID0gMCwgZVtuICsgODQgPj4gMl0gPSBvLCBlW24gKyA2MCA+PiAyXSA9IEUsIGVbbiArIDMyNCA+PiAyXSA9IG8sIGVbbiArIDc2ID4+IDJdID0gaiwgZVtuICsgNTYgPj4gMl0gPSBnLCBlW24gKyAzMDggPj4gMl0gPSAwLCBlW24gKyAzMTIgPj4gMl0gPSAwLCBlW24gKyAyOTIgPj4gMl0gPSAwLCBlW24gKyAyODQgPj4gMl0gPSAxLCBlW24gKyAyODggPj4gMl0gPSAwLCBlW24gKyAzMDAgPj4gMl0gPSBFLCBlW24gKyAyOTYgPj4gMl0gPSBnLCBlW24gKyAzMTYgPj4gMl0gPSBqLCBlW24gKyA2NCA+PiAyXSA9IGVbbiArIDE5NiA+PiAyXSwgZVtuICsgMzA0ID4+IDJdID0gZVtuICsgNDM2ID4+IDJdLCBuID0gbiArIDQ4MCB8IDAsIEggPSBIICsgMiB8IDAsIChhIHwgMCkgIT0gKEggfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsICYgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbiArIDY4ID4+IDJdID0gMCwgZVtuICsgNzIgPj4gMl0gPSAwLCBlW24gKyA1MiA+PiAyXSA9IDAsIGVbbiArIDQ0ID4+IDJdID0gMSwgZVtuICsgNDggPj4gMl0gPSAwLCBlW24gKyA4NCA+PiAyXSA9IG8sIGVbbiArIDYwID4+IDJdID0gRSwgZVtuICsgNzYgPj4gMl0gPSBqLCBlW24gKyA1NiA+PiAyXSA9IGcsIGVbbiArIDY0ID4+IDJdID0gZVtuICsgMTk2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIFIoYSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBSKGwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBYID0gaCArIDMyIHwgMDsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gbywgaiA9IEQyICsgMSB8IDAsIHMgPSBCLCBjID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtjICsgODQgPj4gMl0gPT0gLTEgfHwgKGkgPSBVMihlW1kyICsgMTYgPj4gMl0gPDwgMiksICFpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeiA9IGQyKGksIDEsIGVbWTIgKyAxNiA+PiAyXSA8PCAyKSwgbGUoYykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gZVtuMiArIDIwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRbYyArIDQwID4+IDJdID49IGRbUzIgKyAxMiA+PiAyXSB8fCAobiA9IGVbYyArIDMyID4+IDJdLCBpID0gWihlW2MgKyAyOCA+PiAyXSwgNzYpICsgQyB8IDAsIG4gPj4+IDAgPj0gZFtpICsgMjQgPj4gMl0pIHx8IChuID0gZVtpICsgMjggPj4gMl0gKyBaKG4sIDE1MikgfCAwLCAhZVtuICsgMjQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gbiArIDI4IHwgMCwgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gZyArIFoobCwgMzYpIHwgMCwgaSA9IGVbbyArIDIwID4+IDJdICsgWihlW2MgKyAzNiA+PiAyXSwgNDApIHwgMCwgIWxyKEQsIGVbYyArIDI4ID4+IDJdLCBlW2MgKyAzMiA+PiAyXSwgZVtvICsgMTYgPj4gMl0sIGVbaSA+PiAyXSwgZVtpICsgNCA+PiAyXSwgZVtpICsgOCA+PiAyXSwgZVtpICsgMTIgPj4gMl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsICsgMSB8IDAsIGwgPj4+IDAgPCBkW24gKyAyNCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt6ICsgKGVbYyArIDI4ID4+IDJdIDw8IDIpID4+IDJdID0gMCwgZVt2ICsgMTM2ID4+IDJdID0gMCwgIXk0KGVbUCArIDQgPj4gMl0sIGVbbjIgKyAyMCA+PiAyXSwgUzIsIGMsIHYgKyAxNDAgfCAwLCBzLCB2ICsgMTM2IHwgMCwgeSwgdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbYyArIDMyID4+IDJdLCBsID0gZVtjICsgMjggPj4gMl0sIGYyID0gZVt2ICsgMTM2ID4+IDJdLCBlW3YgKyAxNDAgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSAwLCBlW3YgKyAxMzYgPj4gMl0gPSAwLCBEMiA9IGVbKGVbbjIgKyAyMCA+PiAyXSArIFoobCwgNzYpIHwgMCkgKyAyOCA+PiAyXSArIFooaSwgMTUyKSB8IDAsIEMgPSBlW0QyICsgMjQgPj4gMl0sIEMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcyID0geSAtIGYyIHwgMCwgWDIgPSBzICsgeSB8IDAsIHUgPSBEMiArIDI4IHwgMCwgdyA9IDAsIHAgPSAwLCBpMCA9IHMgKyBmMiB8IDAsIGEgPSBpMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbdSArIDggPj4gMl0gPT0gZVt1ID4+IDJdIHwgZVt1ICsgMTIgPj4gMl0gPT0gZVt1ICsgNCA+PiAyXSB8fCAoaSA9IGVbdSArIDIwID4+IDJdICsgWihlW2MgKyAzNiA+PiAyXSwgNDApIHwgMCwgTDIgPSBaKGVbaSArIDIwID4+IDJdLCBlW2kgKyAxNiA+PiAyXSksICFMMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gZVtpICsgMjQgPj4gMl0sIEogPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwICYmIChlW0MgKyA1MiA+PiAyXSA9IDApLCBvID0gZVtDICsgMzYgPj4gMl0sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlW0MgPj4gMl0sIEggPSBlW0MgKyA0MCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IFooSCwgMjQpICsgbCB8IDAsIGVbbCAtIDIwID4+IDJdICE9IGVbbCAtIDEyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbCAtIDI0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSBIICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0MgKyA0MCA+PiAyXSA9IEg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbbCArIDIwID4+IDJdLCBwIHwgaSA+Pj4gMCA+IChhIF4gLTEpID4+PiAwIHwgWDIgPj4+IDAgPCBpICsgYSA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IGVbQyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW0MgKyA1MiA+PiAyXSwgeCA9IGVbQyArIDU2ID4+IDJdLCAobiB8IDApID09ICh4IHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPSBuIDw8IDEgfCAxLCBFID0gbzAoRSwgeCA8PCAzKSwgIUUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtDICsgNTYgPj4gMl0gPSB4LCBlW0MgKyA0ID4+IDJdID0gRSwgSCA9IGVbQyArIDQwID4+IDJdLCBvID0gZVtDICsgMzYgPj4gMl0sIG4gPSBlW0MgKyA1MiA+PiAyXSwgaSA9IGVbbCArIDIwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSAobiA8PCAzKSArIEUgfCAwLCBlW2cgKyA0ID4+IDJdID0gaSwgZVtnID4+IDJdID0gYSwgbiA9IG4gKyAxIHwgMCwgZVtDICsgNTIgPj4gMl0gPSBuLCBlW2wgPj4gMl0gPSBlW2wgPj4gMl0gKyBpLCBnID0gZVtsICsgMTYgPj4gMl0sIHAgPSBnICsgZVtsICsgNCA+PiAyXSB8IDAsIGVbbCArIDQgPj4gMl0gPSBwLCBtID0gbyAtIGcgfCAwLCBlW0MgKyAzNiA+PiAyXSA9IG0sIGVbbCArIDggPj4gMl0gPSBwLCBhID0gaSArIGEgfCAwLCBwID0gMCwgKG8gfCAwKSA9PSAoZyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIID0gSCArIDEgfCAwLCBlW0MgKyA0MCA+PiAyXSA9IEgsIGcgPSBsICsgMjQgfCAwLCBpID0gZVtsICsgNDQgPj4gMl0sICEoaSA+Pj4gMCA8PSAoYSBeIC0xKSA+Pj4gMCAmIFgyID4+PiAwID49IGkgKyBhID4+PiAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgIT0gKHggfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPSB4IDw8IDEgfCAxLCBFID0gbzAoRSwgeCA8PCAzKSwgIUUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQyArIDU2ID4+IDJdID0geCwgZVtDICsgNCA+PiAyXSA9IEUsIEggPSBlW0MgKyA0MCA+PiAyXSwgbiA9IGVbQyArIDUyID4+IDJdLCBpID0gZVtsICsgNDQgPj4gMl0sIG8gPSBlW0MgKyAzNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA9IChuIDw8IDMpICsgRSB8IDAsIGVbbSArIDQgPj4gMl0gPSBpLCBlW20gPj4gMl0gPSBhLCBuID0gbiArIDEgfCAwLCBlW0MgKyA1MiA+PiAyXSA9IG4sIGVbbCArIDI0ID4+IDJdID0gZVtsICsgMjQgPj4gMl0gKyBpLCB6MiA9IGVbbCArIDQwID4+IDJdLCBPID0gejIgKyBlW2wgKyAyOCA+PiAyXSB8IDAsIGVbbCArIDI4ID4+IDJdID0gTywgbSA9IG8gLSB6MiB8IDAsIGVbQyArIDM2ID4+IDJdID0gbSwgZVtsICsgMzIgPj4gMl0gPSBPLCBhID0gaSArIGEgfCAwLCBsID0gZywgKG8gfCAwKSA9PSAoejIgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEodCwgMSwgMTAzNSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbYyArIDI4ID4+IDJdLCBnID0gZVtjICsgMzIgPj4gMl0sIG8gPSBlW2MgKyAzNiA+PiAyXSwgZVtlW1AgKyA0ID4+IDJdICsgMTA0ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt2ICsgMTIwID4+IDJdID0gbiwgZVt2ICsgMTE2ID4+IDJdID0gZywgZVt2ICsgMTEyID4+IDJdID0gdywgZVt2ICsgMTA4ID4+IDJdID0gbywgZVt2ICsgMTA0ID4+IDJdID0gSiwgZVt2ICsgMTAwID4+IDJdID0gZzIsIGVbdiArIDk2ID4+IDJdID0gaSwgUSh0LCAxLCAyNjIzNCwgdiArIDk2IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt2ICsgODggPj4gMl0gPSBuLCBlW3YgKyA4NCA+PiAyXSA9IGcsIGVbdiArIDgwID4+IDJdID0gdywgZVt2ICsgNzYgPj4gMl0gPSBvLCBlW3YgKyA3MiA+PiAyXSA9IEosIGVbdiArIDY4ID4+IDJdID0gZzIsIGVbdiArIDY0ID4+IDJdID0gaSwgUSh0LCAyLCAyNjIzNCwgdiAtIC02NCB8IDApLCBlW0MgKyA1MiA+PiAyXSA9IDAsIGkgPSBlW2wgKyAxNiA+PiAyXSwgZVtsICsgNCA+PiAyXSA9IGkgKyBlW2wgKyA0ID4+IDJdLCBuID0gZVtDICsgMzYgPj4gMl0sIGVbQyArIDM2ID4+IDJdID0gbiAtIGksIEggPSBlW0MgKyA0MCA+PiAyXSwgcCA9IDEsIChpIHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gSCArIDEgfCAwLCBlW0MgKyA0MCA+PiAyXSA9IEg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0MgKyA0NCA+PiAyXSA9IEg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDID0gQyAtIC02NCB8IDAsIEogPSBKICsgMSB8IDAsIChMMiB8IDApID09IChKIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gZVtEMiArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSB1ICsgMzYgfCAwLCB3ID0gdyArIDEgfCAwLCAhKHcgPj4+IDAgPCBDID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwID8gZzIgOiBhIC0gaTAgfCAwLCBsID0gZVtjICsgMjggPj4gMl0sIGkgPSBlW2MgKyAzMiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMiA9IGEgKyBmMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZVtZMiArIDI0ID4+IDJdICsgWihsLCA1MikgfCAwLCBuID0gZVtnICsgMzYgPj4gMl0sIGVbZyArIDM2ID4+IDJdID0gaSA+Pj4gMCA+IG4gPj4+IDAgPyBpIDogbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgPSBlW24yICsgMjAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbdiArIDEzNiA+PiAyXSA9IDAsICF5NChlW1AgKyA0ID4+IDJdLCBDLCBTMiwgYywgdiArIDE0MCB8IDAsIHMsIHYgKyAxMzYgfCAwLCB5LCB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbYyArIDI4ID4+IDJdLCBmMiA9IGVbdiArIDEzNiA+PiAyXSwgIWVbdiArIDE0MCA+PiAyXSB8fCAodyA9IGVbKGVbbjIgKyAyMCA+PiAyXSArIFoobCwgNzYpIHwgMCkgKyAyOCA+PiAyXSArIFooZVtjICsgMzIgPj4gMl0sIDE1MikgfCAwLCBDID0gZVt3ICsgMjQgPj4gMl0sICFDKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSB5IC0gZjIgfCAwLCBvID0gdyArIDI4IHwgMCwgbiA9IDAsIHggPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW28gKyA4ID4+IDJdID09IGVbbyA+PiAyXSB8IGVbbyArIDEyID4+IDJdID09IGVbbyArIDQgPj4gMl0gfHwgKGkgPSBlW28gKyAyMCA+PiAyXSArIFooZVtjICsgMzYgPj4gMl0sIDQwKSB8IDAsIEggPSBaKGVbaSArIDIwID4+IDJdLCBlW2kgKyAxNiA+PiAyXSksICFIKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbaSArIDI0ID4+IDJdLCBFID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtsICsgMzYgPj4gMl0sICFhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gZVtsID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2wgKyA0MCA+PiAyXSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDID0gWihpLCAyNCkgKyBDIHwgMCwgZVtDIC0gMjAgPj4gMl0gIT0gZVtDIC0gMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgPSBDIC0gMjQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDIgPSBpICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtsICsgNDAgPj4gMl0gPSBwMiwgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW0MgKyAyMCA+PiAyXSwgaSA9IHUgKyBuIHwgMCwgIShpID4+PiAwID49IHUgPj4+IDAgJiBpID4+PiAwIDw9IGcgPj4+IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbYyArIDI4ID4+IDJdLCBhID0gZVtjICsgMzIgPj4gMl0sIG0gPSBlW2MgKyAzNiA+PiAyXSwgZVtlW1AgKyA0ID4+IDJdICsgMTA0ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt2ICsgMjQgPj4gMl0gPSBpLCBlW3YgKyAyMCA+PiAyXSA9IGEsIGVbdiArIDE2ID4+IDJdID0geCwgZVt2ICsgMTIgPj4gMl0gPSBtLCBlW3YgKyA4ID4+IDJdID0gRSwgZVt2ICsgNCA+PiAyXSA9IGcsIGVbdiA+PiAyXSA9IHUsIFEodCwgMiwgMjYxNDksIHYpLCBhID0gZVtsICsgMzYgPj4gMl0sIGkgPSBlW0MgKyAyMCA+PiAyXSArIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbQyArIDE2ID4+IDJdLCBlW0MgKyA0ID4+IDJdID0gdSArIGVbQyArIDQgPj4gMl0sIG4gPSBhIC0gdSB8IDAsIGVbbCArIDM2ID4+IDJdID0gbiwgKGEgfCAwKSAhPSAodSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdiArIDU2ID4+IDJdID0gaSwgZVt2ICsgNTIgPj4gMl0gPSBhLCBlW3YgKyA0OCA+PiAyXSA9IHgsIGVbdiArIDQ0ID4+IDJdID0gbSwgZVt2ICsgNDAgPj4gMl0gPSBFLCBlW3YgKyAzNiA+PiAyXSA9IGcsIGVbdiArIDMyID4+IDJdID0gdSwgUSh0LCAxLCAyNjE0OSwgdiArIDMyIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gQyArIDI0IHwgMCwgcDIgPSBlW2wgKyA0MCA+PiAyXSArIDEgfCAwLCBhID0gbiwgbiA9IGksIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAtNjQgfCAwLCBFID0gRSArIDEgfCAwLCAoSCB8IDApID09IChFIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gZVt3ICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gbyArIDM2IHwgMCwgeCA9IHggKyAxIHwgMCwgISh4ID4+PiAwIDwgQyA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZVtjICsgMjggPj4gMl0sIGYyID0gbiArIGYyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW3ogKyAobCA8PCAyKSA+PiAyXSB8fCAoaSA9IGVbWTIgKyAyNCA+PiAyXSArIFoobCwgNTIpIHwgMCwgZVtpICsgMzYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbaSArIDM2ID4+IDJdID0gZVsoZVtuMiArIDIwID4+IDJdICsgWihsLCA3NikgfCAwKSArIDI0ID4+IDJdIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5ID0geSAtIGYyIHwgMCwgcyA9IHMgKyBmMiB8IDAsICFsZShjKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUih6KSwgYyA9IGMgKyAyNDAgfCAwLCBQMiA9IFAyICsgMSB8IDAsICEoUDIgPj4+IDAgPD0gZFtTMiArIDQyMCA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaShoLCBqKSwgZVtNMCArIDggPj4gMl0gPSBzIC0gQiwgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBDaShoLCBqKSwgUih6KTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIENpKGgsIGopOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChYID0gdiArIDE0NCB8IDAsIEkxKFApLCAhaSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgVSA9IGVbZVtEICsgMzIgPj4gMl0gKyA1NTg0ID4+IDJdLCBDID0gZVtlW0QgKyAyMCA+PiAyXSA+PiAyXSwgYyA9IGVbQyArIDIwID4+IDJdLCBlW00wICsgMTIgPj4gMl0gPSAxLCB5ID0gYWYoKSwgbTIgPSAwLCBnID0gMCwgaSA9IGVbRCArIDMyID4+IDJdLCBnID0gZVtpICsgMTIgPj4gMl0gPT0gZVtpICsgOCA+PiAyXSA/IGVbVSArIDE2ID4+IDJdID4+PiA0ICYgMSA6IGcsIGkgPSBlW0MgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW0QgKyA2OCA+PiAyXSwgISghZVtuICsgKG0yIDw8IDIpID4+IDJdICYmIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IE0wICsgMTIgfCAwLCBhID0gMCwgbCA9IGVbYyArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQiA9IGVbRCArIDQ0ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbYyArIDI4ID4+IDJdICsgWihhLCAxNTIpIHwgMCwgbyA9IGVbaCArIDI0ID4+IDJdLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwMiA9IGggKyAyOCB8IDAsIGwgPSBlW2ggKyAyMCA+PiAyXSwgaSA9IGVbaCArIDE2ID4+IDJdLCBtID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChaKGksIGwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IHAyICsgWihtLCAzNikgfCAwLCB1ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVt3ICsgMjAgPj4gMl0gKyBaKHUsIDQwKSB8IDAsIGwgPSBscihELCBlW2MgKyAxNiA+PiAyXSwgYSwgZVt3ICsgMTYgPj4gMl0sIGVbbiA+PiAyXSwgZVtuICsgNCA+PiAyXSwgZVtuICsgOCA+PiAyXSwgZVtuICsgMTIgPj4gMl0pLCBvID0gZVtuICsgMjAgPj4gMl0sIHMgPSBlW24gKyAxNiA+PiAyXSwgaSA9IFoobywgcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGVbbiArIDI0ID4+IDJdICsgKHMgPDwgNikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbHIoRCwgZVtjICsgMTYgPj4gMl0sIGEsIGVbdyArIDE2ID4+IDJdLCBlW2wgKyA4ID4+IDJdLCBlW2wgKyAxMiA+PiAyXSwgZVtsICsgMTYgPj4gMl0sIGVbbCArIDIwID4+IDJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbbCArIDYwID4+IDJdLCAhaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGkpLCBlW2wgKyA2MCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbRCArIDY0ID4+IDJdICYmIGVbbCArIDYwID4+IDJdIHwgZVtsICsgMTYgPj4gMl0gPT0gZVtsICsgOCA+PiAyXSB8IGVbbCArIDIwID4+IDJdID09IGVbbCArIDEyID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBFMigxLCA0NCksICFpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbTTAgKyAxMiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGVbRCArIDY0ID4+IDJdLCBlW2kgKyAzNiA+PiAyXSA9IHksIGVbaSArIDI4ID4+IDJdID0gdiwgZVtpICsgMjAgPj4gMl0gPSBVLCBlW2kgKyAxNiA+PiAyXSA9IGMsIGVbaSArIDEyID4+IDJdID0gdywgZVtpICsgOCA+PiAyXSA9IGwsIGVbaSArIDQgPj4gMl0gPSBhLCBlW2kgPj4gMl0gPSBvLCBlW2kgKyA0MCA+PiAyXSA9IGcsIGVbaSArIDMyID4+IDJdID0gdCwgZVtpICsgMjQgPj4gMl0gPSBlW0IgKyA0ID4+IDJdID4gMSwgYjEoQiwgMjQ5LCBpKSwgIWVbTTAgKyAxMiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBzICsgMSB8IDAsICEocyA+Pj4gMCA8IFooZVtuICsgMjAgPj4gMl0sIGVbbiArIDE2ID4+IDJdKSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgbCA9IGVbbiArIDI0ID4+IDJdICsgKGkgPDwgNikgfCAwLCBQID0gZVtsICsgNjAgPj4gMl0sIFAgJiYgKFIoUCksIGVbbCArIDYwID4+IDJdID0gMCwgcyA9IGVbbiArIDE2ID4+IDJdLCBvID0gZVtuICsgMjAgPj4gMl0pLCBpID0gaSArIDEgfCAwLCBpID4+PiAwIDwgWihvLCBzKSA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gdSArIDEgfCAwLCBpID0gZVtoICsgMTYgPj4gMl0sIGwgPSBlW2ggKyAyMCA+PiAyXSwgISh1ID4+PiAwIDwgWihpLCBsKSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZVtoICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA9IG0gKyAxIHwgMCwgIShtID4+PiAwIDwgbyA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZVtjICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhICsgMSB8IDAsICEoYSA+Pj4gMCA8IGwgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbTTAgKyAxMiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbQyArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVID0gVSArIDEwODAgfCAwLCBjID0gYyArIDc2IHwgMCwgbTIgPSBtMiArIDEgfCAwLCAhKG0yID4+PiAwIDwgaSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChVID0gMCwgbDEoZVtEICsgNDQgPj4gMl0pLCB5ICYmIEkxKHkpLCAhZVtNMCArIDEyID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtEICsgNjQgPj4gMl0gfHwgKG0yID0gZVtEICsgMjQgPj4gMl0sICFlW20yICsgMTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbZVtlW0QgKyAyMCA+PiAyXSA+PiAyXSArIDIwID4+IDJdICsgWihjLCA3NikgfCAwLCBuID0gZVtpICsgMjggPj4gMl0gKyBaKGVbKGVbbTIgKyAyNCA+PiAyXSArIFooYywgNTIpIHwgMCkgKyAzNiA+PiAyXSwgMTUyKSB8IDAsIGwgPSBlW24gKyAxMzYgPj4gMl0sIGcgPSBlW24gKyAxNDQgPj4gMl0sIG8gPSBlW24gKyAxNDAgPj4gMl0sIG4gPSBlW24gKyAxNDggPj4gMl0sIFIoZVtpICsgNTIgPj4gMl0pLCBlW2kgKyA1MiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbRCArIDY4ID4+IDJdLCAobCB8IDApID09IChnIHwgMCkgfCAoZVthICsgKGMgPDwgMikgPj4gMl0gPyAwIDogYSkgfCAobiB8IDApID09IChvIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbiAtIG8gfCAwLCBsID0gZyAtIGwgfCAwLCBkMChuLCAwLCBsLCAwKSwgcTIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEodCwgMSwgNDk1MSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IFoobiwgbCksIG4gPj4+IDAgPj0gMTA3Mzc0MTgyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUSh0LCAxLCA0OTUxLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gaSwgaSA9IFAwKG4gPDwgMiksIGVbbCArIDUyID4+IDJdID0gaSwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgUSh0LCAxLCA0OTUxLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID0gYyArIDEgfCAwLCBtMiA9IGVbRCArIDI0ID4+IDJdLCAhKGMgPj4+IDAgPCBkW20yICsgMTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobTIgPSBlW0QgKyAzMiA+PiAyXSwgcjAgPSBlW2VbRCArIDIwID4+IDJdID4+IDJdLCBlW3IwICsgMTYgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGVbcjAgKyAyMCA+PiAyXSwgbTIgPSBlW20yICsgNTU4NCA+PiAyXSwgaSA9IGVbZVtEICsgMjQgPj4gMl0gKyAyNCA+PiAyXSwgdzIgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW0QgKyA2OCA+PiAyXSwgIWVbbiArICh3MiA8PCAyKSA+PiAyXSAmJiBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbaSArIDM2ID4+IDJdICsgMSB8IDAsIGVbbTIgKyAyMCA+PiAyXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gaCwgbiA9IDAsIHgyID0gWCAtIDMyIHwgMCwgWCA9IHgyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbRCArIDY0ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IDEsIChoIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBlW2MgKyAyOCA+PiAyXSwgZyA9IGggLSAxIHwgMCwgYSA9IGcgJiAxLCB1ID0gZVtEICsgNDQgPj4gMl0sIHMgPSBlW3UgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGggPSBnICYgLTIsIG8gPSB5LCBsID0gMDsgdyA9IGVbbyArIDE2MCA+PiAyXSAtIGVbbyArIDE1MiA+PiAyXSB8IDAsIG4gPSBuID4+PiAwID4gdyA+Pj4gMCA/IG4gOiB3LCB3ID0gZVtvICsgMTY0ID4+IDJdIC0gZVtvICsgMTU2ID4+IDJdIHwgMCwgbiA9IG4gPj4+IDAgPiB3ID4+PiAwID8gbiA6IHcsIHcgPSBlW28gKyAzMTIgPj4gMl0gLSBlW28gKyAzMDQgPj4gMl0gfCAwLCBuID0gbiA+Pj4gMCA+IHcgPj4+IDAgPyBuIDogdywgdyA9IGVbbyArIDMxNiA+PiAyXSAtIGVbbyArIDMwOCA+PiAyXSB8IDAsIG4gPSBuID4+PiAwID4gdyA+Pj4gMCA/IG4gOiB3LCBvID0gbyArIDMwNCB8IDAsIGwgPSBsICsgMiB8IDAsIChoIHwgMCkgIT0gKGwgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gMCwgYSAmJiAoYSA9IGVbbyArIDE2MCA+PiAyXSAtIGVbbyArIDE1MiA+PiAyXSB8IDAsIG4gPSBuID4+PiAwID4gYSA+Pj4gMCA/IG4gOiBhLCBvID0gZVtvICsgMTY0ID4+IDJdIC0gZVtvICsgMTU2ID4+IDJdIHwgMCwgbiA9IG4gPj4+IDAgPiBvID4+PiAwID8gbiA6IG8pLCBuID4+PiAwID4gMTM0MjE3NzI3IHx8IChvID0gWihlW2MgKyAyNCA+PiAyXSwgMTUyKSArIHkgfCAwLCBhID0gZVtvIC0gMTUyID4+IDJdLCBvID0gZVtvIC0gMTQ0ID4+IDJdLCBoID0gZVt5ICsgNCA+PiAyXSwgQyA9IGVbeSArIDEyID4+IDJdLCB2ID0gZVt5ID4+IDJdLCBwMiA9IGVbeSArIDggPj4gMl0sIEIgPSBuIDw8IDUsIHcgPSBoZShCKSwgZVt4MiArIDE2ID4+IDJdID0gdywgIXcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbeDIgPj4gMl0gPSB3LCBnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG0gPSBvIC0gYSB8IDAsIGEgPSBDIC0gaCB8IDAsIGwgPSBwMiAtIHYgfCAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgPSBlW2MgKyAzNiA+PiAyXSwgaCA9IGEsIGVbeDIgKyA4ID4+IDJdID0gYSwgbiA9IGwsIGVbeDIgKyAyNCA+PiAyXSA9IG4sIG8gPSBlW3kgKyAxNTYgPj4gMl0sIGEgPSBlW3kgKyAxNjQgPj4gMl0sIGwgPSBlW3kgKyAxNjAgPj4gMl0sIHYgPSBlW3kgKyAxNTIgPj4gMl0sIGVbeDIgKyAyOCA+PiAyXSA9ICh2IHwgMCkgJSAyLCBsID0gbCAtIHYgfCAwLCBlW3gyICsgMjAgPj4gMl0gPSBsIC0gbiwgUCA9IChzIHwgMCkgPCAyLCBhID0gYSAtIG8gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCFQICYgYSA+Pj4gMCA+IDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gMCwgIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7ICQ0KHgyICsgMTYgfCAwLCBDICsgKFoobywgbSkgPDwgMikgfCAwKSwgbyA9IG8gKyAxIHwgMCwgKG8gfCAwKSAhPSAoYSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2ID0gYSA+Pj4gMCA8IHMgPj4+IDAgPyBhIDogcywgSCA9IHYgLSAxIHwgMCwgcDIgPSAoYSA+Pj4gMCkgLyAodiA+Pj4gMCkgfCAwLCBuID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBVMigzNiksICFvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh6ID0gZVt4MiArIDIwID4+IDJdLCBlW28gPj4gMl0gPSBlW3gyICsgMTYgPj4gMl0sIGVbbyArIDQgPj4gMl0gPSB6LCB6ID0gZVt4MiArIDI4ID4+IDJdLCBlW28gKyA4ID4+IDJdID0gZVt4MiArIDI0ID4+IDJdLCBlW28gKyAxMiA+PiAyXSA9IHosIGVbbyArIDI4ID4+IDJdID0gWihuLCBwMiksIGVbbyArIDI0ID4+IDJdID0gQywgZVtvICsgMjAgPj4gMl0gPSBtLCBlW28gKyAxNiA+PiAyXSA9IGwsIHogPSAobiB8IDApID09IChIIHwgMCksIG4gPSBuICsgMSB8IDAsIGVbbyArIDMyID4+IDJdID0geiA/IGEgOiBaKHAyLCBuKSwgeiA9IGhlKEIpLCBlW28gPj4gMl0gPSB6LCAheikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwLCBsMSh1KSwgUihvKSwgUih3KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiMSh1LCAxMTQsIG8pLCAobiB8IDApID09ICh2IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsMSh1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt4MiArIDQgPj4gMl0gPSBhIC0gaCwgZVt4MiArIDEyID4+IDJdID0gZVt5ICsgMTU2ID4+IDJdICUgMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghUCAmIGwgPj4+IDAgPiAxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDgsIG8gPSAwLCBsID4+PiAwID49IDgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG9pKHgyLCBDICsgKG8gPDwgMikgfCAwLCBtLCA4KSwgbyA9IG4sIG4gPSBuICsgOCB8IDAsIGwgPj4+IDAgPj0gbiA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA8PSBvID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pKHgyLCBDICsgKG8gPDwgMikgfCAwLCBtLCBsIC0gbyB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gbCA+Pj4gMCA8IHMgPj4+IDAgPyBsIDogcywgcDIgPSBoIC0gMSB8IDAsIHYgPSAobCA+Pj4gMCkgLyAoaCA+Pj4gMCkgfCAwLCBuID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBVMigzNiksICFvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQID0gZVt4MiArIDQgPj4gMl0sIGVbbyA+PiAyXSA9IGVbeDIgPj4gMl0sIGVbbyArIDQgPj4gMl0gPSBQLCBQID0gZVt4MiArIDEyID4+IDJdLCBlW28gKyA4ID4+IDJdID0gZVt4MiArIDggPj4gMl0sIGVbbyArIDEyID4+IDJdID0gUCwgZVtvICsgMjggPj4gMl0gPSBaKG4sIHYpLCBlW28gKyAyNCA+PiAyXSA9IEMsIGVbbyArIDIwID4+IDJdID0gbSwgZVtvICsgMTYgPj4gMl0gPSBhLCBQID0gKG4gfCAwKSA9PSAocDIgfCAwKSwgbiA9IG4gKyAxIHwgMCwgZVtvICsgMzIgPj4gMl0gPSBQID8gbCA6IFoodiwgbiksIFAgPSBoZShCKSwgZVtvID4+IDJdID0gUCwgIVApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMCwgbDEodSksIFIobyksIFIodyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYjEodSwgMTE1LCBvKSwgKG4gfCAwKSA9PSAoaCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDEodSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5ID0geSArIDE1MiB8IDAsIGcgPSBnIC0gMSB8IDAsICFnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAxLCBSKHcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSAxLCB3ID0gZVtjICsgMjggPj4gMl0sIHAxID0gdyArIFoocCwgMTUyKSB8IDAsIFFyID0gcDEgLSAxNTIgfCAwLCBlW1FyID4+IDJdID09IGVbcDEgLSAxNDQgPj4gMl0gfHwgKFZyID0gcDEgLSAxNDggfCAwLCBlW1ZyID4+IDJdID09IGVbcDEgLSAxNDAgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IGVbdyArIDQgPj4gMl0sIGEgPSBlW3cgKyAxMiA+PiAyXSwgaCA9IGVbdyA+PiAyXSwgdSA9IGVbdyArIDggPj4gMl0sIFAgPSBlW2MgKyA2OCA+PiAyXSwgSCA9IGVbYyArIDY0ID4+IDJdLCB6ID0gZVtjICsgNjAgPj4gMl0sIGogPSBlW2MgKyA1NiA+PiAyXSwgYjAgPSBLNChjLCBwKSwgIWIwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwIHwgMCkgIT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBwIC0gMSB8IDAsIHkgPSBsICYgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHAgfCAwKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gbCAmIC0yLCBvID0gdywgbCA9IDA7IG0gPSBlW28gKyAxNjAgPj4gMl0gLSBlW28gKyAxNTIgPj4gMl0gfCAwLCBuID0gbiA+Pj4gMCA+IG0gPj4+IDAgPyBuIDogbSwgbSA9IGVbbyArIDE2NCA+PiAyXSAtIGVbbyArIDE1NiA+PiAyXSB8IDAsIG4gPSBuID4+PiAwID4gbSA+Pj4gMCA/IG4gOiBtLCBtID0gZVtvICsgMzEyID4+IDJdIC0gZVtvICsgMzA0ID4+IDJdIHwgMCwgbiA9IG4gPj4+IDAgPiBtID4+PiAwID8gbiA6IG0sIG0gPSBlW28gKyAzMTYgPj4gMl0gLSBlW28gKyAzMDggPj4gMl0gfCAwLCBuID0gbiA+Pj4gMCA+IG0gPj4+IDAgPyBuIDogbSwgbyA9IG8gKyAzMDQgfCAwLCBsID0gbCArIDIgfCAwLCAocyB8IDApICE9IChsIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeSAmJiAobCA9IGVbbyArIDE2MCA+PiAyXSAtIGVbbyArIDE1MiA+PiAyXSB8IDAsIG4gPSBuID4+PiAwID4gbCA+Pj4gMCA/IG4gOiBsLCBsID0gZVtvICsgMTY0ID4+IDJdIC0gZVtvICsgMTU2ID4+IDJdIHwgMCwgbiA9IG4gPj4+IDAgPiBsID4+PiAwID8gbiA6IGwpLCBuID4+PiAwID49IDI2ODQzNTQ1NiB8fCAocyA9IGhlKG4gPDwgNCksICFzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGEgLSBnIHwgMCwgRSA9IHUgLSBoIHwgMCwgYTEgPSBzIC0gNCB8IDAsIEdmID0gcyArIDQ0IHwgMCwgV2YgPSBzICsgNDAgfCAwLCBtZiA9IHMgKyAzNiB8IDAsIHoyID0gcyArIDI4IHwgMCwgaTAgPSBzICsgMjQgfCAwLCBMMiA9IHMgKyAyMCB8IDAsIE9lID0gcyAtIDEyIHwgMCwgcSA9IHMgKyAxMiB8IDAsIGMyID0gcyArIDggfCAwLCBfZSA9IHMgLSAxNiB8IDAsIEJlID0gcyAtIDggfCAwLCB5ID0gcyArIDQgfCAwLCBZZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbdyArIDE1NiA+PiAyXSwgYmUgPSAobiB8IDApICUgMiB8IDAsIGwgPSBlW3cgKyAxNTIgPj4gMl0sIGoxID0gKGwgfCAwKSAlIDIgfCAwLCBTMiA9IGVbdyArIDE2NCA+PiAyXSAtIG4gfCAwLCBDMCA9IFMyIC0gbSB8IDAsIGcyID0gZVt3ICsgMTYwID4+IDJdIC0gbCB8IDAsIHQwID0gZzIgLSBFIHwgMCwgbyA9IGosIGwgPSBvLCBhID0geiwgZjIgPSBhLCBuID0gSCwgSDAgPSBuLCBnID0gUCwgQyA9IGcsIGggPSBlW2MgKyAyMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaCB8IDApID09IChZZSB8IDApIHx8IChoID0gaCAtIFllIHwgMCwgZjIgPSAwLCBsID0gMCwgbyAmJiAobiA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyAodSA9IC0xIDw8IG4sIGEgPSAwKSA6IChhID0gLTEgPDwgbiwgdSA9IGEgfCAoMSA8PCBuKSAtIDEgJiAtMSA+Pj4gMzIgLSBuKSwgbiA9IG8gKyAoYSBeIC0xKSB8IDAsIHUgPSB1IF4gLTEsIHUgPSBuID4+PiAwIDwgaiA+Pj4gMCA/IHUgKyAxIHwgMCA6IHUsIGwgPSBuLCBuID0gaCAmIDMxLCAoaCAmIDYzKSA+Pj4gMCA+PSAzMiA/IGwgPSB1ID4+PiBuIHwgMCA6IGwgPSAoKDEgPDwgbikgLSAxICYgdSkgPDwgMzIgLSBuIHwgbCA+Pj4gbiksIHogJiYgKG4gPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gKGEgPSAtMSA8PCBuLCB1ID0gMCkgOiAodSA9IC0xIDw8IG4sIGEgPSB1IHwgKDEgPDwgbikgLSAxICYgLTEgPj4+IDMyIC0gbiksIG4gPSB6ICsgKHUgXiAtMSkgfCAwLCBhID0gYSBeIC0xLCBhID0gbiA+Pj4gMCA8IHogPj4+IDAgPyBhICsgMSB8IDAgOiBhLCBnID0gbiwgbiA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyBmMiA9IGEgPj4+IG4gfCAwIDogZjIgPSAoKDEgPDwgbikgLSAxICYgYSkgPDwgMzIgLSBuIHwgZyA+Pj4gbiksIGcgPSAwLCBuID0gMCwgSCAmJiAobiA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyAodSA9IC0xIDw8IG4sIGEgPSAwKSA6IChhID0gLTEgPDwgbiwgdSA9IGEgfCAoMSA8PCBuKSAtIDEgJiAtMSA+Pj4gMzIgLSBuKSwgbiA9IEggKyAoYSBeIC0xKSB8IDAsIHUgPSB1IF4gLTEsIHUgPSBuID4+PiAwIDwgSCA+Pj4gMCA/IHUgKyAxIHwgMCA6IHUsIG8gPSBuLCBuID0gaCAmIDMxLCAoaCAmIDYzKSA+Pj4gMCA+PSAzMiA/IG4gPSB1ID4+PiBuIHwgMCA6IG4gPSAoKDEgPDwgbikgLSAxICYgdSkgPDwgMzIgLSBuIHwgbyA+Pj4gbiksIFAgJiYgKGcgPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gKGEgPSAtMSA8PCBnLCB1ID0gMCkgOiAodSA9IC0xIDw8IGcsIGEgPSB1IHwgKDEgPDwgZykgLSAxICYgLTEgPj4+IDMyIC0gZyksIGcgPSBQICsgKHUgXiAtMSkgfCAwLCB1ID0gYSBeIC0xLCB1ID0gZyA+Pj4gMCA8IFAgPj4+IDAgPyB1ICsgMSB8IDAgOiB1LCBvID0gZywgZyA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyBnID0gdSA+Pj4gZyB8IDAgOiBnID0gKCgxIDw8IGcpIC0gMSAmIHUpIDw8IDMyIC0gZyB8IG8gPj4+IGcpLCBIMCA9IDAsIG8gPSAwLCBCID0gMSA8PCBoIC0gMSwgQiA+Pj4gMCA8IGogPj4+IDAgJiYgKG8gPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gKHUgPSAtMSA8PCBvLCBhID0gMCkgOiAoYSA9IC0xIDw8IG8sIHUgPSBhIHwgKDEgPDwgbykgLSAxICYgLTEgPj4+IDMyIC0gbyksIEMgPSBhIF4gLTEsIG8gPSBDICsgKGogLSBCIHwgMCkgfCAwLCBhID0gdSBeIC0xLCBhID0gbyA+Pj4gMCA8IEMgPj4+IDAgPyBhICsgMSB8IDAgOiBhLCB1ID0gbywgbyA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyBvID0gYSA+Pj4gbyB8IDAgOiBvID0gKCgxIDw8IG8pIC0gMSAmIGEpIDw8IDMyIC0gbyB8IHUgPj4+IG8pLCBCID4+PiAwIDwgSCA+Pj4gMCAmJiAoYSA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyAodSA9IC0xIDw8IGEsIGEgPSAwKSA6ICh1ID0gKDEgPDwgYSkgLSAxICYgLTEgPj4+IDMyIC0gYSwgYSA9IC0xIDw8IGEsIHUgPSB1IHwgYSksIEMgPSBhIF4gLTEsIGEgPSBDICsgKEggLSBCIHwgMCkgfCAwLCB1ID0gdSBeIC0xLCB1ID0gYSA+Pj4gMCA8IEMgPj4+IDAgPyB1ICsgMSB8IDAgOiB1LCBDID0gYSwgYSA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyBIMCA9IHUgPj4+IGEgfCAwIDogSDAgPSAoKDEgPDwgYSkgLSAxICYgdSkgPDwgMzIgLSBhIHwgQyA+Pj4gYSksIEMgPSAwLCBhID0gMCwgQiA+Pj4gMCA8IHogPj4+IDAgJiYgKHUgPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gKGEgPSAtMSA8PCB1LCB1ID0gMCkgOiAoYSA9ICgxIDw8IHUpIC0gMSAmIC0xID4+PiAzMiAtIHUsIHUgPSAtMSA8PCB1LCBhID0gYSB8IHUpLCB2ID0gdSBeIC0xLCB1ID0gdiArICh6IC0gQiB8IDApIHwgMCwgYSA9IGEgXiAtMSwgYSA9IHUgPj4+IDAgPCB2ID4+PiAwID8gYSArIDEgfCAwIDogYSwgdiA9IHUsIHUgPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gYSA9IGEgPj4+IHUgfCAwIDogYSA9ICgoMSA8PCB1KSAtIDEgJiBhKSA8PCAzMiAtIHUgfCB2ID4+PiB1KSwgQiA+Pj4gMCA+PSBQID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IGggJiAzMSwgdiA9IFAgLSBCIHwgMCwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyAodSA9IC0xIDw8IEMsIEIgPSAwKSA6IChCID0gLTEgPDwgQywgdSA9IEIgfCAoMSA8PCBDKSAtIDEgJiAtMSA+Pj4gMzIgLSBDKSwgQiA9IEIgXiAtMSwgQyA9IHYgKyBCIHwgMCwgdSA9IHUgXiAtMSwgdSA9IEIgPj4+IDAgPiBDID4+PiAwID8gdSArIDEgfCAwIDogdSwgQiA9IEMsIEMgPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gQyA9IHUgPj4+IEMgfCAwIDogQyA9ICgoMSA8PCBDKSAtIDEgJiB1KSA8PCAzMiAtIEMgfCBCID4+PiBDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVt3ICsgMTgwID4+IDJdLCB1ID0gSDAgLSBoIHwgMCwgdSA9IHUgPj4+IDAgPD0gSDAgPj4+IDAgPyB1IDogMCwgQiA9IHUgKyAyIHwgMCwgdSA9IHUgPj4+IDAgPiBCID4+PiAwID8gLTEgOiBCLCBFMCA9IHUgPj4+IDAgPCB0MCA+Pj4gMCA/IHUgOiB0MCwgdSA9IGVbdyArIDIxNiA+PiAyXSwgQiA9IG4gLSB1IHwgMCwgbiA9IG4gPj4+IDAgPj0gQiA+Pj4gMCA/IEIgOiAwLCBCID0gbiArIDIgfCAwLCBuID0gbiA+Pj4gMCA+IEIgPj4+IDAgPyAtMSA6IEIsIGswID0gbiA+Pj4gMCA8IEUgPj4+IDAgPyBuIDogRSwgbiA9IChqMSA/IEUwIDogazApIDw8IDEsIEIgPSAoajEgPyBrMCA6IEUwKSA8PCAxIHwgMSwgSGUgPSBuID4+PiAwID4gQiA+Pj4gMCA/IG4gOiBCLCBuID0gSGUgPj4+IDAgPCBnMiA+Pj4gMCwgaCA9IG8gLSBoIHwgMCwgbyA9IG8gPj4+IDAgPj0gaCA+Pj4gMCA/IGggOiAwLCBoID0gbyAtIDIgfCAwLCB2ID0gbyA+Pj4gMCA+PSBoID4+PiAwID8gaCA6IDAsIG8gPSBsIC0gdSB8IDAsIGwgPSBsID4+PiAwID49IG8gPj4+IDAgPyBvIDogMCwgbyA9IGwgLSAyIHwgMCwgQiA9IGwgPj4+IDAgPj0gbyA+Pj4gMCA/IG8gOiAwLCBsID0gKGoxID8gdiA6IEIpIDw8IDEsIG8gPSAoajEgPyBCIDogdikgPDwgMSB8IDEsIHggPSBsID4+PiAwIDwgbyA+Pj4gMCwgSiA9IGVbdyArIDE4NCA+PiAyXSwgaCA9IGYyIC0gSiB8IDAsIGggPSBoID4+PiAwIDw9IGYyID4+PiAwID8gaCA6IDAsIHUgPSBoIC0gMiB8IDAsIGggPSB1ID4+PiAwIDw9IGggPj4+IDAgPyB1IDogMCwgTyA9IGgsIGYyID0gZVt3ICsgMjIwID4+IDJdLCB1ID0gYSAtIGYyIHwgMCwgYSA9IGEgPj4+IDAgPj0gdSA+Pj4gMCA/IHUgOiAwLCB1ID0gYSAtIDIgfCAwLCB1ID0gYSA+Pj4gMCA+PSB1ID4+PiAwID8gdSA6IDAsIHAyID0gdSwgYSA9IGcgLSBKIHwgMCwgZyA9IGEgPj4+IDAgPD0gZyA+Pj4gMCA/IGEgOiAwLCBhID0gZyArIDIgfCAwLCBnID0gYSA+Pj4gMCA8IGcgPj4+IDAgPyAtMSA6IGEsIG4yID0gZyA+Pj4gMCA8IG0gPj4+IDAgPyBnIDogbSwgUDIgPSBuMiwgZyA9IEMgLSBmMiB8IDAsIGcgPSBnID4+PiAwIDw9IEMgPj4+IDAgPyBnIDogMCwgYSA9IGcgKyAyIHwgMCwgZyA9IGEgPj4+IDAgPCBnID4+PiAwID8gLTEgOiBhLCBZMiA9IGcgPj4+IDAgPCBDMCA+Pj4gMCA/IGcgOiBDMCwgZjIgPSBZMiwgYmUgJiYgKFAyID0gWTIsIE8gPSB1LCBmMiA9IG4yLCBwMiA9IGgpLCAkZSA9IG4gPyBIZSA6IGcyLCB4ID0geCA/IGwgOiBvLCBZciA9IG0gKyBZMiB8IDAsIEhyID0gdSArIG0gfCAwLCBTMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNlID0gcyArIChCIDw8IDMpIHwgMCwgbiA9IHQwIDw8IDMsIGgwID0gbiArIGExIHwgMCwgbCA9IChCIHwgMCkgPCAodDAgfCAwKSwgUWkgPSBsID8gY2UgKyA0IHwgMCA6IGgwLCBEMiA9IChFIHwgMCkgPiAoRTAgfCAwKSA/IEUwIDogRSAtIDEgfCAwLCBDID0gMCwgVmkgPSAoRSB8IDApID4gMSB8ICh0MCB8IDApID4gMCwgZyA9IGoxIDw8IDIsIFlpID0gKHkgLSBnIHwgMCkgKyAodiA8PCAzKSB8IDAsIEhpID0gZyArIGNlIHwgMCwgWDIgPSAodDAgfCAwKSA+IChrMCB8IDApID8gazAgOiB0MCwgWjEgPSBCICsgMSB8IDAsIFhpID0gRSArIEUwIHwgMCwgRmkgPSB2ICsgRSB8IDAsIEppID0gcyArICh4IDw8IDIpIHwgMCwgZyA9IEUgPDwgMywgeDAgPSBnICsgQmUgfCAwLCBUMCA9IGcgKyBhMSB8IDAsIGYxID0gbiArIEJlIHwgMCwgUmkgPSAhRSAmICh0MCB8IDApID09IDEsIG4gPSAkZSA8PCAyLCBFaSA9IG4gKyBzIHwgMCwgRGkgPSBuICsgYTEgfCAwLCBVaSA9IGExICsgKChsID8gQiA6IHQwKSA8PCAzKSB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKEMgPj4+IDAgPCBuMiA+Pj4gMCAmIGggPj4+IDAgPD0gQyA+Pj4gMCB8IEMgPj4+IDAgPCBZciA+Pj4gMCAmIEMgPj4+IDAgPj0gSHIgPj4+IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSiA9IEMgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcyID4+PiAwID4gSGUgPj4+IDAgJiYgKGVbRGkgPj4gMl0gPSAwLCBlW0VpID4+IDJdID0gMCksIEogPSBDICsgMSB8IDAsIEcxKGIwLCBCLCBDLCBrMCwgSiwgSGksIDIsIDApLCBHMShiMCwgRmksIEMsIFhpLCBKLCBZaSwgMiwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghajEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVZpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKEIgfCAwKSA+PSAoazAgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKEIgfCAwKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVtVaSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gZVt5ID4+IDJdLCBsID0gbiwgKEIgfCAwKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuLCBuID0gZVtRaSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbY2UgPj4gMl0gPSBlW2NlID4+IDJdIC0gKChuICsgbCB8IDApICsgMiA+PiAyKSwgZyA9IEIsIG4gPSBaMSwgbCA9IG4sIChuIHwgMCkgPj0gKFgyIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBuID0gcyArIChsIDw8IDMpIHwgMCwgZVtuID4+IDJdID0gZVtuID4+IDJdIC0gKChlWyhzICsgKGcgPDwgMykgfCAwKSArIDQgPj4gMl0gKyBlW24gKyA0ID4+IDJdIHwgMCkgKyAyID4+IDIpLCBnID0gbCwgbCA9IGwgKyAxIHwgMCwgKFgyIHwgMCkgIT0gKGwgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBYMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVJpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IEIsIChrMCB8IDApIDw9IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHMgKyAobiA8PCAzKSB8IDAsIG8gPSBsLCBhID0gZVtsICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSDAgPSBlWygobiB8IDApIDwgKHQwIHwgMCkgPyBsIDogZjEpID4+IDJdLCBsID0gbiArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEgwID0gZVtzID4+IDJdLCBsID0gMCwgbiA9IG4gKyAxIHwgMCwgZyA9IHMsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCB8IDApID49ICh0MCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbCwgZyA9IGYxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGwsIGcgPSBzICsgKG4gPDwgMykgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW28gKyA0ID4+IDJdID0gYSAtICgoZVtnID4+IDJdICsgSDAgfCAwKSArIDIgPj4gMiksICEoKG4gfCAwKSA8IChrMCB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHYsIChFMCB8IDApIDw9IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4gPDwgMywgbyA9IGcgKyBzIHwgMCwgSDAgPSBlW28gPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlW3kgPj4gMl0sIGwgPSB5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBlWygobiB8IDApIDwgKEUgfCAwKSA/IChzICsgKG4gPDwgMykgfCAwKSArIDQgfCAwIDogVDApID4+IDJdLCBsID0geSwgIW4gfHwgKGwgPSBUMCwgKG4gfCAwKSA+IChFIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGcgKyBhMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW28gPj4gMl0gPSBIMCArIChlW2wgPj4gMl0gKyBhID4+IDEpLCBuID0gbiArIDEgfCAwLCAoRTAgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApID49IChrMCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzICsgKG4gPDwgMykgfCAwLCBvID0gbCwgYSA9IGVbbCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZVthMSArICgoKG4gfCAwKSA8ICh0MCB8IDApID8gbiA6IHQwKSA8PCAzKSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZVt5ID4+IDJdLCBsID0geSwgKG4gfCAwKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gaDAsIChuIHwgMCkgPj0gKHQwIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAocyArIChuIDw8IDMpIHwgMCkgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtvID4+IDJdID0gYSAtICgoZVtsID4+IDJdICsgZyB8IDApICsgMiA+PiAyKSwgbiA9IG4gKyAxIHwgMCwgKGswIHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2IHwgMCkgPj0gKEUwIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gdiwgbiA9IGwsIChEMiB8IDApID4gKG4gfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGwgPSBzICsgKG4gPDwgMykgfCAwLCBuID0gbiArIDEgfCAwLCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSArIChlW3MgKyAobiA8PCAzKSA+PiAyXSArIGVbbCA+PiAyXSA+PiAxKSwgKG4gfCAwKSAhPSAoRDIgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gRDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCB8IDApID49IChFMCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsIHwgMCkgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbKChsIHwgMCkgPCAoRSB8IDApID8gcyArIChsIDw8IDMpIHwgMCA6IHgwKSA+PiAyXSwgZyA9IGwgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gZVtzID4+IDJdLCBnID0gMCwgbCA9IGEgKyAxIHwgMCwgbiA9IHMsIGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZyB8IDApID49IChFIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZywgbiA9IHgwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGcsIG4gPSBzICsgKGwgPDwgMykgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBzICsgKGEgPDwgMykgfCAwLCBlW2cgKyA0ID4+IDJdID0gZVtnICsgNCA+PiAyXSArIChlW24gPj4gMl0gKyBvID4+IDEpLCAhKChsIHwgMCkgPCAoRTAgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFlKGIwLCB4LCBDLCAkZSwgSiwgSmksIDEsIDAsIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQyA9IEosIChTMiB8IDApID09IChDIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gdyArIDE1MiB8IDAsIG4gPSBQMiA8PCAxLCBsID0gZjIgPDwgMSB8IDEsIG4gPSBuID4+PiAwID4gbCA+Pj4gMCA/IG4gOiBsLCBIMCA9IG4gPj4+IDAgPCBTMiA+Pj4gMCA/IG4gOiBTMiwgbiA9IGggPDwgNSwgZyA9IG4gfCAxNiwgbyA9IEMwIDw8IDUsIGwgPSAoaCB8IDApIDwgKEMwIHwgMCksIGoxID0gbCA/IGcgKyBxIHwgMCA6IG8gKyBhMSB8IDAsIGNlID0gbCA/IGcgKyBjMiB8IDAgOiBvICsgQmUgfCAwLCBIZSA9IGwgPyBnICsgeSB8IDAgOiBvICsgT2UgfCAwLCBRaSA9IGwgPyBnICsgcyB8IDAgOiBvICsgX2UgfCAwLCBvID0gKG0gfCAwKSA+IChZMiB8IDApID8gWTIgOiBtIC0gMSB8IDAsIEMgPSAoQzAgfCAwKSA+IDAsIFZpID0gQyB8IChtIHwgMCkgPiAxLCBKID0gbiArIHMgfCAwLCBZaSA9IEogKyAoYmUgPDwgNCkgfCAwLCBnID0gbSA8PCAzLCB4MCA9IGcgLSA4IHwgMCwgYSA9ICgobSB8IDApIDw9IDAgPyB4MCA6IDApIDw8IDIsIEhpID0gYSArIHEgfCAwLCBYaSA9IGEgKyBjMiB8IDAsIEZpID0gYSArIHkgfCAwLCBKaSA9IGEgKyBzIHwgMCwgYSA9IEMwIDw8IDMsIFQwID0gYSAtIDggfCAwLCBDID0gKEMgPyAwIDogVDApIDw8IDIsIFJpID0gQyArIHEgfCAwLCBFaSA9IEMgKyBjMiB8IDAsIERpID0gQyArIHkgfCAwLCBVaSA9IHMgKyBDIHwgMCwgeWYgPSAocyArICg0IC0gKGJlIDw8IDIpIDw8IDIpIHwgMCkgKyAodSA8PCA1KSB8IDAsIEMgPSAobjIgfCAwKSA8IChDMCB8IDApID8gbjIgOiBDMCwgdiA9IGggKyAxIHwgMCwgQiA9IE8gPDwgMSwgcDIgPSBwMiA8PCAxIHwgMSwgWHIgPSBCID4+PiAwIDwgcDIgPj4+IDAgPyBCIDogcDIsIHBmID0gcyArIChYciA8PCA0KSB8IDAsIGYxID0gbiArIHEgfCAwLCBEMiA9IG4gKyBjMiB8IDAsIFgyID0gbiArIHkgfCAwLCBuID0gbSA8PCA1LCBRZiA9IG4gKyBxIHwgMCwgaDAgPSBnIC0gMSB8IDAsIFZmID0gbiArIGMyIHwgMCwgWjEgPSBnIC0gMiB8IDAsIFlmID0gbiArIHkgfCAwLCB0MCA9IGcgLSAzIHwgMCwgSGYgPSBuICsgcyB8IDAsIEUwID0gZyAtIDQgfCAwLCBYZiA9IGEgLSA1IHwgMCwgRmYgPSBhIC0gNiB8IDAsIEpmID0gYSAtIDcgfCAwLCBSZiA9ICFtICYgKEMwIHwgMCkgPT0gMSwgbiA9IHgwIDw8IDIsIEVmID0gbiArIHEgfCAwLCBEZiA9IG4gKyBjMiB8IDAsIFVmID0gbiArIHkgfCAwLCBNZiA9IG4gKyBzIHwgMCwgRnIgPSBhIC0gNCB8IDAsIG4gPSBGciA8PCAyLCBTZiA9IG4gKyBxIHwgMCwgTmYgPSBuICsgYzIgfCAwLCBQZiA9IG4gKyB5IHwgMCwgeGYgPSBuICsgcyB8IDAsIG4gPSAobCA/IGggOiBDMCkgPDwgNSwgcDIgPSBuICsgYTEgfCAwLCBFID0gbiArIEJlIHwgMCwgZjIgPSBuICsgT2UgfCAwLCBUZiA9IG4gKyBfZSB8IDAsIG4gPSBUMCA8PCAyLCB6ZiA9IG4gKyBxIHwgMCwgZGYgPSBuICsgYzIgfCAwLCBLZiA9IG4gKyB5IHwgMCwgamYgPSBuICsgcyB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSB4LCBCID4+PiAwIDwgJGUgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSAkZSAtIEIgfCAwLCB4ID0gQiArIChuID4+PiAwID49IDQgPyA0IDogbikgfCAwLCBHMShiMCwgQiwgaCwgeCwgbjIsIFlpLCAxLCA4KSwgRzEoYjAsIEIsIEhyLCB4LCBZciwgeWYsIDEsIDgpLCAhYmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVZpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA+PSAobjIgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChoIHwgMCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlW1RmID4+IDJdLCBhID0gRSwgZyA9IGYyLCBsID0gcDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbcyArIDE2ID4+IDJdLCAoaCB8IDApIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpMCwgZyA9IEwyLCBsID0gejI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbSiA+PiAyXSA9IGVbSiA+PiAyXSAtICgoZVtRaSA+PiAyXSArIG4gfCAwKSArIDIgPj4gMiksIGVbWDIgPj4gMl0gPSBlW1gyID4+IDJdIC0gKChlW2cgPj4gMl0gKyBlW0hlID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW0QyID4+IDJdID0gZVtEMiA+PiAyXSAtICgoZVthID4+IDJdICsgZVtjZSA+PiAyXSB8IDApICsgMiA+PiAyKSwgbiA9IGVbajEgPj4gMl0sIGwgPSBlW2wgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gLyAyLCBlW3MgKyA0ID4+IDJdID0gZVtzICsgNCA+PiAyXSAvIDIsIGVbYzIgPj4gMl0gPSBlW2MyID4+IDJdIC8gMiwgZVtxID4+IDJdID0gZVtxID4+IDJdIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gaCwgKG4yIHwgMCkgPiAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4gPDwgMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcyArIChnIDw8IDIpIHwgMCwgZVtsICsgMTYgPj4gMl0gPSBlW2wgKyAxNiA+PiAyXSAtICgoZVtzID4+IDJdIDw8IDEpICsgMiA+PiAyKSwgZVtsICsgMjAgPj4gMl0gPSBlW2wgKyAyMCA+PiAyXSAtICgoZVtzICsgNCA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGVbbCArIDI0ID4+IDJdID0gZVtsICsgMjQgPj4gMl0gLSAoKGVbYzIgPj4gMl0gPDwgMSkgKyAyID4+IDIpLCBlW2wgKyAyOCA+PiAyXSA9IGVbbCArIDI4ID4+IDJdIC0gKChlW3EgPj4gMl0gPDwgMSkgKyAyID4+IDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBzICsgKGcgPDwgMikgfCAwLCBhID0gZVtsICsgMTYgPj4gMl0sIE8gPSBuICsgMSB8IDAsIChPIHwgMCkgPj0gKEMwIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyID0gYSwgYSA9IChuIHwgMCkgPCAoQzAgfCAwKSwgZVtsICsgMTYgPj4gMl0gPSBQMiAtICgoZVtzICsgKChhID8gZyA6IFQwKSA8PCAyKSA+PiAyXSArIGVbamYgPj4gMl0gfCAwKSArIDIgPj4gMiksIGVbbCArIDIwID4+IDJdID0gZVtsICsgMjAgPj4gMl0gLSAoKGVbcyArICgoYSA/IGcgfCAxIDogSmYpIDw8IDIpID4+IDJdICsgZVtLZiA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVtsICsgMjQgPj4gMl0gPSBlW2wgKyAyNCA+PiAyXSAtICgoZVtzICsgKChhID8gZyB8IDIgOiBGZikgPDwgMikgPj4gMl0gKyBlW2RmID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW2wgKyAyOCA+PiAyXSA9IGVbbCArIDI4ID4+IDJdIC0gKChlW3MgKyAoKGEgPyBnIHwgMyA6IFhmKSA8PCAyKSA+PiAyXSArIGVbemYgPj4gMl0gfCAwKSArIDIgPj4gMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gcyArIChPIDw8IDUpIHwgMCwgZVtsICsgMTYgPj4gMl0gPSBhIC0gKChlW2wgPj4gMl0gKyBlW2cgPj4gMl0gfCAwKSArIDIgPj4gMiksIGVbbCArIDIwID4+IDJdID0gZVtsICsgMjAgPj4gMl0gLSAoKGVbbCArIDQgPj4gMl0gKyBlW2cgKyA0ID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW2wgKyAyNCA+PiAyXSA9IGVbbCArIDI0ID4+IDJdIC0gKChlW2wgKyA4ID4+IDJdICsgZVtnICsgOCA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVtsICsgMjggPj4gMl0gPSBlW2wgKyAyOCA+PiAyXSAtICgoZVtsICsgMTIgPj4gMl0gKyBlW2cgKyAxMiA+PiAyXSB8IDApICsgMiA+PiAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbX2UgPj4gMl0gPSBlW19lID4+IDJdIC0gKChlW3MgPj4gMl0gKyBlW1VpID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW09lID4+IDJdID0gZVtPZSA+PiAyXSAtICgoZVtzICsgNCA+PiAyXSArIGVbRGkgPj4gMl0gfCAwKSArIDIgPj4gMiksIGVbQmUgPj4gMl0gPSBlW0JlID4+IDJdIC0gKChlW2MyID4+IDJdICsgZVtFaSA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVthMSA+PiAyXSA9IGVbYTEgPj4gMl0gLSAoKGVbcSA+PiAyXSArIGVbUmkgPj4gMl0gfCAwKSArIDIgPj4gMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IG4gKyAxIHwgMCwgKG4yIHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHUsIChZMiB8IDApIDw9IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4gPDwgMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHMgKyAoZyA8PCAyKSB8IDAsIGVbbCA+PiAyXSA9IGVbbCA+PiAyXSArIChlW3MgKyAxNiA+PiAyXSA8PCAxID4+IDEpLCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSArIChlW3MgKyAyMCA+PiAyXSA8PCAxID4+IDEpLCBlW2wgKyA4ID4+IDJdID0gZVtsICsgOCA+PiAyXSArIChlW3MgKyAyNCA+PiAyXSA8PCAxID4+IDEpLCBlW2wgKyAxMiA+PiAyXSA9IGVbbCArIDEyID4+IDJdICsgKGVbcyArIDI4ID4+IDJdIDw8IDEgPj4gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZyA8PCAyLCBsID0gYSArIHMgfCAwLCBPID0gKG4gfCAwKSA+IChtIHwgMCksIFAyID0gKG4gfCAwKSA8IChtIHwgMCksIGVbbCA+PiAyXSA9IGVbbCA+PiAyXSArIChlWyhPID8gSGYgOiBsKSAtIDE2ID4+IDJdICsgZVtzICsgKChQMiA/IGcgfCA0IDogRTApIDw8IDIpID4+IDJdID4+IDEpLCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSArIChlWyhPID8gWWYgOiBhICsgeSB8IDApIC0gMTYgPj4gMl0gKyBlW3MgKyAoKFAyID8gZyB8IDUgOiB0MCkgPDwgMikgPj4gMl0gPj4gMSksIGVbbCArIDggPj4gMl0gPSBlW2wgKyA4ID4+IDJdICsgKGVbKE8gPyBWZiA6IGEgKyBjMiB8IDApIC0gMTYgPj4gMl0gKyBlW3MgKyAoKFAyID8gZyB8IDYgOiBaMSkgPDwgMikgPj4gMl0gPj4gMSksIGVbbCArIDEyID4+IDJdID0gZVtsICsgMTIgPj4gMl0gKyAoZVsoTyA/IFFmIDogYSArIHEgfCAwKSAtIDE2ID4+IDJdICsgZVtzICsgKChQMiA/IGcgfCA3IDogaDApIDw8IDIpID4+IDJdID4+IDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IChuIHwgMCkgPCAobSB8IDApLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gKyAoZVtzICsgMTYgPj4gMl0gKyBlW3MgKyAoKGwgPyA0IDogRTApIDw8IDIpID4+IDJdID4+IDEpLCBlW3MgKyA0ID4+IDJdID0gZVtzICsgNCA+PiAyXSArIChlW3MgKyAyMCA+PiAyXSArIGVbcyArICgobCA/IDUgOiB0MCkgPDwgMikgPj4gMl0gPj4gMSksIGVbYzIgPj4gMl0gPSBlW2MyID4+IDJdICsgKGVbcyArIDI0ID4+IDJdICsgZVtzICsgKChsID8gNiA6IFoxKSA8PCAyKSA+PiAyXSA+PiAxKSwgZVtxID4+IDJdID0gZVtxID4+IDJdICsgKGVbcyArIDI4ID4+IDJdICsgZVtzICsgKChsID8gNyA6IGgwKSA8PCAyKSA+PiAyXSA+PiAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgMSB8IDAsIChZMiB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEUgPSBnMiwgbSA9IFMyLCBZZSA9IFllICsgMSB8IDAsIChwIHwgMCkgIT0gKFllIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0ogPj4gMl0gPSBlW0ogPj4gMl0gLSAoKG4gPDwgMSkgKyAyID4+IDIpLCBlW1gyID4+IDJdID0gZVtYMiA+PiAyXSAtICgoZVtMMiA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGVbRDIgPj4gMl0gPSBlW0QyID4+IDJdIC0gKChlW2kwID4+IDJdIDw8IDEpICsgMiA+PiAyKSwgbiA9IGVbejIgPj4gMl0sIGwgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2YxID4+IDJdID0gZVtmMSA+PiAyXSAtICgobiArIGwgfCAwKSArIDIgPj4gMiksIGcgPSBoLCBsID0gdiwgbiA9IGwsIChDIHwgMCkgPiAobiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4gPSBzICsgKGwgPDwgNSkgfCAwLCBnID0gZyA8PCA1IHwgMTYsIGVbbiA+PiAyXSA9IGVbbiA+PiAyXSAtICgoZVtnICsgcyA+PiAyXSArIGVbbiArIDE2ID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW24gKyA0ID4+IDJdID0gZVtuICsgNCA+PiAyXSAtICgoZVtnICsgeSA+PiAyXSArIGVbbiArIDIwID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW24gKyA4ID4+IDJdID0gZVtuICsgOCA+PiAyXSAtICgoZVtnICsgYzIgPj4gMl0gKyBlW24gKyAyNCA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVtuICsgMTIgPj4gMl0gPSBlW24gKyAxMiA+PiAyXSAtICgoZVtnICsgcSA+PiAyXSArIGVbbiArIDI4ID4+IDJdIHwgMCkgKyAyID4+IDIpLCBnID0gbCwgbCA9IGwgKyAxIHwgMCwgKEMgfCAwKSAhPSAobCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IEM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgPj0gKG4yIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4gPDwgMywgTyA9IGcgfCA0LCBhID0gKG4gfCAwKSA8IChDMCB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFAyID0gZVtzICsgMTYgPj4gMl0sIChuIHwgMCkgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGswID0gZyA8PCAyLCBsID0gazAgKyBzIHwgMCwgWGUgPSBsLCBGZSA9IGVbbCA+PiAyXSwgbCA9IChhID8gTyA6IEZyKSA8PCAyLCBlW1hlID4+IDJdID0gRmUgLSAoKFAyICsgZVtsICsgcyA+PiAyXSB8IDApICsgMiA+PiAyKSwgYSA9IHkgKyBrMCB8IDAsIGVbYSA+PiAyXSA9IGVbYSA+PiAyXSAtICgoZVtzICsgMjAgPj4gMl0gKyBlW2wgKyB5ID4+IDJdIHwgMCkgKyAyID4+IDIpLCBhID0gYzIgKyBrMCB8IDAsIGVbYSA+PiAyXSA9IGVbYSA+PiAyXSAtICgoZVtzICsgMjQgPj4gMl0gKyBlW2wgKyBjMiA+PiAyXSB8IDApICsgMiA+PiAyKSwgbCA9IChlW3MgKyAyOCA+PiAyXSArIGVbbCArIHEgPj4gMl0gfCAwKSArIDIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGcgPDwgMiwgYSA9IGwgKyBzIHwgMCwgZVthID4+IDJdID0gZVthID4+IDJdIC0gKChQMiA8PCAxKSArIDIgPj4gMiksIGEgPSBsICsgeSB8IDAsIGVbYSA+PiAyXSA9IGVbYSA+PiAyXSAtICgoZVtzICsgMjAgPj4gMl0gPDwgMSkgKyAyID4+IDIpLCBsID0gbCArIGMyIHwgMCwgZVtsID4+IDJdID0gZVtsID4+IDJdIC0gKChlW3MgKyAyNCA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGwgPSAoZVtzICsgMjggPj4gMl0gPDwgMSkgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gKChhID8gbiA6IEMwKSA8PCAzKSAtIDQgPDwgMiwgUDIgPSBlW2wgKyBzID4+IDJdLCAhYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZyA8PCAyLCBPID0gYSArIHMgfCAwLCBlW08gPj4gMl0gPSBlW08gPj4gMl0gLSAoKFAyICsgZVt4ZiA+PiAyXSB8IDApICsgMiA+PiAyKSwgTyA9IGEgKyB5IHwgMCwgZVtPID4+IDJdID0gZVtPID4+IDJdIC0gKChlW2wgKyB5ID4+IDJdICsgZVtQZiA+PiAyXSB8IDApICsgMiA+PiAyKSwgYSA9IGEgKyBjMiB8IDAsIGVbYSA+PiAyXSA9IGVbYSA+PiAyXSAtICgoZVtsICsgYzIgPj4gMl0gKyBlW05mID4+IDJdIHwgMCkgKyAyID4+IDIpLCBsID0gKGVbbCArIHEgPj4gMl0gKyBlW1NmID4+IDJdIHwgMCkgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGswID0gZyA8PCAyLCBhID0gazAgKyBzIHwgMCwgWGUgPSBhLCBGZSA9IGVbYSA+PiAyXSwgYSA9IE8gPDwgMiwgZVtYZSA+PiAyXSA9IEZlIC0gKChQMiArIGVbYSArIHMgPj4gMl0gfCAwKSArIDIgPj4gMiksIE8gPSB5ICsgazAgfCAwLCBlW08gPj4gMl0gPSBlW08gPj4gMl0gLSAoKGVbbCArIHkgPj4gMl0gKyBlW2EgKyB5ID4+IDJdIHwgMCkgKyAyID4+IDIpLCBPID0gYzIgKyBrMCB8IDAsIGVbTyA+PiAyXSA9IGVbTyA+PiAyXSAtICgoZVtsICsgYzIgPj4gMl0gKyBlW2EgKyBjMiA+PiAyXSB8IDApICsgMiA+PiAyKSwgbCA9IChlW2wgKyBxID4+IDJdICsgZVthICsgcSA+PiAyXSB8IDApICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gcSArIChnIDw8IDIpIHwgMCwgZVtnID4+IDJdID0gZVtnID4+IDJdIC0gKGwgPj4gMiksIG4gPSBuICsgMSB8IDAsIChuMiB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1IHwgMCkgPj0gKFkyIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IHUsIG4gPSBhLCAobyB8IDApID4gKG4gfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbCA9IGEgPDwgNSwgbiA9IGwgKyBzIHwgMCwgZVtuICsgMTYgPj4gMl0gPSBlW24gKyAxNiA+PiAyXSArIChlW24gKyAzMiA+PiAyXSArIGVbbiA+PiAyXSA+PiAxKSwgZVtuICsgMjAgPj4gMl0gPSBlW24gKyAyMCA+PiAyXSArIChlW2wgKyBtZiA+PiAyXSArIGVbbiArIDQgPj4gMl0gPj4gMSksIGVbbiArIDI0ID4+IDJdID0gZVtuICsgMjQgPj4gMl0gKyAoZVtsICsgV2YgPj4gMl0gKyBlW24gKyA4ID4+IDJdID4+IDEpLCBlW24gKyAyOCA+PiAyXSA9IGVbbiArIDI4ID4+IDJdICsgKGVbbCArIEdmID4+IDJdICsgZVtuICsgMTIgPj4gMl0gPj4gMSksIGEgPSBhICsgMSB8IDAsIChvIHwgMCkgIT0gKGEgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA+PSAoWTIgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbiA8PCAzLCBnID0gbCB8IDQsIFAyID0gcSArIChnIDw8IDIpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW3MgPj4gMl0sIChuIHwgMCkgIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGcgPDwgMiwgYSA9IGcgKyBzIHwgMCwgZVthID4+IDJdID0gbCArIGVbYSA+PiAyXSwgbCA9IGcgKyB5IHwgMCwgZVtsID4+IDJdID0gZVtsID4+IDJdICsgZVt5ID4+IDJdLCBsID0gZyArIGMyIHwgMCwgZVtsID4+IDJdID0gZVtsID4+IDJdICsgZVtjMiA+PiAyXSwgbCA9IGVbcSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBnIDw8IDIsIGEgPSBnICsgcyB8IDAsIGVbYSA+PiAyXSA9IGVbYSA+PiAyXSArIChsICsgZVtKaSA+PiAyXSA+PiAxKSwgbCA9IGcgKyB5IHwgMCwgZVtsID4+IDJdID0gZVtsID4+IDJdICsgKGVbRmkgPj4gMl0gKyBlW3kgPj4gMl0gPj4gMSksIGwgPSBnICsgYzIgfCAwLCBlW2wgPj4gMl0gPSBlW2wgPj4gMl0gKyAoZVtYaSA+PiAyXSArIGVbYzIgPj4gMl0gPj4gMSksIGwgPSBlW0hpID4+IDJdICsgZVtxID4+IDJdID4+IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IHMgKyAoKChuIHwgMCkgPCAobSB8IDApID8gbCA6IHgwKSA8PCAyKSB8IDAsIGEgPSBlW2wgPj4gMl0sIGswID0gbiArIDEgfCAwLCAoazAgfCAwKSA+PSAobSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZyA8PCAyLCBPID0gZyArIHMgfCAwLCBlW08gPj4gMl0gPSBlW08gPj4gMl0gKyAoYSArIGVbTWYgPj4gMl0gPj4gMSksIGEgPSBnICsgeSB8IDAsIGVbYSA+PiAyXSA9IGVbYSA+PiAyXSArIChlW1VmID4+IDJdICsgZVtsICsgNCA+PiAyXSA+PiAxKSwgZyA9IGcgKyBjMiB8IDAsIGVbZyA+PiAyXSA9IGVbZyA+PiAyXSArIChlW0RmID4+IDJdICsgZVtsICsgOCA+PiAyXSA+PiAxKSwgbCA9IGVbRWYgPj4gMl0gKyBlW2wgKyAxMiA+PiAyXSA+PiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IGcgPDwgMiwgZyA9IE8gKyBzIHwgMCwgWGUgPSBnLCBGZSA9IGVbZyA+PiAyXSwgZyA9IHMgKyAoazAgPDwgNSkgfCAwLCBlW1hlID4+IDJdID0gRmUgKyAoYSArIGVbZyA+PiAyXSA+PiAxKSwgYSA9IHkgKyBPIHwgMCwgZVthID4+IDJdID0gZVthID4+IDJdICsgKGVbZyArIDQgPj4gMl0gKyBlW2wgKyA0ID4+IDJdID4+IDEpLCBhID0gYzIgKyBPIHwgMCwgZVthID4+IDJdID0gZVthID4+IDJdICsgKGVbZyArIDggPj4gMl0gKyBlW2wgKyA4ID4+IDJdID4+IDEpLCBsID0gZVtnICsgMTIgPj4gMl0gKyBlW2wgKyAxMiA+PiAyXSA+PiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW1AyID4+IDJdID0gbCArIGVbUDIgPj4gMl0sIG4gPSBuICsgMSB8IDAsIChZMiB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYWUoYjAsIEIsIFhyLCB4LCBIMCwgcGYsIDEsIDQsIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKHMpLCBsID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVtwMSAtIDE2ID4+IDJdLCBnID0gZVtRciA+PiAyXSwgbyA9IGVbVnIgPj4gMl0sIGEgPSBlW3AxIC0gOCA+PiAyXSwgRzEoYjAsIG4gLSBnIHwgMCwgZVtwMSAtIDEyID4+IDJdIC0gbyB8IDAsIGEgLSBnIHwgMCwgZVtwMSAtIDQgPj4gMl0gLSBvIHwgMCwgZVtjICsgNTIgPj4gMl0sIDEsIGEgLSBuIHwgMCksICQxKGIwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxKGIwKSwgUihzKSwgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMShiMCksIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDAsIGwxKHUpLCBSKHcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFggPSB4MiArIDMyIHwgMCwgbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwLCBhID0gMCwgSiA9IFggKyAtNjQgfCAwLCBYID0gSjsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtEICsgNjQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZVtjICsgMjggPj4gMl0sIG4gPSBnICsgWihlW2MgKyAyNCA+PiAyXSwgMTUyKSB8IDAsIGwgPSBlW24gLSAxNTIgPj4gMl0sIHUgPSBlW24gLSAxNDQgPj4gMl0sIHcgPSBlW2cgKyA0ID4+IDJdLCB5ID0gZVtnICsgMTIgPj4gMl0sIEIgPSBlW2cgPj4gMl0sIHYgPSBlW2cgKyA4ID4+IDJdLCBvID0gMSwgQyA9IGVbRCArIDQ0ID4+IDJdLCB6ID0gZVtDICsgNCA+PiAyXSwgKGggfCAwKSA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSCA9IGggLSAxIHwgMCwgbSA9IEggJiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IDAsIG4gPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gSCAmIC0yLCBzID0gMCwgbiA9IGc7IGggPSBlW24gKyAxNjAgPj4gMl0gLSBlW24gKyAxNTIgPj4gMl0gfCAwLCBoID0gaCA+Pj4gMCA8IHMgPj4+IDAgPyBzIDogaCwgcyA9IGVbbiArIDE2NCA+PiAyXSAtIGVbbiArIDE1NiA+PiAyXSB8IDAsIGggPSBoID4+PiAwID4gcyA+Pj4gMCA/IGggOiBzLCBzID0gZVtuICsgMzEyID4+IDJdIC0gZVtuICsgMzA0ID4+IDJdIHwgMCwgaCA9IGggPj4+IDAgPiBzID4+PiAwID8gaCA6IHMsIHMgPSBlW24gKyAzMTYgPj4gMl0gLSBlW24gKyAzMDggPj4gMl0gfCAwLCBzID0gaCA+Pj4gMCA+IHMgPj4+IDAgPyBoIDogcywgbiA9IG4gKyAzMDQgfCAwLCBhID0gYSArIDIgfCAwLCAobyB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IDAsIG0gJiYgKGEgPSBlW24gKyAxNjAgPj4gMl0gLSBlW24gKyAxNTIgPj4gMl0gfCAwLCBhID0gYSA+Pj4gMCA8IHMgPj4+IDAgPyBzIDogYSwgbiA9IGVbbiArIDE2NCA+PiAyXSAtIGVbbiArIDE1NiA+PiAyXSB8IDAsIHMgPSBuID4+PiAwIDwgYSA+Pj4gMCA/IGEgOiBuKSwgcyA+Pj4gMCA+IDEzNDIxNzcyNyB8fCAobjIgPSBzIDw8IDUsIG4gPSBQMChuMiksIGVbSiArIDMyID4+IDJdID0gbiwgIW4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbSiA+PiAyXSA9IG4sICFIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxLCBSKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChtID0geSAtIHcgfCAwLCB5ID0gdiAtIEIgfCAwLCBuID0geiA+Pj4gMSB8IDAsIFkyID0gbiA+Pj4gMCA8PSAyID8gMiA6IG4sIGggPSB1IC0gbCB8IDAsIGcyID0gaCA8PCA1LCBEMiA9IFooaCwgMjgpLCBYMiA9IFooaCwgMjQpLCB6MiA9IFooaCwgMjApLCBpMCA9IGggPDwgNCwgTDIgPSBaKGgsIDEyKSwgTyA9IGggPDwgMywgbyA9IGVbYyArIDM2ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0ogKyA4ID4+IDJdID0gbSwgbiA9IHksIGVbSiArIDQwID4+IDJdID0gbiwgcDIgPSBlW2cgKyAxNTYgPj4gMl0sIFAgPSBlW2cgKyAxNjQgPj4gMl0sIGEgPSBlW2cgKyAxNjAgPj4gMl0sIGwgPSBlW2cgKyAxNTIgPj4gMl0sIGVbSiArIDU2ID4+IDJdID0gMCwgZVtKICsgNTIgPj4gMl0gPSBuLCBlW0ogKyA0OCA+PiAyXSA9IDAsIGogPSAobCB8IDApICUgMiB8IDAsIGVbSiArIDQ0ID4+IDJdID0gaiwgeSA9IGEgLSBsIHwgMCwgcyA9IHkgLSBuIHwgMCwgZVtKICsgNjAgPj4gMl0gPSBzLCBlW0ogKyAzNiA+PiAyXSA9IHMsIHggPSAoeiB8IDApIDwgMiwgbSA9IFAgLSBwMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgheCAmIG0gPj4+IDAgPiAxNSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gMCwgbCA9IG8sIG0gPj4+IDAgPCA4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gZVtKICsgMzIgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gSiArIDMyIHwgMCwgbnIobiwgbCwgaCwgOCksIEsxKG4pLCBuID0gMCwgeSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBhID0gKG4gPDwgMikgKyBsIHwgMCwgdSA9IHMgKyAobiA8PCA1KSB8IDAsIEdbYSA+PiAyXSA9IEdbdSA+PiAyXSwgR1thICsgKGggPDwgMikgPj4gMl0gPSBHW3UgKyA0ID4+IDJdLCBHW2EgKyBPID4+IDJdID0gR1t1ICsgOCA+PiAyXSwgR1thICsgTDIgPj4gMl0gPSBHW3UgKyAxMiA+PiAyXSwgbiA9IG4gKyAxIHwgMCwgKHkgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMDsgYSA9IChuIDw8IDIpICsgbCB8IDAsIHUgPSBzICsgKG4gPDwgNSkgfCAwLCBHW2EgKyBpMCA+PiAyXSA9IEdbdSArIDE2ID4+IDJdLCBHW2EgKyB6MiA+PiAyXSA9IEdbdSArIDIwID4+IDJdLCBHW2EgKyBYMiA+PiAyXSA9IEdbdSArIDI0ID4+IDJdLCBHW2EgKyBEMiA+PiAyXSA9IEdbdSArIDI4ID4+IDJdLCBuID0gbiArIDEgfCAwLCAoeSB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgKyBnMiB8IDAsIG4gPSB3ICsgMTUgfCAwLCB3ID0gdyArIDggfCAwLCAhKG4gPj4+IDAgPCBtID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IG0gPj4+IDMgfCAwLCBCID0gbCA+Pj4gMCA8IHogPj4+IDAgPyBsIDogeiwgdiA9IChtID4+PiAwKSAvIChCID4+PiAwKSAmIC04LCB3ID0gbSAmIC04LCBhID0gMCwgbCA9IG87IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IFUyKDQ4KSwgIXUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRSA9IFAwKG4yKSwgZVt1ID4+IDJdID0gRSwgIUUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDEoQyksIFIodSksIG8gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbdSArIDQwID4+IDJdID0gbCwgZVt1ICsgMzYgPj4gMl0gPSBoLCBlW3UgKyAzMiA+PiAyXSA9IHksIGVbdSArIDI4ID4+IDJdID0gcywgZVt1ICsgMjQgPj4gMl0gPSAwLCBlW3UgKyAyMCA+PiAyXSA9IG4sIGVbdSArIDE2ID4+IDJdID0gMCwgZVt1ICsgMTIgPj4gMl0gPSBqLCBlW3UgKyA4ID4+IDJdID0gbiwgZVt1ICsgNCA+PiAyXSA9IHMsIGYyID0gdyAtIFooYSwgdikgfCAwLCBhID0gYSArIDEgfCAwLCBFID0gKEIgfCAwKSA9PSAoYSB8IDApID8gZjIgOiB2LCBlW3UgKyA0NCA+PiAyXSA9IEUsIGIxKEMsIDExOCwgdSksIGwgPSAoWihoLCBFKSA8PCAyKSArIGwgfCAwLCAoYSB8IDApID09IChCIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsMShDKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPj4+IDAgPj0gbSA+Pj4gMCB8fCAoYSA9IEogKyAzMiB8IDAsIG4gPSBtIC0gdyB8IDAsIG5yKGEsIGwsIGgsIG4pLCBLMShhKSwgIXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEIgPSBuICYgLTQsIHMgPSBuICYgMywgcCA9IDAsIHYgPSBlW0ogKyAzMiA+PiAyXSwgaiA9IHAyICsgKHcgLSBQIHwgMCkgPj4+IDAgPiA0Mjk0OTY3MjkyOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSAocCA8PCAyKSArIGwgfCAwLCB1ID0gdiArIChwIDw8IDUpIHwgMCwgbiA9IDAsIHcgPSAwLCAhaikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEdbYSArIChaKG4sIGgpIDw8IDIpID4+IDJdID0gR1t1ICsgKG4gPDwgMikgPj4gMl0sIEUgPSBuIHwgMSwgR1thICsgKFooRSwgaCkgPDwgMikgPj4gMl0gPSBHW3UgKyAoRSA8PCAyKSA+PiAyXSwgRSA9IG4gfCAyLCBHW2EgKyAoWihFLCBoKSA8PCAyKSA+PiAyXSA9IEdbdSArIChFIDw8IDIpID4+IDJdLCBFID0gbiB8IDMsIEdbYSArIChaKEUsIGgpIDw8IDIpID4+IDJdID0gR1t1ICsgKEUgPDwgMikgPj4gMl0sIG4gPSBuICsgNCB8IDAsIHcgPSB3ICsgNCB8IDAsIChCIHwgMCkgIT0gKHcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gMCwgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEdbYSArIChaKG4sIGgpIDw8IDIpID4+IDJdID0gR1t1ICsgKG4gPDwgMikgPj4gMl0sIG4gPSBuICsgMSB8IDAsIHcgPSB3ICsgMSB8IDAsIChzIHwgMCkgIT0gKHcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwID0gcCArIDEgfCAwLCAocCB8IDApID09ICh5IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZVtKICsgOCA+PiAyXSwgcyA9IG0gLSB1IHwgMCwgZVtKICsgNCA+PiAyXSA9IHMsIG4gPSBlW2cgKyAxNTYgPj4gMl0sIGVbSiArIDE2ID4+IDJdID0gMCwgZVtKICsgMjAgPj4gMl0gPSB1LCBlW0ogKyAyNCA+PiAyXSA9IDAsIGVbSiArIDI4ID4+IDJdID0gcywgRSA9IChuIHwgMCkgJSAyIHwgMCwgZVtKICsgMTIgPj4gMl0gPSBFOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIXggJiB5ID4+PiAwID4gMTUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IG8sIHkgPj4+IDAgPCA4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChQMiA9IG0gJiAtMiwgeDAgPSBtICYgMSwgVDAgPSBzICYgLTIsIGYxID0gcyAmIDEsIGgwID0gdSAmIC0yLCBaMSA9IHUgJiAxLCBTMiA9IFAgKyAocDIgXiAtMSkgfCAwLCBqID0gZVtKID4+IDJdLCBuID0gRSA8PCA1LCB4ID0gaiArIG4gfCAwLCBmMiA9IChqIC0gbiB8IDApICsgMzIgfCAwLCBjMiA9IFoodSwgaCkgPDwgMiwgYSA9IHk7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwLCB3ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHUgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEIgPSAoWihuLCBoKSA8PCAyKSArIGwgfCAwLCBwID0gZVtCICsgNCA+PiAyXSwgdiA9IHggKyAobiA8PCA2KSB8IDAsIGVbdiA+PiAyXSA9IGVbQiA+PiAyXSwgZVt2ICsgNCA+PiAyXSA9IHAsIHAgPSBlW0IgKyAyOCA+PiAyXSwgZVt2ICsgMjQgPj4gMl0gPSBlW0IgKyAyNCA+PiAyXSwgZVt2ICsgMjggPj4gMl0gPSBwLCBwID0gZVtCICsgMjAgPj4gMl0sIGVbdiArIDE2ID4+IDJdID0gZVtCICsgMTYgPj4gMl0sIGVbdiArIDIwID4+IDJdID0gcCwgcCA9IGVbQiArIDEyID4+IDJdLCBlW3YgKyA4ID4+IDJdID0gZVtCICsgOCA+PiAyXSwgZVt2ICsgMTIgPj4gMl0gPSBwLCBCID0gbiB8IDEsIHYgPSB4ICsgKEIgPDwgNikgfCAwLCBCID0gKFooaCwgQikgPDwgMikgKyBsIHwgMCwgcCA9IGVbQiArIDI4ID4+IDJdLCBlW3YgKyAyNCA+PiAyXSA9IGVbQiArIDI0ID4+IDJdLCBlW3YgKyAyOCA+PiAyXSA9IHAsIHAgPSBlW0IgKyAyMCA+PiAyXSwgZVt2ICsgMTYgPj4gMl0gPSBlW0IgKyAxNiA+PiAyXSwgZVt2ICsgMjAgPj4gMl0gPSBwLCBwID0gZVtCICsgMTIgPj4gMl0sIGVbdiArIDggPj4gMl0gPSBlW0IgKyA4ID4+IDJdLCBlW3YgKyAxMiA+PiAyXSA9IHAsIHAgPSBlW0IgKyA0ID4+IDJdLCBlW3YgPj4gMl0gPSBlW0IgPj4gMl0sIGVbdiArIDQgPj4gMl0gPSBwLCBuID0gbiArIDIgfCAwLCB3ID0gdyArIDIgfCAwLCAoaDAgfCAwKSAhPSAodyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVoxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0geCArIChuIDw8IDYpIHwgMCwgbiA9IChaKG4sIGgpIDw8IDIpICsgbCB8IDAsIEIgPSBlW24gKyA0ID4+IDJdLCBlW3cgPj4gMl0gPSBlW24gPj4gMl0sIGVbdyArIDQgPj4gMl0gPSBCLCBCID0gZVtuICsgMjggPj4gMl0sIGVbdyArIDI0ID4+IDJdID0gZVtuICsgMjQgPj4gMl0sIGVbdyArIDI4ID4+IDJdID0gQiwgQiA9IGVbbiArIDIwID4+IDJdLCBlW3cgKyAxNiA+PiAyXSA9IGVbbiArIDE2ID4+IDJdLCBlW3cgKyAyMCA+PiAyXSA9IEIsIEIgPSBlW24gKyAxMiA+PiAyXSwgZVt3ICsgOCA+PiAyXSA9IGVbbiArIDggPj4gMl0sIGVbdyArIDEyID4+IDJdID0gQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1IHwgMCkgPT0gKG0gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPSBsICsgYzIgfCAwLCBuID0gMCwgdyA9IDAsICh1IHwgMCkgIT0gKFMyIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgQiA9IHAgKyAoWihuLCBoKSA8PCAyKSB8IDAsIHEgPSBlW0IgKyA0ID4+IDJdLCB2ID0gZjIgKyAobiA8PCA2KSB8IDAsIGVbdiA+PiAyXSA9IGVbQiA+PiAyXSwgZVt2ICsgNCA+PiAyXSA9IHEsIHEgPSBlW0IgKyAyOCA+PiAyXSwgZVt2ICsgMjQgPj4gMl0gPSBlW0IgKyAyNCA+PiAyXSwgZVt2ICsgMjggPj4gMl0gPSBxLCBxID0gZVtCICsgMjAgPj4gMl0sIGVbdiArIDE2ID4+IDJdID0gZVtCICsgMTYgPj4gMl0sIGVbdiArIDIwID4+IDJdID0gcSwgcSA9IGVbQiArIDEyID4+IDJdLCBlW3YgKyA4ID4+IDJdID0gZVtCICsgOCA+PiAyXSwgZVt2ICsgMTIgPj4gMl0gPSBxLCBCID0gbiB8IDEsIHYgPSBmMiArIChCIDw8IDYpIHwgMCwgQiA9IHAgKyAoWihoLCBCKSA8PCAyKSB8IDAsIHEgPSBlW0IgKyAyOCA+PiAyXSwgZVt2ICsgMjQgPj4gMl0gPSBlW0IgKyAyNCA+PiAyXSwgZVt2ICsgMjggPj4gMl0gPSBxLCBxID0gZVtCICsgMjAgPj4gMl0sIGVbdiArIDE2ID4+IDJdID0gZVtCICsgMTYgPj4gMl0sIGVbdiArIDIwID4+IDJdID0gcSwgcSA9IGVbQiArIDEyID4+IDJdLCBlW3YgKyA4ID4+IDJdID0gZVtCICsgOCA+PiAyXSwgZVt2ICsgMTIgPj4gMl0gPSBxLCBxID0gZVtCICsgNCA+PiAyXSwgZVt2ID4+IDJdID0gZVtCID4+IDJdLCBlW3YgKyA0ID4+IDJdID0gcSwgbiA9IG4gKyAyIHwgMCwgdyA9IHcgKyAyIHwgMCwgKFQwIHwgMCkgIT0gKHcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGYyICsgKG4gPDwgNikgfCAwLCBuID0gcCArIChaKG4sIGgpIDw8IDIpIHwgMCwgQiA9IGVbbiArIDQgPj4gMl0sIGVbdyA+PiAyXSA9IGVbbiA+PiAyXSwgZVt3ICsgNCA+PiAyXSA9IEIsIEIgPSBlW24gKyAyOCA+PiAyXSwgZVt3ICsgMjQgPj4gMl0gPSBlW24gKyAyNCA+PiAyXSwgZVt3ICsgMjggPj4gMl0gPSBCLCBCID0gZVtuICsgMjAgPj4gMl0sIGVbdyArIDE2ID4+IDJdID0gZVtuICsgMTYgPj4gMl0sIGVbdyArIDIwID4+IDJdID0gQiwgQiA9IGVbbiArIDEyID4+IDJdLCBlW3cgKyA4ID4+IDJdID0gZVtuICsgOCA+PiAyXSwgZVt3ICsgMTIgPj4gMl0gPSBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEsxKEopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDAsIHcgPSAwLCBTMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBCID0gaiArIChuIDw8IDUpIHwgMCwgcCA9IGVbQiArIDQgPj4gMl0sIHYgPSAoWihuLCBoKSA8PCAyKSArIGwgfCAwLCBlW3YgPj4gMl0gPSBlW0IgPj4gMl0sIGVbdiArIDQgPj4gMl0gPSBwLCBwID0gZVtCICsgMjggPj4gMl0sIGVbdiArIDI0ID4+IDJdID0gZVtCICsgMjQgPj4gMl0sIGVbdiArIDI4ID4+IDJdID0gcCwgcCA9IGVbQiArIDIwID4+IDJdLCBlW3YgKyAxNiA+PiAyXSA9IGVbQiArIDE2ID4+IDJdLCBlW3YgKyAyMCA+PiAyXSA9IHAsIHAgPSBlW0IgKyAxMiA+PiAyXSwgZVt2ICsgOCA+PiAyXSA9IGVbQiArIDggPj4gMl0sIGVbdiArIDEyID4+IDJdID0gcCwgQiA9IG4gfCAxLCB2ID0gKFooQiwgaCkgPDwgMikgKyBsIHwgMCwgQiA9IGogKyAoQiA8PCA1KSB8IDAsIHAgPSBlW0IgKyAyOCA+PiAyXSwgZVt2ICsgMjQgPj4gMl0gPSBlW0IgKyAyNCA+PiAyXSwgZVt2ICsgMjggPj4gMl0gPSBwLCBwID0gZVtCICsgMjAgPj4gMl0sIGVbdiArIDE2ID4+IDJdID0gZVtCICsgMTYgPj4gMl0sIGVbdiArIDIwID4+IDJdID0gcCwgcCA9IGVbQiArIDEyID4+IDJdLCBlW3YgKyA4ID4+IDJdID0gZVtCICsgOCA+PiAyXSwgZVt2ICsgMTIgPj4gMl0gPSBwLCBwID0gZVtCICsgNCA+PiAyXSwgZVt2ID4+IDJdID0gZVtCID4+IDJdLCBlW3YgKyA0ID4+IDJdID0gcCwgbiA9IG4gKyAyIHwgMCwgdyA9IHcgKyAyIHwgMCwgKFAyIHwgMCkgIT0gKHcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF4MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IChaKG4sIGgpIDw8IDIpICsgbCB8IDAsIG4gPSBqICsgKG4gPDwgNSkgfCAwLCBCID0gZVtuICsgNCA+PiAyXSwgZVt3ID4+IDJdID0gZVtuID4+IDJdLCBlW3cgKyA0ID4+IDJdID0gQiwgQiA9IGVbbiArIDI4ID4+IDJdLCBlW3cgKyAyNCA+PiAyXSA9IGVbbiArIDI0ID4+IDJdLCBlW3cgKyAyOCA+PiAyXSA9IEIsIEIgPSBlW24gKyAyMCA+PiAyXSwgZVt3ICsgMTYgPj4gMl0gPSBlW24gKyAxNiA+PiAyXSwgZVt3ICsgMjAgPj4gMl0gPSBCLCBCID0gZVtuICsgMTIgPj4gMl0sIGVbdyArIDggPj4gMl0gPSBlW24gKyA4ID4+IDJdLCBlW3cgKyAxMiA+PiAyXSA9IEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsICsgMzIgfCAwLCBhID0gYSAtIDggfCAwLCAhKGEgPj4+IDAgPiA3KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IHkgPj4+IDMgfCAwLCB3ID0gbiA+Pj4gMCA8IFkyID4+PiAwID8gbiA6IFkyLCB2ID0gdyA+Pj4gMCA8PSAxID8gMSA6IHcsIEIgPSAoeSA+Pj4gMCkgLyAodyA+Pj4gMCkgJiAtOCwgaiA9IHkgJiAtOCwgYSA9IDAsIGwgPSBvOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBVMig0OCksICFuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPSBQMChuMiksIGVbbiA+PiAyXSA9IHgsICF4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwxKEMpLCBSKG4pLCBvID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW24gKyA0MCA+PiAyXSA9IGwsIGVbbiArIDM2ID4+IDJdID0gaCwgZVtuICsgMzIgPj4gMl0gPSBtLCBlW24gKyAyOCA+PiAyXSA9IHMsIGVbbiArIDI0ID4+IDJdID0gMCwgZVtuICsgMjAgPj4gMl0gPSB1LCBlW24gKyAxNiA+PiAyXSA9IDAsIGVbbiArIDEyID4+IDJdID0gRSwgZVtuICsgOCA+PiAyXSA9IHUsIGVbbiArIDQgPj4gMl0gPSBzLCBmMiA9IGogLSBaKGEsIEIpIHwgMCwgYSA9IGEgKyAxIHwgMCwgeCA9ICh3IHwgMCkgPT0gKGEgfCAwKSA/IGYyIDogQiwgZVtuICsgNDQgPj4gMl0gPSB4LCBiMShDLCAxMTksIG4pLCBsID0gKHggPDwgMikgKyBsIHwgMCwgKGEgfCAwKSA9PSAodiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDEoQyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IHkgJiA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFCKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFID0gRSA8PCA1LCBhID0gZVtKID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID0gYSArIEUgfCAwLCBqID0gQiA8PCAyLCBuID0gMCwgKHUgfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHggPSB1ICYgLTIsIHcgPSAwOyBGMih2ICsgKG4gPDwgNikgfCAwLCAoWihuLCBoKSA8PCAyKSArIGwgfCAwLCBqKSwgZjIgPSBuIHwgMSwgRjIodiArIChmMiA8PCA2KSB8IDAsIChaKGgsIGYyKSA8PCAyKSArIGwgfCAwLCBqKSwgbiA9IG4gKyAyIHwgMCwgdyA9IHcgKyAyIHwgMCwgKHggfCAwKSAhPSAodyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodSAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjIodiArIChuIDw8IDYpIHwgMCwgKFoobiwgaCkgPDwgMikgKyBsIHwgMCwgaik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodSB8IDApID09IChtIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodiA9IChhIC0gRSB8IDApICsgMzIgfCAwLCBqID0gKFoodSwgaCkgPDwgMikgKyBsIHwgMCwgRSA9IEIgPDwgMiwgbiA9IDAsICh1IHwgMCkgIT0gKFAgKyAocDIgXiAtMSkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gcyAmIC0yLCB3ID0gMDsgRjIodiArIChuIDw8IDYpIHwgMCwgaiArIChaKG4sIGgpIDw8IDIpIHwgMCwgRSksIHggPSBuIHwgMSwgRjIodiArICh4IDw8IDYpIHwgMCwgaiArIChaKGgsIHgpIDw8IDIpIHwgMCwgRSksIG4gPSBuICsgMiB8IDAsIHcgPSB3ICsgMiB8IDAsICh1IHwgMCkgIT0gKHcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHMgJiAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyKHYgKyAobiA8PCA2KSB8IDAsIGogKyAoWihuLCBoKSA8PCAyKSB8IDAsIEUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSzEoSiksICFtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IEIgPDwgMiwgbiA9IDAsIChQIHwgMCkgIT0gKHAyICsgMSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gbSAmIC0yLCB3ID0gMDsgRjIoKFoobiwgaCkgPDwgMikgKyBsIHwgMCwgYSArIChuIDw8IDUpIHwgMCwgdSksIEIgPSBuIHwgMSwgRjIoKFooQiwgaCkgPDwgMikgKyBsIHwgMCwgYSArIChCIDw8IDUpIHwgMCwgdSksIG4gPSBuICsgMiB8IDAsIHcgPSB3ICsgMiB8IDAsIChzIHwgMCkgIT0gKHcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobSAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMigoWihuLCBoKSA8PCAyKSArIGwgfCAwLCBhICsgKG4gPDwgNSkgfCAwLCB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IGcgKyAxNTIgfCAwLCBIID0gSCAtIDEgfCAwLCAhSCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSAxLCBnID0gZVtjICsgMjggPj4gMl0sIFkyID0gZyArIFooaCwgMTUyKSB8IDAsIFAyID0gWTIgLSAxNTIgfCAwLCBlW1AyID4+IDJdID09IGVbWTIgLSAxNDQgPj4gMl0gfHwgKHgwID0gWTIgLSAxNDggfCAwLCBlW3gwID4+IDJdID09IGVbWTIgLSAxNDAgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbZyArIDQgPj4gMl0sIHUgPSBlW2cgKyAxMiA+PiAyXSwgdyA9IGVbZyA+PiAyXSwgeSA9IGVbZyArIDggPj4gMl0sIEMgPSBlW2MgKyA2OCA+PiAyXSwgQiA9IGVbYyArIDY0ID4+IDJdLCB2ID0gZVtjICsgNjAgPj4gMl0sIHAyID0gZVtjICsgNTYgPj4gMl0sIG4yID0gSzQoYywgaCksICFuMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVtZMiAtIDE2ID4+IDJdLCBsID0gZVtQMiA+PiAyXSwgZyA9IGVbeDAgPj4gMl0sIGEgPSBlW1kyIC0gOCA+PiAyXSwgRzEobjIsIG4gLSBsIHwgMCwgZVtZMiAtIDEyID4+IDJdIC0gZyB8IDAsIGEgLSBsIHwgMCwgZVtZMiAtIDQgPj4gMl0gLSBnIHwgMCwgZVtjICsgNTIgPj4gMl0sIDEsIGEgLSBuIHwgMCksICQxKG4yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBoIC0gMSB8IDAsIHMgPSBuICYgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwLCBuID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobSA9IG4gJiAtMiwgbyA9IDAsIG4gPSBnOyBQID0gZVtuICsgMTYwID4+IDJdIC0gZVtuICsgMTUyID4+IDJdIHwgMCwgbyA9IG8gPj4+IDAgPiBQID4+PiAwID8gbyA6IFAsIFAgPSBlW24gKyAxNjQgPj4gMl0gLSBlW24gKyAxNTYgPj4gMl0gfCAwLCBvID0gbyA+Pj4gMCA+IFAgPj4+IDAgPyBvIDogUCwgUCA9IGVbbiArIDMxMiA+PiAyXSAtIGVbbiArIDMwNCA+PiAyXSB8IDAsIG8gPSBvID4+PiAwID4gUCA+Pj4gMCA/IG8gOiBQLCBQID0gZVtuICsgMzE2ID4+IDJdIC0gZVtuICsgMzA4ID4+IDJdIHwgMCwgbyA9IG8gPj4+IDAgPiBQID4+PiAwID8gbyA6IFAsIG4gPSBuICsgMzA0IHwgMCwgbCA9IGwgKyAyIHwgMCwgKG0gfCAwKSAhPSAobCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyAmJiAobCA9IGVbbiArIDE2MCA+PiAyXSAtIGVbbiArIDE1MiA+PiAyXSB8IDAsIGwgPSBsID4+PiAwIDwgbyA+Pj4gMCA/IG8gOiBsLCBuID0gZVtuICsgMTY0ID4+IDJdIC0gZVtuICsgMTU2ID4+IDJdIHwgMCwgbyA9IG4gPj4+IDAgPCBsID4+PiAwID8gbCA6IG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID4+PiAwID49IDEzNDIxNzcyOCB8fCAoUzIgPSBQMChvIDw8IDUpLCBlW0ogKyAzMiA+PiAyXSA9IFMyLCAhUzIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtKID4+IDJdID0gUzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobSA9IHUgLSBhIHwgMCwgbiA9IHkgLSB3IHwgMCwgVDAgPSBTMiArIDMyIHwgMCwgZjIgPSBoLCB4ID0gZVtjICsgMjAgPj4gMl0sIGogPSAxLCBQID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbSiArIDggPj4gMl0gPSBtLCBlW0ogKyA0MCA+PiAyXSA9IG4sIG8gPSBlW2cgKyAxNjQgPj4gMl0sIGEgPSBlW2cgKyAxNjAgPj4gMl0sIGwgPSBlW2cgKyAxNTYgPj4gMl0sIGggPSBlW2cgKyAxNTIgPj4gMl0sIEQyID0gKGggfCAwKSAlIDIgfCAwLCBlW0ogKyA0NCA+PiAyXSA9IEQyLCBmMSA9IChsIHwgMCkgJSAyIHwgMCwgZVtKICsgMTIgPj4gMl0gPSBmMSwgRSA9IGEgLSBoIHwgMCwgWDIgPSBFIC0gbiB8IDAsIGVbSiArIDM2ID4+IDJdID0gWDIsIHogPSBvIC0gbCB8IDAsIGgwID0geiAtIG0gfCAwLCBlW0ogKyA0ID4+IDJdID0gaDAsIHMgPSBwMiwgbCA9IHMsIGEgPSB2LCB5ID0gYSwgbyA9IEIsIEggPSBvLCB3ID0gQywgcCA9IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUCAmIChqIHwgMCkgPT0gKHggfCAwKSB8fCAoaCA9IHggLSBqIHwgMCwgeSA9IDAsIGwgPSAwLCBzICYmIChsID0gaCAmIDMxLCAoaCAmIDYzKSA+Pj4gMCA+PSAzMiA/ICh1ID0gLTEgPDwgbCwgYSA9IDApIDogKGEgPSAtMSA8PCBsLCB1ID0gYSB8ICgxIDw8IGwpIC0gMSAmIC0xID4+PiAzMiAtIGwpLCBsID0gcyArIChhIF4gLTEpIHwgMCwgdSA9IHUgXiAtMSwgdSA9IGwgPj4+IDAgPCBwMiA+Pj4gMCA/IHUgKyAxIHwgMCA6IHUsIG8gPSBsLCBsID0gaCAmIDMxLCAoaCAmIDYzKSA+Pj4gMCA+PSAzMiA/IGwgPSB1ID4+PiBsIHwgMCA6IGwgPSAoKDEgPDwgbCkgLSAxICYgdSkgPDwgMzIgLSBsIHwgbyA+Pj4gbCksIHYgJiYgKG8gPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gKHUgPSAtMSA8PCBvLCBhID0gMCkgOiAoYSA9IC0xIDw8IG8sIHUgPSBhIHwgKDEgPDwgbykgLSAxICYgLTEgPj4+IDMyIC0gbyksIG8gPSB2ICsgKGEgXiAtMSkgfCAwLCBhID0gdSBeIC0xLCBhID0gbyA+Pj4gMCA8IHYgPj4+IDAgPyBhICsgMSB8IDAgOiBhLCB1ID0gbywgbyA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyB5ID0gYSA+Pj4gbyB8IDAgOiB5ID0gKCgxIDw8IG8pIC0gMSAmIGEpIDw8IDMyIC0gbyB8IHUgPj4+IG8pLCB3ID0gMCwgbyA9IDAsIEIgJiYgKG8gPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gKHUgPSAtMSA8PCBvLCBhID0gMCkgOiAoYSA9IC0xIDw8IG8sIHUgPSBhIHwgKDEgPDwgbykgLSAxICYgLTEgPj4+IDMyIC0gbyksIG8gPSBCICsgKGEgXiAtMSkgfCAwLCB1ID0gdSBeIC0xLCB1ID0gbyA+Pj4gMCA8IEIgPj4+IDAgPyB1ICsgMSB8IDAgOiB1LCBhID0gbywgbyA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyBvID0gdSA+Pj4gbyB8IDAgOiBvID0gKCgxIDw8IG8pIC0gMSAmIHUpIDw8IDMyIC0gbyB8IGEgPj4+IG8pLCBDICYmICh1ID0gaCAmIDMxLCAoaCAmIDYzKSA+Pj4gMCA+PSAzMiA/IChhID0gLTEgPDwgdSwgdSA9IDApIDogKGEgPSAoMSA8PCB1KSAtIDEgJiAtMSA+Pj4gMzIgLSB1LCB1ID0gLTEgPDwgdSwgYSA9IGEgfCB1KSwgdyA9IEMgKyAodSBeIC0xKSB8IDAsIHUgPSBhIF4gLTEsIHUgPSB3ID4+PiAwIDwgQyA+Pj4gMCA/IHUgKyAxIHwgMCA6IHUsIGEgPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gdyA9IHUgPj4+IGEgfCAwIDogdyA9ICgoMSA8PCBhKSAtIDEgJiB1KSA8PCAzMiAtIGEgfCB3ID4+PiBhKSwgSCA9IDAsIHMgPSAwLCBnMiA9IDEgPDwgaCAtIDEsIGcyID4+PiAwIDwgcDIgPj4+IDAgJiYgKGEgPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gKHUgPSAtMSA8PCBhLCBhID0gMCkgOiAodSA9ICgxIDw8IGEpIC0gMSAmIC0xID4+PiAzMiAtIGEsIGEgPSAtMSA8PCBhLCB1ID0gdSB8IGEpLCBzID0gYSBeIC0xLCBhID0gcyArIChwMiAtIGcyIHwgMCkgfCAwLCB1ID0gdSBeIC0xLCB1ID0gYSA+Pj4gMCA8IHMgPj4+IDAgPyB1ICsgMSB8IDAgOiB1LCBzID0gYSwgYSA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyBzID0gdSA+Pj4gYSB8IDAgOiBzID0gKCgxIDw8IGEpIC0gMSAmIHUpIDw8IDMyIC0gYSB8IHMgPj4+IGEpLCBCID4+PiAwID4gZzIgPj4+IDAgJiYgKGEgPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gKHUgPSAtMSA8PCBhLCBhID0gMCkgOiAodSA9ICgxIDw8IGEpIC0gMSAmIC0xID4+PiAzMiAtIGEsIGEgPSAtMSA8PCBhLCB1ID0gdSB8IGEpLCBIID0gYSBeIC0xLCBhID0gSCArIChCIC0gZzIgfCAwKSB8IDAsIHUgPSB1IF4gLTEsIHUgPSBhID4+PiAwIDwgSCA+Pj4gMCA/IHUgKyAxIHwgMCA6IHUsIEggPSBhLCBhID0gaCAmIDMxLCAoaCAmIDYzKSA+Pj4gMCA+PSAzMiA/IEggPSB1ID4+PiBhIHwgMCA6IEggPSAoKDEgPDwgYSkgLSAxICYgdSkgPDwgMzIgLSBhIHwgSCA+Pj4gYSksIHAgPSAwLCBhID0gMCwgdiA+Pj4gMCA+IGcyID4+PiAwICYmIChhID0gaCAmIDMxLCAoaCAmIDYzKSA+Pj4gMCA+PSAzMiA/ICh1ID0gLTEgPDwgYSwgYSA9IDApIDogKHUgPSAoMSA8PCBhKSAtIDEgJiAtMSA+Pj4gMzIgLSBhLCBhID0gLTEgPDwgYSwgdSA9IHUgfCBhKSwgaTAgPSBhIF4gLTEsIHoyID0gaTAgKyAodiAtIGcyIHwgMCkgfCAwLCBhID0gdSBeIC0xLCBhID0gejIgPj4+IDAgPCBpMCA+Pj4gMCA/IGEgKyAxIHwgMCA6IGEsIHUgPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gYSA9IGEgPj4+IHUgfCAwIDogYSA9ICgoMSA8PCB1KSAtIDEgJiBhKSA8PCAzMiAtIHUgfCB6MiA+Pj4gdSksIEMgPj4+IDAgPD0gZzIgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBoICYgMzEsIGkwID0gQyAtIGcyIHwgMCwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyAodSA9IC0xIDw8IHAsIHAgPSAwKSA6ICh1ID0gKDEgPDwgcCkgLSAxICYgLTEgPj4+IDMyIC0gcCwgcCA9IC0xIDw8IHAsIHUgPSB1IHwgcCksIGcyID0gcCBeIC0xLCBwID0gaTAgKyBnMiB8IDAsIHUgPSB1IF4gLTEsIHUgPSBwID4+PiAwIDwgZzIgPj4+IDAgPyB1ICsgMSB8IDAgOiB1LCBnMiA9IHAsIHAgPSBoICYgMzEsIChoICYgNjMpID4+PiAwID49IDMyID8gcCA9IHUgPj4+IHAgfCAwIDogcCA9ICgoMSA8PCBwKSAtIDEgJiB1KSA8PCAzMiAtIHAgfCBnMiA+Pj4gcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlW2cgKyAxODAgPj4gMl0sIHUgPSBIIC0gaCB8IDAsIHUgPSB1ID4+PiAwIDw9IEggPj4+IDAgPyB1IDogMCwgSCA9IHUgKyA0IHwgMCwgdSA9IHUgPj4+IDAgPiBIID4+PiAwID8gLTEgOiBILCBMMiA9IHUgPj4+IDAgPCBYMiA+Pj4gMCA/IHUgOiBYMiwgdSA9IGVbZyArIDIxNiA+PiAyXSwgSCA9IG8gLSB1IHwgMCwgbyA9IG8gPj4+IDAgPj0gSCA+Pj4gMCA/IEggOiAwLCBIID0gbyArIDQgfCAwLCBvID0gbyA+Pj4gMCA+IEggPj4+IDAgPyAtMSA6IEgsIE8gPSBuID4+PiAwID4gbyA+Pj4gMCA/IG8gOiBuLCBvID0gKEQyID8gTDIgOiBPKSA8PCAxLCBIID0gKEQyID8gTyA6IEwyKSA8PCAxIHwgMSwgZzIgPSBvID4+PiAwID4gSCA+Pj4gMCA/IG8gOiBILCBaMSA9IGcyID4+PiAwIDwgRSA+Pj4gMCwgbyA9IHMgLSBoIHwgMCwgbyA9IG8gPj4+IDAgPD0gcyA+Pj4gMCA/IG8gOiAwLCBoID0gbyAtIDQgfCAwLCBYMiA9IG8gPj4+IDAgPj0gaCA+Pj4gMCA/IGggOiAwLCBvID0gbCAtIHUgfCAwLCBsID0gbCA+Pj4gMCA+PSBvID4+PiAwID8gbyA6IDAsIG8gPSBsIC0gNCB8IDAsIHoyID0gbCA+Pj4gMCA+PSBvID4+PiAwID8gbyA6IDAsIGMyID0gKEQyID8gWDIgOiB6MikgPDwgMSwgcSA9IChEMiA/IHoyIDogWDIpIDw8IDEgfCAxLCB4MiA9IGMyID4+PiAwIDwgcSA+Pj4gMCwgbCA9IGVbZyArIDE4NCA+PiAyXSwgbyA9IHkgLSBsIHwgMCwgbyA9IG8gPj4+IDAgPD0geSA+Pj4gMCA/IG8gOiAwLCBoID0gbyAtIDQgfCAwLCBoID0gbyA+Pj4gMCA+PSBoID4+PiAwID8gaCA6IDAsIG8gPSBoLCB1ID0gZVtnICsgMjIwID4+IDJdLCB5ID0gYSAtIHUgfCAwLCBhID0gYSA+Pj4gMCA+PSB5ID4+PiAwID8geSA6IDAsIHkgPSBhIC0gNCB8IDAsIEggPSBhID4+PiAwID49IHkgPj4+IDAgPyB5IDogMCwgYSA9IEgsIGwgPSB3IC0gbCB8IDAsIGwgPSBsID4+PiAwIDw9IHcgPj4+IDAgPyBsIDogMCwgdyA9IGwgKyA0IHwgMCwgbCA9IGwgPj4+IDAgPiB3ID4+PiAwID8gLTEgOiB3LCBpMCA9IGwgPj4+IDAgPCBtID4+PiAwID8gbCA6IG0sIGwgPSBpMCwgdSA9IHAgLSB1IHwgMCwgdSA9IHUgPj4+IDAgPD0gcCA+Pj4gMCA/IHUgOiAwLCB3ID0gdSArIDQgfCAwLCB1ID0gdSA+Pj4gMCA+IHcgPj4+IDAgPyAtMSA6IHcsIHUgPSB1ID4+PiAwIDwgaDAgPj4+IDAgPyB1IDogaDAsIHMgPSB1LCBmMSAmJiAobyA9IGEsIGEgPSBoLCBzID0gbCwgbCA9IHUpLCBnMiA9IFoxID8gZzIgOiBFLCBwID0geDIgPyBjMiA6IHEsIGVbSiArIDYwID4+IDJdID0gTDIsIGVbSiArIDU2ID4+IDJdID0gWDIsIGVbSiArIDUyID4+IDJdID0gTywgZVtKICsgNDggPj4gMl0gPSB6MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHogPj4+IDAgPCA4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDcsIHkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gRDIgPDwgNSwgaDAgPSAoVDAgLSB3IHwgMCkgKyAoWDIgPDwgNikgfCAwLCBaMSA9ICh3ICsgUzIgfCAwKSArICh6MiA8PCA2KSB8IDAsIEwyID0gbiArIEwyIHwgMCwgWDIgPSBuICsgWDIgfCAwLCBjMiA9IHUgKyBtIHwgMCwgcSA9IG0gKyBIIHwgMCwgeDIgPSBTMiArIChwIDw8IDUpIHwgMCwgeSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHkgfCA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHkgPj4+IDAgPCBpMCA+Pj4gMCAmIG4gPj4+IDAgPj0gaCA+Pj4gMCB8IHkgPj4+IDAgPCBjMiA+Pj4gMCAmIG4gPj4+IDAgPj0gcSA+Pj4gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHkgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IHogLSB5IHwgMCwgQzAgPSBuID4+PiAwID49IDggPyA4IDogbiwgbiA9IDA7IHcgPSBuICsgeSB8IDAsIEQyID0gdyArIDEgfCAwLCB0MCA9IG4gPDwgMiwgRzEobjIsIHoyLCB3LCBPLCBEMiwgdDAgKyBaMSB8IDAsIDE2LCAwKSwgRzEobjIsIFgyLCB3LCBMMiwgRDIsIHQwICsgaDAgfCAwLCAxNiwgMCksIG4gPSBuICsgMSB8IDAsIChDMCB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEsxKEogKyAzMiB8IDApLCBuID0geSwgeSA9IHkgKyA4IHwgMCwgIWFlKG4yLCBwLCBuLCBnMiwgeSwgeDIsIDgsIDEsIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHkgfCA3LCAhKHogPj4+IDAgPiBuID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghKHkgPj4+IDAgPCBpMCA+Pj4gMCAmIG4gPj4+IDAgPj0gaCA+Pj4gMCkgJiAodSArIG0gPj4+IDAgPD0geSA+Pj4gMCB8IG0gKyBIID4+PiAwID4gbiA+Pj4gMCkgfCB5ID4+PiAwID49IHogPj4+IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gSiArIDMyIHwgMCwgdyA9IDAsIHoyID0geiAtIHkgfCAwLCB6MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgRDIgPSB3ICsgeSB8IDAsIFgyID0gRDIgKyAxIHwgMCwgTDIgPSBlW24gKyAxNiA+PiAyXSwgTyA9IEwyLCBIMCA9IChlW24gPj4gMl0gKyAoZVtuICsgMTIgPj4gMl0gPDwgNSkgfCAwKSArIChMMiA8PCA2KSB8IDAsIEwyID0gdyA8PCAyLCBHMShuMiwgTywgRDIsIGVbbiArIDIwID4+IDJdLCBYMiwgSDAgKyBMMiB8IDAsIDE2LCAwKSwgTyA9IGVbbiArIDI0ID4+IDJdLCBoMCA9IGVbbiArIDggPj4gMl0sIEcxKG4yLCBPICsgaDAgfCAwLCBEMiwgaDAgKyBlW24gKyAyOCA+PiAyXSB8IDAsIFgyLCAoTDIgKyAoKGVbbiA+PiAyXSAtIChlW24gKyAxMiA+PiAyXSA8PCA1KSB8IDApICsgKE8gPDwgNikgfCAwKSB8IDApICsgMzIgfCAwLCAxNiwgMCksIHcgPSB3ICsgMSB8IDAsICh6MiB8IDApICE9ICh3IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEsxKG4pLCAhYWUobjIsIHAsIHksIGcyLCB6LCBTMiArIChwIDw8IDUpIHwgMCwgOCwgMSwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0ogKyAyOCA+PiAyXSA9IHUsIGVbSiArIDI0ID4+IDJdID0gSCwgZVtKICsgMjAgPj4gMl0gPSBpMCwgZVtKICsgMTYgPj4gMl0gPSBoLCBwID4+PiAwIDwgZzIgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IGwgPDwgMSwgbCA9IHMgPDwgMSB8IDEsIG4gPSBuID4+PiAwID4gbCA+Pj4gMCA/IG4gOiBsLCBsID0gbiA+Pj4gMCA8IHogPj4+IDAgPyBuIDogeiwgbiA9IGYxIDw8IDUsIHcgPSAoVDAgLSBuIHwgMCkgKyAoSCA8PCA2KSB8IDAsIHkgPSAobiArIFMyIHwgMCkgKyAoaCA8PCA2KSB8IDAsIHUgPSB1ICsgbSB8IDAsIHMgPSBtICsgSCB8IDAsIG4gPSBvIDw8IDEsIG8gPSBhIDw8IDEgfCAxLCBvID0gbiA+Pj4gMCA8IG8gPj4+IDAgPyBuIDogbywgYSA9IFMyICsgKG8gPDwgNSkgfCAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gZzIgLSBwIHwgMCwgbiA9IChuID4+PiAwID49IDggPyA4IDogbikgKyBwIHwgMCwgRzEobjIsIHAsIGgsIG4sIGkwLCB5LCAxLCAxNiksIEcxKG4yLCBwLCBzLCBuLCB1LCB3LCAxLCAxNiksIEsxKEopLCAhYWUobjIsIHAsIG8sIG4sIGwsIGEsIDEsIDgsIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCA9IHAgKyA4IHwgMCwgIShnMiA+Pj4gMCA+IHAgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZyArIDE1MiB8IDAsIG4gPSBFLCBtID0geiwgdSA9IFAsIGogPSBqICsgMSB8IDAsIHUgPSBqID8gdSA6IHUgKyAxIHwgMCwgUCA9IHUsICEoKGogfCAwKSAhPSAoZjIgfCAwKSB8IHUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxLCBuID0gZVtZMiAtIDE2ID4+IDJdLCBsID0gZVtQMiA+PiAyXSwgZyA9IGVbeDAgPj4gMl0sIGEgPSBlW1kyIC0gOCA+PiAyXSwgRzEobjIsIG4gLSBsIHwgMCwgZVtZMiAtIDEyID4+IDJdIC0gZyB8IDAsIGEgLSBsIHwgMCwgZVtZMiAtIDQgPj4gMl0gLSBnIHwgMCwgZVtjICsgNTIgPj4gMl0sIDEsIGEgLSBuIHwgMCksICQxKG4yKSwgUihTMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMShuMiksIFIoUzIpLCBvID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxKG4yKSwgbyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsMShDKSwgbyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGVbSiArIDMyID4+IDJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFggPSBKIC0gLTY0IHwgMCwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobTIgPSBtMiArIDEwODAgfCAwLCBpID0gaSArIDUyIHwgMCwgYyA9IGMgKyA3NiB8IDAsIHcyID0gdzIgKyAxIHwgMCwgISh3MiA+Pj4gMCA8IGRbcjAgKyAxNiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICByMCA9IGVbZVtEICsgMjAgPj4gMl0gPj4gMl0sIG0yID0gZVtEICsgMzIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGggPSBlW20yICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbRCArIDY4ID4+IDJdIHwgIWgpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBpID0gZVtyMCArIDIwID4+IDJdLCBsID0gZVtpICsgMjggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IGVbRCArIDY0ID4+IDJdLCBnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodzIgPSBlW3IwICsgMTYgPj4gMl0sIHcyID4+PiAwIDwgMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gZVtpICsgMjQgPj4gMl0sICEoKG4gfCAwKSA9PSBlW2kgKyAxMDAgPj4gMl0gJiAobiB8IDApID09IGVbaSArIDE3NiA+PiAyXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUSh0LCAxLCAyMDU5OCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZVtlW0QgKyAyNCA+PiAyXSArIDI0ID4+IDJdLCBhID0gZVtvICsgMzYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApICE9IGVbbyArIDg4ID4+IDJdIHwgKGEgfCAwKSAhPSBlW28gKyAxNDAgPj4gMl0gfHwgKG8gPSBaKG4sIDE1MiksIG4gPSBvICsgbCB8IDAsIG4gPSBaKGVbbiAtIDE0MCA+PiAyXSAtIGVbbiAtIDE0OCA+PiAyXSB8IDAsIGVbbiAtIDE0NCA+PiAyXSAtIGVbbiAtIDE1MiA+PiAyXSB8IDApLCBsID0gbyArIGVbaSArIDEwNCA+PiAyXSB8IDAsIChuIHwgMCkgIT0gKFooZVtsIC0gMTQwID4+IDJdIC0gZVtsIC0gMTQ4ID4+IDJdIHwgMCwgZVtsIC0gMTQ0ID4+IDJdIC0gZVtsIC0gMTUyID4+IDJdIHwgMCkgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBvICsgZVtpICsgMTgwID4+IDJdIHwgMCwgKFooZVtsIC0gMTQwID4+IDJdIC0gZVtsIC0gMTQ4ID4+IDJdIHwgMCwgZVtsIC0gMTQ0ID4+IDJdIC0gZVtsIC0gMTUyID4+IDJdIHwgMCkgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKHQsIDEsIDIwNTk4LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3MiA9IGVbcjAgKyAxNiA+PiAyXSwgdzIgPj4+IDAgPCAzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZVtlW0QgKyAyNCA+PiAyXSArIDI0ID4+IDJdLCBuID0gZVtvICsgMzYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgIT0gZVtvICsgODggPj4gMl0gfHwgKG8gPSBlW28gKyAxNDAgPj4gMl0sIChvIHwgMCkgIT0gKG4gfCAwKSkgfHwgKGEgPSBsLCBsID0gWihuLCAxNTIpLCBuID0gYSArIGwgfCAwLCBuID0gWihlW24gKyAxNDggPj4gMl0gLSBlW24gKyAxNDAgPj4gMl0gfCAwLCBlW24gKyAxNDQgPj4gMl0gLSBlW24gKyAxMzYgPj4gMl0gfCAwKSwgbCA9IGwgKyBlW2kgKyAxMDQgPj4gMl0gfCAwLCAobiB8IDApICE9IChaKGVbbCArIDE0OCA+PiAyXSAtIGVbbCArIDE0MCA+PiAyXSB8IDAsIGVbbCArIDE0NCA+PiAyXSAtIGVbbCArIDEzNiA+PiAyXSB8IDApIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2kgKyAxODAgPj4gMl0gKyBaKG8sIDE1MikgfCAwLCAoWihlW2wgKyAxNDggPj4gMl0gLSBlW2wgKyAxNDAgPj4gMl0gfCAwLCBlW2wgKyAxNDQgPj4gMl0gLSBlW2wgKyAxMzYgPj4gMl0gfCAwKSB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIFEodCwgMSwgMjA1OTgsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChoIHwgMCkgPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVttMiArIDU2MDggPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gVTIodzIgPDwgMiksICFoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZVtyMCArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0QgKyA2NCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBvICYgMywgZyA9IDAsIG8gPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG8gJiAzLCBnID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA+Pj4gMCA8IDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBvICYgLTQsIGMgPSAwLCBhID0gMDsgbCA9IGggKyAoYyA8PCAyKSB8IDAsIGVbbCA+PiAyXSA9IGVbaSArIDUyID4+IDJdLCBlW2wgKyA0ID4+IDJdID0gZVtpICsgMTI4ID4+IDJdLCBlW2wgKyA4ID4+IDJdID0gZVtpICsgMjA0ID4+IDJdLCBlW2wgKyAxMiA+PiAyXSA9IGVbaSArIDI4MCA+PiAyXSwgYyA9IGMgKyA0IHwgMCwgaSA9IGkgKyAzMDQgfCAwLCBhID0gYSArIDQgfCAwLCAodyB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2ggKyAoYyA8PCAyKSA+PiAyXSA9IGVbaSArIDUyID4+IDJdLCBjID0gYyArIDEgfCAwLCBpID0gaSArIDc2IHwgMCwgZyA9IGcgKyAxIHwgMCwgKHUgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSBvICYgLTQsIGMgPSAwLCBhID0gMDsgbCA9IGggKyAoYyA8PCAyKSB8IDAsIGVbbCA+PiAyXSA9IGVbaSArIDM2ID4+IDJdLCBlW2wgKyA0ID4+IDJdID0gZVtpICsgMTEyID4+IDJdLCBlW2wgKyA4ID4+IDJdID0gZVtpICsgMTg4ID4+IDJdLCBlW2wgKyAxMiA+PiAyXSA9IGVbaSArIDI2NCA+PiAyXSwgYyA9IGMgKyA0IHwgMCwgaSA9IGkgKyAzMDQgfCAwLCBhID0gYSArIDQgfCAwLCAodyB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVtoICsgKGMgPDwgMikgPj4gMl0gPSBlW2kgKyAzNiA+PiAyXSwgYyA9IGMgKyAxIHwgMCwgaSA9IGkgKyA3NiB8IDAsIGcgPSBnICsgMSB8IDAsICh1IHwgMCkgIT0gKGcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlW20yICsgNTYwOCA+PiAyXSwgdSA9IDAsIGcgPSBVMihvIDw8IDMpLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghbiB8ICFvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwMiA9IGcgKyAobyA8PCAyKSB8IDAsIEIgPSBvICYgLTQsIHMgPSBvICYgMywgdiA9IG8gLSAxIHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IDAsIHkgPSAwLCB2ID4+PiAwID49IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgYSA9IGkgPDwgMiwgR1thICsgZyA+PiAyXSA9IEdbZVthICsgaCA+PiAyXSA+PiAyXSwgdyA9IGEgfCA0LCBHW3cgKyBnID4+IDJdID0gR1tlW2ggKyB3ID4+IDJdID4+IDJdLCB3ID0gYSB8IDgsIEdbdyArIGcgPj4gMl0gPSBHW2VbaCArIHcgPj4gMl0gPj4gMl0sIGEgPSBhIHwgMTIsIEdbYSArIGcgPj4gMl0gPSBHW2VbYSArIGggPj4gMl0gPj4gMl0sIGkgPSBpICsgNCB8IDAsIHkgPSB5ICsgNCB8IDAsIChCIHwgMCkgIT0gKHkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSAwLCBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGEgPSBpIDw8IDIsIEdbYSArIGcgPj4gMl0gPSBHW2VbYSArIGggPj4gMl0gPj4gMl0sIGkgPSBpICsgMSB8IDAsIGMgPSBjICsgMSB8IDAsIChzIHwgMCkgIT0gKGMgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gMCwgaSA9IGw7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUCA9IHcgPDwgMiwgYSA9IFAgKyBwMiB8IDAsIGVbYSA+PiAyXSA9IDAsIGUwID0gVygwKSwgYyA9IDAsIEMgPSAwLCB2ID4+PiAwID4gMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHkgPSBnICsgKGMgPDwgMikgfCAwLCBlMCA9IFcoVyhHW2kgPj4gMl0gKiBHW3kgPj4gMl0pICsgZTApLCBHW2EgPj4gMl0gPSBlMCwgZTAgPSBXKFcoR1tpICsgNCA+PiAyXSAqIEdbeSArIDQgPj4gMl0pICsgZTApLCBHW2EgPj4gMl0gPSBlMCwgZTAgPSBXKFcoR1tpICsgOCA+PiAyXSAqIEdbeSArIDggPj4gMl0pICsgZTApLCBHW2EgPj4gMl0gPSBlMCwgZTAgPSBXKFcoR1tpICsgMTIgPj4gMl0gKiBHW3kgKyAxMiA+PiAyXSkgKyBlMCksIEdbYSA+PiAyXSA9IGUwLCBjID0gYyArIDQgfCAwLCBpID0gaSArIDE2IHwgMCwgQyA9IEMgKyA0IHwgMCwgKEIgfCAwKSAhPSAoQyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0gPSAwLCBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZTAgPSBXKFcoR1tpID4+IDJdICogR1tnICsgKGMgPDwgMikgPj4gMl0pICsgZTApLCBHW2EgPj4gMl0gPSBlMCwgYyA9IGMgKyAxIHwgMCwgaSA9IGkgKyA0IHwgMCwgbSA9IG0gKyAxIHwgMCwgKHMgfCAwKSAhPSAobSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgPSBoICsgUCB8IDAsIGEgPSBlW3kgPj4gMl0sIGVbeSA+PiAyXSA9IGEgKyA0LCBHW2EgPj4gMl0gPSBlMCwgdyA9IHcgKyAxIHwgMCwgKG8gfCAwKSA9PSAodyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSB1ICsgMSB8IDAsICh1IHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGcpLCBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIoaCksIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbZVttMiArIDU1ODQgPj4gMl0gKyAyMCA+PiAyXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFA2KGVbaSArIDM2ID4+IDJdLCBlW2kgKyAxMTIgPj4gMl0sIGVbaSArIDE4OCA+PiAyXSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBQNihlW2kgKyA1MiA+PiAyXSwgZVtpICsgMTI4ID4+IDJdLCBlW2kgKyAyMDQgPj4gMl0sIG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBYNihlW2kgKyAzNiA+PiAyXSwgZVtpICsgMTEyID4+IDJdLCBlW2kgKyAxODggPj4gMl0sIG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgWDYoZVtpICsgNTIgPj4gMl0sIGVbaSArIDEyOCA+PiAyXSwgZVtpICsgMjA0ID4+IDJdLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbTTAgPj4gMl0gPSB3MiwgUSh0LCAxLCAyMDY1OSwgTTApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoQyA9IGVbZVtEICsgMjAgPj4gMl0gPj4gMl0sICFlW0MgKyAxNiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgVSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKEIgPSBlW0QgKyA2OCA+PiAyXSwgbyA9IGVbQyArIDIwID4+IDJdLCBuID0gZVtlW0QgKyAzMiA+PiAyXSArIDU1ODQgPj4gMl0sIHkgPSBlW2VbRCArIDI0ID4+IDJdICsgMjQgPj4gMl0sIHMgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbQiArIChzIDw8IDIpID4+IDJdICYmIEIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGVbbyArIDI4ID4+IDJdLCBpID0gbCArIFooZVt5ICsgMzYgPj4gMl0sIDE1MikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW0QgKyA2NCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGVbaSArIDE0OCA+PiAyXSAtIGVbaSArIDE0MCA+PiAyXSB8IDAsIHIwID0gZVtpICsgMTQ0ID4+IDJdIC0gZVtpICsgMTM2ID4+IDJdIHwgMCwgdyA9IDAsIGkgPSA1MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsICsgWihlW28gKyAyNCA+PiAyXSwgMTUyKSB8IDAsIHIwID0gZVtpICsgOCA+PiAyXSAtIGVbaSA+PiAyXSB8IDAsIHcgPSBlW2wgLSAxNDQgPj4gMl0gLSAocjAgKyBlW2wgLSAxNTIgPj4gMl0gfCAwKSB8IDAsIGEgPSBlW2kgKyAxMiA+PiAyXSAtIGVbaSArIDQgPj4gMl0gfCAwLCBpID0gMzY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGkgKyBvIHwgMCwgaSA9IGVbeSArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbeSArIDMyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMSA8PCBpIC0gMSwgYyA9IGkgLSAxIHwgMCwgbCA9IDAgLSBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAtMSA8PCBpIF4gLTEsIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVID0gZVtnID4+IDJdLCBlW24gKyAyMCA+PiAyXSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhIHwgIXIwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHYgPSBsID4+IDMxLCBnID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodzIgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMCA9IEdbVSA+PiAyXSwgaSA9IGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZTAgPiBXKDIxNDc0ODM2NDgpIHx8IChpID0gbCwgZTAgPCBXKC0yMTQ3NDgzNjQ4KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBsLCBpID0gZVtuICsgMTA3NiA+PiAyXSwgbSA9IGksIHUgPSBpID4+IDMxLCBlMCA9IHExKGUwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMihlMCkpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gfn5lMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IEgsIHUgPSB1ICsgKGkgPj4gMzEpIHwgMCwgaSA9IGkgKyBtIHwgMCwgdSA9IEggPj4+IDAgPiBpID4+PiAwID8gdSArIDEgfCAwIDogdSwgaSA9IGkgPj4+IDAgPCBsID4+PiAwICYgKHUgfCAwKSA8PSAodiB8IDApIHwgKHUgfCAwKSA8ICh2IHwgMCkgPyBoIDogaSA+Pj4gMCA8IGMgPj4+IDAgJiAodSB8IDApIDw9IDAgfCAodSB8IDApIDwgMCA/IGkgOiBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW1UgPj4gMl0gPSBpLCBVID0gVSArIDQgfCAwLCB3MiA9IHcyICsgMSB8IDAsIChyMCB8IDApID09ICh3MiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFUgPSAodyA8PCAyKSArIFUgfCAwLCBnID0gZyArIDEgfCAwLCAoZyB8IDApID09IChhIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSB8ICFyMCkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGggPSByMCAmIC0yLCB1ID0gcjAgJiAxLCBpID0gMCwgdyA9IHcgPDwgMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodzIgPSAwLCAocjAgfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGcgPSBlW24gKyAxMDc2ID4+IDJdICsgZVtVID4+IDJdIHwgMCwgZVtVID4+IDJdID0gKGwgfCAwKSA+IChnIHwgMCkgPyBsIDogKGcgfCAwKSA8IChjIHwgMCkgPyBnIDogYywgZyA9IGVbbiArIDEwNzYgPj4gMl0gKyBlW1UgKyA0ID4+IDJdIHwgMCwgZVtVICsgNCA+PiAyXSA9IChsIHwgMCkgPiAoZyB8IDApID8gbCA6IChnIHwgMCkgPCAoYyB8IDApID8gZyA6IGMsIFUgPSBVICsgOCB8IDAsIHcyID0gdzIgKyAyIHwgMCwgKGggfCAwKSAhPSAodzIgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgJiYgKGcgPSBlW24gKyAxMDc2ID4+IDJdICsgZVtVID4+IDJdIHwgMCwgZVtVID4+IDJdID0gKGwgfCAwKSA+IChnIHwgMCkgPyBsIDogKGcgfCAwKSA8IChjIHwgMCkgPyBnIDogYywgVSA9IFUgKyA0IHwgMCksIFUgPSB3ICsgVSB8IDAsIGkgPSBpICsgMSB8IDAsIChhIHwgMCkgPT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IG8gKyA3NiB8IDAsIG4gPSBuICsgMTA4MCB8IDAsIHkgPSB5ICsgNTIgfCAwLCBVID0gMSwgcyA9IHMgKyAxIHwgMCwgIShzID4+PiAwIDwgZFtDICsgMTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBVID0gMCwgUSh0LCAxLCA1Nzc0LCAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChYID0gTTAgKyAxNiB8IDAsICFVKSB7CiAgICAgICAgICAgICAgICAgIHZpKGVlKSwgZVtBICsgOCA+PiAyXSA9IGVbQSArIDggPj4gMl0gfCAzMjc2OCwgUSh0LCAxLCAyMjAzMCwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoaSA9IDAsIHIwID0gMCwgbCA9IGVbQSArIDIwOCA+PiAyXSwgbiA9IGQ0KGwsIDEpLCAhKChuIHwgMCkgPT0gLTEgfCBmID4+PiAwIDwgbiA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAxLCBmID0gZVtsICsgMjQgPj4gMl0sICFlW2YgKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoVSA9IGVbZiArIDI0ID4+IDJdLCBtMiA9IGVbZVtlW2wgKyAyMCA+PiAyXSA+PiAyXSArIDIwID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtVICsgMjQgPj4gMl0sIGcgPSBpICYgNywgbyA9IGkgPj4+IDMgfCAwLCBmID0gZVttMiArIDI4ID4+IDJdLCBpID0gZiArIFooZVtVICsgMzYgPj4gMl0sIDE1MikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbCArIDY0ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZiArIFooZVttMiArIDI0ID4+IDJdLCAxNTIpIHwgMCwgZiA9IGVbaSArIDggPj4gMl0gLSBlW2kgPj4gMl0gfCAwLCB3MiA9IGVbbiAtIDE0NCA+PiAyXSAtIChmICsgZVtuIC0gMTUyID4+IDJdIHwgMCkgfCAwLCBuID0gZVtpICsgMTIgPj4gMl0gLSBlW2kgKyA0ID4+IDJdIHwgMCwgaSA9IDM2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbaSArIDE0OCA+PiAyXSAtIGVbaSArIDE0MCA+PiAyXSB8IDAsIGYgPSBlW2kgKyAxNDQgPj4gMl0gLSBlW2kgKyAxMzYgPj4gMl0gfCAwLCB3MiA9IDAsIGkgPSA1MjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtpICsgbTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnID0gbyArICgoZyB8IDApICE9IDApIHwgMCwgKChnIHwgMCkgPT0gMyA/IDQgOiBnKSAtIDEgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZiA8PCAyLCAobiB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gbiAmIC0yLCBjID0gMDsgciA9IEYyKHIsIGksIGYpICsgZiB8IDAsIGEgPSBpICsgZiB8IDAsIGkgPSB3MiA8PCAyLCBvID0gYSArIGkgfCAwLCByID0gRjIociwgbywgZikgKyBmIHwgMCwgaSA9IGkgKyAoZiArIG8gfCAwKSB8IDAsIGMgPSBjICsgMiB8IDAsIChnIHwgMCkgIT0gKGMgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShuICYgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IEYyKHIsIGksIGYpICsgZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9ICFuIHwgIWYsIGVbVSArIDMyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IGYgJiAtOCwgZyA9IGYgJiA3LCBjID0gMCwgYSA9IGYgLSAxID4+PiAwIDwgNzsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsICFhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEZbciB8IDBdID0gZVtpID4+IDJdLCBGW3IgKyAxIHwgMF0gPSBlW2kgKyA0ID4+IDJdLCBGW3IgKyAyIHwgMF0gPSBlW2kgKyA4ID4+IDJdLCBGW3IgKyAzIHwgMF0gPSBlW2kgKyAxMiA+PiAyXSwgRltyICsgNCB8IDBdID0gZVtpICsgMTYgPj4gMl0sIEZbciArIDUgfCAwXSA9IGVbaSArIDIwID4+IDJdLCBGW3IgKyA2IHwgMF0gPSBlW2kgKyAyNCA+PiAyXSwgRltyICsgNyB8IDBdID0gZVtpICsgMjggPj4gMl0sIHIgPSByICsgOCB8IDAsIGkgPSBpICsgMzIgfCAwLCBmID0gZiArIDggfCAwLCAobyB8IDApICE9IChmIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBGW3IgfCAwXSA9IGVbaSA+PiAyXSwgciA9IHIgKyAxIHwgMCwgaSA9IGkgKyA0IHwgMCwgZiA9IGYgKyAxIHwgMCwgKGcgfCAwKSAhPSAoZiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9ICh3MiA8PCAyKSArIGkgfCAwLCBjID0gYyArIDEgfCAwLCAoYyB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBmICYgLTgsIGcgPSBmICYgNywgYyA9IDAsIGEgPSBmIC0gMSA+Pj4gMCA8IDcsIGggPSB3MiA8PCAyOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsICFhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBGW3IgfCAwXSA9IGVbaSA+PiAyXSwgRltyICsgMSB8IDBdID0gZVtpICsgNCA+PiAyXSwgRltyICsgMiB8IDBdID0gZVtpICsgOCA+PiAyXSwgRltyICsgMyB8IDBdID0gZVtpICsgMTIgPj4gMl0sIEZbciArIDQgfCAwXSA9IGVbaSArIDE2ID4+IDJdLCBGW3IgKyA1IHwgMF0gPSBlW2kgKyAyMCA+PiAyXSwgRltyICsgNiB8IDBdID0gZVtpICsgMjQgPj4gMl0sIEZbciArIDcgfCAwXSA9IGVbaSArIDI4ID4+IDJdLCByID0gciArIDggfCAwLCBpID0gaSArIDMyIHwgMCwgZiA9IGYgKyA4IHwgMCwgKG8gfCAwKSAhPSAoZiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgRltyIHwgMF0gPSBlW2kgPj4gMl0sIHIgPSByICsgMSB8IDAsIGkgPSBpICsgNCB8IDAsIGYgPSBmICsgMSB8IDAsIChnIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgKyBoIHwgMCwgYyA9IGMgKyAxIHwgMCwgKGMgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSAhbiB8ICFmLCBlW1UgKyAzMiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBmICYgLTgsIGcgPSBmICYgNywgYyA9IDAsIGEgPSBmIC0gMSA+Pj4gMCA8IDc7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHUyW3IgPj4gMV0gPSBlW2kgPj4gMl0sIHUyW3IgKyAyID4+IDFdID0gZVtpICsgNCA+PiAyXSwgdTJbciArIDQgPj4gMV0gPSBlW2kgKyA4ID4+IDJdLCB1MltyICsgNiA+PiAxXSA9IGVbaSArIDEyID4+IDJdLCB1MltyICsgOCA+PiAxXSA9IGVbaSArIDE2ID4+IDJdLCB1MltyICsgMTAgPj4gMV0gPSBlW2kgKyAyMCA+PiAyXSwgdTJbciArIDEyID4+IDFdID0gZVtpICsgMjQgPj4gMl0sIHUyW3IgKyAxNCA+PiAxXSA9IGVbaSArIDI4ID4+IDJdLCByID0gciArIDE2IHwgMCwgaSA9IGkgKyAzMiB8IDAsIGYgPSBmICsgOCB8IDAsIChvIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsIGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHUyW3IgPj4gMV0gPSBlW2kgPj4gMl0sIHIgPSByICsgMiB8IDAsIGkgPSBpICsgNCB8IDAsIGYgPSBmICsgMSB8IDAsIChnIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9ICh3MiA8PCAyKSArIGkgfCAwLCBjID0gYyArIDEgfCAwLCAoYyB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gZiAmIC04LCBnID0gZiAmIDcsIGMgPSAwLCBhID0gZiAtIDEgPj4+IDAgPCA3OyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSAwLCAhYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHUyW3IgPj4gMV0gPSBlW2kgPj4gMl0sIHUyW3IgKyAyID4+IDFdID0gZVtpICsgNCA+PiAyXSwgdTJbciArIDQgPj4gMV0gPSBlW2kgKyA4ID4+IDJdLCB1MltyICsgNiA+PiAxXSA9IGVbaSArIDEyID4+IDJdLCB1MltyICsgOCA+PiAxXSA9IGVbaSArIDE2ID4+IDJdLCB1MltyICsgMTAgPj4gMV0gPSBlW2kgKyAyMCA+PiAyXSwgdTJbciArIDEyID4+IDFdID0gZVtpICsgMjQgPj4gMl0sIHUyW3IgKyAxNCA+PiAxXSA9IGVbaSArIDI4ID4+IDJdLCByID0gciArIDE2IHwgMCwgaSA9IGkgKyAzMiB8IDAsIGYgPSBmICsgOCB8IDAsIChvIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHUyW3IgPj4gMV0gPSBlW2kgPj4gMl0sIHIgPSByICsgMiB8IDAsIGkgPSBpICsgNCB8IDAsIGYgPSBmICsgMSB8IDAsIChnIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gKHcyIDw8IDIpICsgaSB8IDAsIGMgPSBjICsgMSB8IDAsIChjIHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtMiA9IG0yICsgNzYgfCAwLCBVID0gVSArIDUyIHwgMCwgaSA9IDEsIHIwID0gcjAgKyAxIHwgMCwgIShyMCA+Pj4gMCA8IGRbZVtsICsgMjQgPj4gMl0gKyAxNiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoIWkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2VlICsgNTU5NiA+PiAyXSwgIWkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgUihpKSwgZVtlZSArIDU1OTYgPj4gMl0gPSAwLCBlW2VlICsgNTYwMCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoRltBICsgNjggfCAwXSA9IElbQSArIDY4IHwgMF0gJiAyNTQsIGVbQSArIDggPj4gMl0gPSBlW0EgKyA4ID4+IDJdICYgLTEyOSwgTWkgPSAxLCByID0gZVtrICsgMTIgPj4gMl0sIGYgPSByLCBpID0gZVtrICsgOCA+PiAyXSwgciB8IGkgPyAobiA9IGVbayArIDU2ID4+IDJdLCByID0gaSAtIG4gfCAwLCBpID0gZiAtIChlW2sgKyA2MCA+PiAyXSArIChpID4+PiAwIDwgbiA+Pj4gMCkgfCAwKSB8IDApIDogKHIgPSAwLCBpID0gMCksIHIgPSAhKGkgfCByKSwgaSA9IGVbQSArIDggPj4gMl0sIHIgJiAoaSB8IDApID09IDY0IHwgKGkgfCAwKSA9PSAyNTYpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoKGkxKGssIHdlICsgMTAgfCAwLCAyLCB0KSB8IDApICE9IDIpIHsKICAgICAgICAgICAgICAgICAgUSh0LCBlW0EgKyAxODQgPj4gMl0gPyAxIDogMiwgNDM1MiwgMCksIE1pID0gIWVbQSArIDE4NCA+PiAyXTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChoMih3ZSArIDEwIHwgMCwgd2UgKyAxMiB8IDAsIDIpLCBpID0gZVt3ZSArIDEyID4+IDJdLCAoaSB8IDApID09IDY1NDI0KQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPT0gNjU0OTcpIHsKICAgICAgICAgICAgICAgICAgZVtBICsgOCA+PiAyXSA9IDI1NiwgZVtBICsgMjA0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyID0gZVtrICsgMTIgPj4gMl0sIGYgPSByLCBpID0gZVtrICsgOCA+PiAyXSwgciB8IGkgPyAobiA9IGVbayArIDU2ID4+IDJdLCByID0gaSAtIG4gfCAwLCBpID0gZiAtIChlW2sgKyA2MCA+PiAyXSArIChpID4+PiAwIDwgbiA+Pj4gMCkgfCAwKSB8IDApIDogKHIgPSAwLCBpID0gMCksICEoaSB8IHIpKSB7CiAgICAgICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSA2NCwgUSh0LCAyLCAxODYzOCwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBNaSA9IDAsIFEodCwgMSwgMTg1NzQsIDApOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IHdlICsgMTYgfCAwLCBNaSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gekEoQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gMCwgQyA9IDAsIG0gPSAwLCB5ID0gMCwgcCA9IDAsIEggPSAwLCBKID0gVygwKSwgRSA9IDAsIEQgPSAwLCBVID0gMCwgUCA9IDAsIHggPSAwLCB6ID0gMCwgaiA9IDAsIE8gPSBXKDApLCBxID0gMCwgZjIgPSAwLCBuMiA9IDAsIGcyID0gMCwgdzIgPSAwLCBjMiA9IDAsIG0yID0gMCwgcDIgPSAwLCBZMiA9IDAsIFgyID0gMCwgRDIgPSAwLCBTMiA9IDAsIFAyID0gMCwgeDIgPSAwLCB6MiA9IDAsIEwyID0gMCwgZTAgPSAwLCBpMCA9IDAsIHIwID0gMCwgazAgPSAwLCB0MCA9IDAsIGgwID0gMDsKICAgICAgICAgICAgICBnID0gZVtBICsgMTYgPj4gMl0sIHIgPSBlW2cgKyA0ID4+IDJdLCBEID0gZVtBICsgOCA+PiAyXSwgYSA9IGVbRCArIDE2ID4+IDJdLCB1ID0gZVtnID4+IDJdLCBrID0gZVtEICsgMTIgPj4gMl0sIFAgPSBlW0EgKyAyMCA+PiAyXSwgbiA9IGVbUCA+PiAyXSwgbyA9IGVbUCArIDggPj4gMl0sIGggPSBlW0EgKyA0ID4+IDJdLCB6ID0gZVtBICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFlW2VbQSArIDM2ID4+IDJdID4+IDJdKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKGYgPSBLNihpKSwgZiB8fCAoZiA9IEUyKDEsIDE1NiksIGYgJiYgKGVbZiArIDE0MCA+PiAyXSA9IDEpLCB5NihpLCBmKSksIGkgPSBrIC0gdSB8IDAsIHUgPSBlW2cgKyAxNiA+PiAyXSwgdSAmIDEgJiYgKHQgPSBpLCBpID0gZVtQICsgMjggPj4gMl0gKyBaKGgsIDE1MikgfCAwLCBpID0gKHQgKyBlW2kgLSAxNDQgPj4gMl0gfCAwKSAtIGVbaSAtIDE1MiA+PiAyXSB8IDApLCBrID0gYSAtIHIgfCAwLCB1ICYgMiAmJiAociA9IGVbUCArIDI4ID4+IDJdICsgWihoLCAxNTIpIHwgMCwgayA9IChlW3IgLSAxNDAgPj4gMl0gKyBrIHwgMCkgLSBlW3IgLSAxNDggPj4gMl0gfCAwKSwgIXg0KGYsIGVbRCArIDIwID4+IDJdIC0gZVtEICsgMTIgPj4gMl0gfCAwLCBlW0QgKyAyNCA+PiAyXSAtIGVbRCArIDE2ID4+IDJdIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgZVtlW0EgKyAzNiA+PiAyXSA+PiAyXSA9IDAsIFIoQSk7CiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4gPSBvIC0gbiB8IDAsIG8gPSAoZVtQICsgMzYgPj4gMl0gKyAoWihuLCBrKSA8PCAyKSB8IDApICsgKGkgPDwgMikgfCAwLCBCID0gZVtmICsgMTI4ID4+IDJdLCB1ID0gQiAmIC00LCByID0gZVtmICsgMTE2ID4+IDJdLCB3ID0gZVtmICsgMTI0ID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoZVt6ICsgMjAgPj4gMl0gPT0gMSkgewogICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICghdSkgewogICAgICAgICAgICAgICAgICAgICAgICBhID0gMCwgaSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXcpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAwLCBpID0gcjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gbyArIChaKG4sIGEpIDw8IDIpIHwgMCwgeSA9IG8gKyAoWihuLCBhIHwgMykgPDwgMikgfCAwLCB2ID0gbyArIChaKG4sIGEgfCAyKSA8PCAyKSB8IDAsIEMgPSBvICsgKFoobiwgYSB8IDEpIDw8IDIpIHwgMCwgdCA9IDA7IGsgPSB0IDw8IDIsIGVbaSA+PiAyXSA9IGVbayArIGwgPj4gMl0gPDwgNiwgZVtpICsgNCA+PiAyXSA9IGVbayArIEMgPj4gMl0gPDwgNiwgZVtpICsgOCA+PiAyXSA9IGVbayArIHYgPj4gMl0gPDwgNiwgZVtpICsgMTIgPj4gMl0gPSBlW2sgKyB5ID4+IDJdIDw8IDYsIGkgPSBpICsgMTYgfCAwLCB0ID0gdCArIDEgfCAwLCAodyB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSArIDQgfCAwLCAhKHUgPj4+IDAgPiBhID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCF3IHwgYSA+Pj4gMCA+PSBCID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHkgPSBCIC0gYSAmIDMsIHUgPSAwLCB2ID0gYSAtIEIgPj4+IDAgPiA0Mjk0OTY3MjkyOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBvICsgKHUgPDwgMikgfCAwLCBrID0gYSwgbCA9IDAsIHkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2kgPj4gMl0gPSBlW3QgKyAoWihrLCBuKSA8PCAyKSA+PiAyXSA8PCA2LCBrID0gayArIDEgfCAwLCBpID0gaSArIDQgfCAwLCBsID0gbCArIDEgfCAwLCAoeSB8IDApICE9IChsIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXYpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2kgPj4gMl0gPSBlW3QgKyAoWihrLCBuKSA8PCAyKSA+PiAyXSA8PCA2LCBlW2kgKyA0ID4+IDJdID0gZVt0ICsgKFoobiwgayArIDEgfCAwKSA8PCAyKSA+PiAyXSA8PCA2LCBlW2kgKyA4ID4+IDJdID0gZVt0ICsgKFoobiwgayArIDIgfCAwKSA8PCAyKSA+PiAyXSA8PCA2LCBlW2kgKyAxMiA+PiAyXSA9IGVbdCArIChaKG4sIGsgKyAzIHwgMCkgPDwgMikgPj4gMl0gPDwgNiwgaSA9IGkgKyAxNiB8IDAsIGsgPSBrICsgNCB8IDAsIChCIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gdSArIDEgfCAwLCAodyB8IDApID09ICh1IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXUpIHsKICAgICAgICAgICAgICAgICAgICAgIGEgPSAwLCBpID0gcjsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghdykKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChPID0gR1tnICsgMzIgPj4gMl0sIGEgPSAwLCBpID0gcjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIGZvciAodiA9IG8gKyAoWihuLCBhKSA8PCAyKSB8IDAsIEMgPSBvICsgKFoobiwgYSB8IDMpIDw8IDIpIHwgMCwgbSA9IG8gKyAoWihuLCBhIHwgMikgPDwgMikgfCAwLCBIID0gbyArIChaKG4sIGEgfCAxKSA8PCAyKSB8IDAsIHQgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBrID0gdCA8PCAyLCBKID0gcTEoVyhXKEdbayArIHYgPj4gMl0gLyBPKSAqIFcoNjQpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMihKKSkgPCBXKDIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gfn5KOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbaSA+PiAyXSA9IHksIEogPSBxMShXKFcoR1trICsgSCA+PiAyXSAvIE8pICogVyg2NCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXKFIyKEopKSA8IFcoMjE0NzQ4MzY0OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB+fko7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZVtpICsgNCA+PiAyXSA9IHksIEogPSBxMShXKFcoR1trICsgbSA+PiAyXSAvIE8pICogVyg2NCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXKFIyKEopKSA8IFcoMjE0NzQ4MzY0OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB+fko7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZVtpICsgOCA+PiAyXSA9IHksIEogPSBxMShXKFcoR1trICsgQyA+PiAyXSAvIE8pICogVyg2NCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXKFIyKEopKSA8IFcoMjE0NzQ4MzY0OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB+fko7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDEyID4+IDJdID0gaywgaSA9IGkgKyAxNiB8IDAsIHQgPSB0ICsgMSB8IDAsICh3IHwgMCkgPT0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSArIDQgfCAwLCAhKHUgPj4+IDAgPiBhID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICghdyB8IGEgPj4+IDAgPj0gQiA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBmb3IgKHYgPSBCIC0gYSAmIDEsIE8gPSBHW2cgKyAzMiA+PiAyXSwgdSA9IGEgKyAxIHwgMCwgQyA9ICh1IHwgMCkgPT0gKEIgfCAwKSwgbSA9IFoobiwgYSkgPDwgMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IG8gKyAobCA8PCAyKSB8IDAsIHYpIHsKICAgICAgICAgICAgICAgICAgICAgIEogPSBxMShXKFcoR1t0ICsgbSA+PiAyXSAvIE8pICogVyg2NCkpKTsKICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIoSikpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB+fko7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBrID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlW2kgPj4gMl0gPSBrLCBpID0gaSArIDQgfCAwLCBrID0gdTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgIGsgPSBhOwogICAgICAgICAgICAgICAgICAgIGlmICghQykKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBKID0gcTEoVyhXKEdbdCArIChaKGssIG4pIDw8IDIpID4+IDJdIC8gTykgKiBXKDY0KSkpOwogICAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIoSikpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IH5+SjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW2kgPj4gMl0gPSB5LCBKID0gcTEoVyhXKEdbdCArIChaKG4sIGsgKyAxIHwgMCkgPDwgMikgPj4gMl0gLyBPKSAqIFcoNjQpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMihKKSkgPCBXKDIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gfn5KOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyA0ID4+IDJdID0geSwgaSA9IGkgKyA4IHwgMCwgayA9IGsgKyAyIHwgMCwgKEIgfCAwKSA9PSAoayB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCArIDEgfCAwLCAodyB8IDApID09IChsIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdyA9IGVbQSArIDMyID4+IDJdLCBvID0gZVtBICsgMjggPj4gMl0sIGEgPSBlW3ogKyAxNiA+PiAyXSwgeiA9IGVbeiArIDIwID4+IDJdLCBsID0gZVtBID4+IDJdLCBPID0gR1tnICsgMzIgPj4gMl0sIGkgPSBlW1AgKyAyMCA+PiAyXSwgcSA9IGVbZyArIDE2ID4+IDJdLCBlW2YgKyAxMDggPj4gMl0gPSAocSA8PCA5KSArIDM3NDcyOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW2YgKyAxMjggPj4gMl0sICFrIHx8ICh0ID0gZVtmICsgMTI0ID4+IDJdLCAhdCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcyID0gaSArIChoIF4gLTEpIHwgMCwgRDIgPSArTywgaSA9IDAsIEIgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDAsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW3IgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodSB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB1ID4+PiAwIDw9IDIxNDc0ODM2NDkgPyAtMjE0NzQ4MzY0NyA6IHUsIGVbciA+PiAyXSA9IC0yMTQ3NDgzNjQ4IC0gdSwgdSA9IDAgLSB1IHwgMCwgaSA9IGkgPj4+IDAgPiB1ID4+PiAwID8gaSA6IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSA+Pj4gMCA+IHUgPj4+IDAgPyBpIDogdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciArIDQgfCAwLCBuID0gbiArIDEgfCAwLCAobiB8IDApID09ICh0IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gZVtmICsgMTI4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiArIDEgfCAwLCBCID4+PiAwIDwgayA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlW2YgKyAxMjQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgQToKICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGkgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAtNSwgZVtEICsgMjggPj4gMl0gPSAtNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgciA9IGssIGsgPSByICsgMSB8IDAsIHUgPSBpID4+PiAwID4gMywgaSA9IGkgPj4+IDEgfCAwLCAhIXU7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gciAtIDQgfCAwLCBlW0QgKyAyOCA+PiAyXSA9IGksICFpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3IoZiksIGVbZiArIDEwMCA+PiAyXSA9IDM3NDQwLCBlW2YgKyA5NiA+PiAyXSA9IDM2MDY0LCBlW2YgKyAyOCA+PiAyXSA9IDM2MDk2LCByID0gZVtEID4+IDJdLCBlW2YgPj4gMl0gPSAwLCBlW2YgKyA0ID4+IDJdID0gMzI3NjgsIGVbZiArIDIwID4+IDJdID0gciwgZVtmICsgOCA+PiAyXSA9IDEyLCBlW2YgKyAxMiA+PiAyXSA9IDAsIG0gPSBmICsgMjggfCAwLCBlW2YgKyAxMDQgPj4gMl0gPSBtLCBlW2YgKyAxNiA+PiAyXSA9IHIgLSAxLCBDID0gaSAtIDEgfCAwLCAoQyB8IDApIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoeDIgPSAobyB8IDApICE9IDAgJiBsID4+PiAwIDwgdyA+Pj4gMCwgejIgPSBhICYgMiwgYzIgPSBhICYgMTYsIEwyID0gYSAmIDQsIGUwID0gYSAmIDMyLCBtMiA9IGEgJiA4LCBQID0gZiArIDEwMCB8IDAsIHkgPSBmICsgOTYgfCAwLCBTMiA9IGEgJiAxLCBpMCA9IG8gKyAobCA8PCAzKSB8IDAsIHIwID0gRDIgLyArKChxID8gKHEgfCAwKSA9PSAzID8gNCA6IDIgOiAxKSA+Pj4gMCksIGswID0gKHogfCAwKSAhPSAxLCBmMiA9IDI7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEggPSBmMiA+Pj4gMCA8IDIgJiAoZVtEICsgMjggPj4gMl0gLSA0IHwgMCkgPiAoQyB8IDApICYgUzIsIHogPSBlW0QgKyA4ID4+IDJdICsgWihuMiwgMjQpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbjIgfCAhKEZbeiAtIDQgfCAwXSAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgOCA+PiAyXSA9IC01NTkwMzg3MzcsIGVbZiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyA4ID4+IDJdID0gMTIsIGVbZiA+PiAyXSA9IDAsIGVbZiArIDQgPj4gMl0gPSAzMjc2OCwgaSA9IGVbZiArIDE2ID4+IDJdIC0gMSB8IDAsIGVbZiArIDE2ID4+IDJdID0gaSwgSVtpIHwgMF0gPT0gMjU1ICYmIChlW2YgKyA4ID4+IDJdID0gMTMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEUgPSA2NCA8PCBDLCB0ID0gZVtmICsgMTI4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZjIgLSAxIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW2YgKyAxMjAgPj4gMl0sIGEgPSBlW2YgKyAxMjQgPj4gMl0sIG4gPSAodSArIChhIDw8IDIpIHwgMCkgKyAxMiB8IDAsIEIgPSBlW2YgKyAxMTYgPj4gMl0sIGsgPSBlW2YgKyA4ID4+IDJdLCByID0gZVtmICsgNCA+PiAyXSwgaSA9IGVbZiA+PiAyXSwgbyA9IGVbZiArIDEwNCA+PiAyXSwgdiA9IDAsIHQgPj4+IDAgPCA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh3ID0gQyA/IDQwMDMyIDogNDAyODgsIGcgPSBFICYgMjE0NzQ4MzU4NCwgYSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSAwLCBwID0gZVtmICsgMTI0ID4+IDJdLCBwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVbbiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiAyMDk3MTY4IHx8IChsID0gdCAmIDQ5NSwgIWwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGcgJiBlW0IgPj4gMl0sIGggPSAocyB8IDApICE9IDAsIG8gPSAoSVtsICsgZVtmICsgMTA4ID4+IDJdIHwgMF0gPDwgMikgKyBtIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChrIHwgMCkgPT0gLTU1OTAzODczNyA/IDcgOiBrIC0gMSB8IDAsIGkgPSAoaCA8PCBrKSArIGkgfCAwLCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGW2VbZiArIDE2ID4+IDJdXSA9IGksIGkgPSBlW2YgKyAxNiA+PiAyXSwgayA9IElbaSB8IDBdLCBlW2YgKyAxNiA+PiAyXSA9IGkgKyAxLCBrID0gKGsgfCAwKSA9PSAyNTUgPyA3IDogOCwgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbbyA+PiAyXSwgbCA9IGVbdCA+PiAyXSwgciA9IHIgLSBsIHwgMCwgKGggfCAwKSA9PSBlW3QgKyA0ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEociAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyA4ID4+IDJdLCB0ID0gciA+Pj4gMCA+IGwgPj4+IDAgPyByIDogbCwgaSA9IChyID4+PiAwID49IGwgPj4+IDAgPyBsIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgbCA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFsOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgbCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbbyA+PiAyXSA9IGVbdCArIDEyID4+IDJdLCB0ID0gciwgciA9IHIgPj4+IDAgPCBsID4+PiAwLCB0ID0gciA/IHQgOiBsLCBpID0gKHIgPyBsIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgbCA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFsOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVbbiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuIC0gNCB8IDAsIFUgPSBlW24gKyA0ID4+IDJdID4+PiAxNyAmIDQgfCAoZVtzID4+IDJdID4+PiAxOSAmIDEgfCAodCA+Pj4gMTQgJiAxNiB8ICh0ID4+PiAxNiAmIDY0IHwgdCAmIDE3MCkpKSwgbyA9IChJW1UgKyAzOTUyMCB8IDBdIDw8IDIpICsgbSB8IDAsIGMgPSBlW0IgPj4gMl0sIGggPSBjID4+PiAzMSB8IDAsIHggPSB1Mlt3ICsgKCgoYyAmIDIxNDc0ODM2NDcpID4+PiBDICYgMTI3KSA8PCAxKSA+PiAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChrIHwgMCkgPT0gLTU1OTAzODczNyA/IDcgOiBrIC0gMSB8IDAsIGkgPSAoaCA8PCBrKSArIGkgfCAwLCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltlW2YgKyAxNiA+PiAyXV0gPSBpLCBpID0gZVtmICsgMTYgPj4gMl0sIGsgPSBJW2kgfCAwXSwgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgayA9IChrIHwgMCkgPT0gMjU1ID8gNyA6IDgsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW28gPj4gMl0sIGwgPSBlW3QgPj4gMl0sIHIgPSByIC0gbCB8IDAsIGVbdCArIDQgPj4gMl0gPT0gKGggXiBJW1UgKyAzOTc3NiB8IDBdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEociAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbbyA+PiAyXSA9IGVbdCArIDggPj4gMl0sIHQgPSByID4+PiAwID4gbCA+Pj4gMCA/IHIgOiBsLCBpID0gKHIgPj4+IDAgPj0gbCA+Pj4gMCA/IGwgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBsID0gdCAmIDE2Mzg0LCByID0gdCA8PCAxLCB0ID0gciwgIWw7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIGwgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyAxMiA+PiAyXSwgdCA9IHIsIHIgPSByID4+PiAwIDwgbCA+Pj4gMCwgdCA9IHIgPyB0IDogbCwgaSA9IChyID8gbCA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIGwgPSB0ICYgMTYzODQsIHIgPSB0IDw8IDEsIHQgPSByLCAhbDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID0gdiArIHggfCAwLCBsID0gZVtmICsgMTI0ID4+IDJdLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAzMiwgZVtuICsgNCA+PiAyXSA9IGVbbiArIDQgPj4gMl0gfCA4LCB0ID0gZVtuID4+IDJdIHwgaCA8PCAxOSB8IDE2LCBlW24gPj4gMl0gPSB0LCBtMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gKC0yIC0gbCA8PCAyKSArIG4gfCAwLCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSB8IDMyNzY4LCBlW2wgPj4gMl0gPSBlW2wgPj4gMl0gfCBjICYgLTIxNDc0ODM2NDggfCA2NTUzNiwgbCA9IGwgLSA0IHwgMCwgZVtsID4+IDJdID0gZVtsID4+IDJdIHwgMTMxMDcyLCB0ID0gZVtuID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHQgfCAyMDk3MTUyLCBlW24gPj4gMl0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghKHQgJiAzOTYwKSB8IHQgJiAxNjc3NzM0NCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBnICYgZVtCICsgNCA+PiAyXSwgaCA9IChzIHwgMCkgIT0gMCwgbyA9IChJW2VbZiArIDEwOCA+PiAyXSArICh0ID4+PiAzICYgNDk1KSB8IDBdIDw8IDIpICsgbSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAoayB8IDApID09IC01NTkwMzg3MzcgPyA3IDogayAtIDEgfCAwLCBpID0gKGggPDwgaykgKyBpIHwgMCwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltlW2YgKyAxNiA+PiAyXV0gPSBpLCBpID0gZVtmICsgMTYgPj4gMl0sIGsgPSBJW2kgfCAwXSwgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgayA9IChrIHwgMCkgPT0gMjU1ID8gNyA6IDgsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW28gPj4gMl0sIGwgPSBlW3QgPj4gMl0sIHIgPSByIC0gbCB8IDAsIChoIHwgMCkgPT0gZVt0ICsgNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtvID4+IDJdID0gZVt0ICsgOCA+PiAyXSwgdCA9IHIgPj4+IDAgPiBsID4+PiAwID8gciA6IGwsIGkgPSAociA+Pj4gMCA+PSBsID4+PiAwID8gbCA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIGwgPSB0ICYgMTYzODQsIHIgPSB0IDw8IDEsIHQgPSByLCAhbDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIGwgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyAxMiA+PiAyXSwgdCA9IHIsIHIgPSByID4+PiAwIDwgbCA+Pj4gMCwgdCA9IHIgPyB0IDogbCwgaSA9IChyID8gbCA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIGwgPSB0ICYgMTYzODQsIHIgPSB0IDw8IDEsIHQgPSByLCAhbDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtuID4+IDJdLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuIC0gNCB8IDAsIGMgPSBlW24gKyA0ID4+IDJdID4+PiAyMCAmIDQgfCAoZVtzID4+IDJdID4+PiAyMiAmIDEgfCAobCA+Pj4gMTUgJiAxNiB8IChsID4+PiAxOSAmIDY0IHwgbCA+Pj4gMyAmIDE3MCkpKSwgbyA9IChJW2MgKyAzOTUyMCB8IDBdIDw8IDIpICsgbSB8IDAsIGwgPSBlW0IgKyA0ID4+IDJdLCBoID0gbCA+Pj4gMzEgfCAwLCBVID0gdTJbdyArICgoKGwgJiAyMTQ3NDgzNjQ3KSA+Pj4gQyAmIDEyNykgPDwgMSkgPj4gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAoayB8IDApID09IC01NTkwMzg3MzcgPyA3IDogayAtIDEgfCAwLCBpID0gKGggPDwgaykgKyBpIHwgMCwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbZVtmICsgMTYgPj4gMl1dID0gaSwgaSA9IGVbZiArIDE2ID4+IDJdLCBrID0gSVtpIHwgMF0sIGVbZiArIDE2ID4+IDJdID0gaSArIDEsIGsgPSAoayB8IDApID09IDI1NSA/IDcgOiA4LCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtvID4+IDJdLCBsID0gZVt0ID4+IDJdLCByID0gciAtIGwgfCAwLCBlW3QgKyA0ID4+IDJdID09IChoIF4gSVtjICsgMzk3NzYgfCAwXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyA4ID4+IDJdLCB0ID0gciA+Pj4gMCA+IGwgPj4+IDAgPyByIDogbCwgaSA9IChyID4+PiAwID49IGwgPj4+IDAgPyBsIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgbCA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFsOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyBsIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtvID4+IDJdID0gZVt0ICsgMTIgPj4gMl0sIHQgPSByLCByID0gciA+Pj4gMCA8IGwgPj4+IDAsIHQgPSByID8gdCA6IGwsIGkgPSAociA/IGwgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBsID0gdCAmIDE2Mzg0LCByID0gdCA8PCAxLCB0ID0gciwgIWw7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gdiArIFUgfCAwLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAyNTYsIGVbbiArIDQgPj4gMl0gPSBlW24gKyA0ID4+IDJdIHwgNjQsIGwgPSBlW24gPj4gMl0gfCBoIDw8IDIyIHwgMTI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGwgfCAxNjc3NzIxNiwgZVtuID4+IDJdID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoISh0ICYgMzE2ODApIHwgdCAmIDEzNDIxODc1MikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBnICYgZVtCICsgOCA+PiAyXSwgaCA9IChzIHwgMCkgIT0gMCwgbyA9IChJW2VbZiArIDEwOCA+PiAyXSArICh0ID4+PiA2ICYgNDk1KSB8IDBdIDw8IDIpICsgbSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAoayB8IDApID09IC01NTkwMzg3MzcgPyA3IDogayAtIDEgfCAwLCBpID0gKGggPDwgaykgKyBpIHwgMCwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltlW2YgKyAxNiA+PiAyXV0gPSBpLCBpID0gZVtmICsgMTYgPj4gMl0sIGsgPSBJW2kgfCAwXSwgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgayA9IChrIHwgMCkgPT0gMjU1ID8gNyA6IDgsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW28gPj4gMl0sIGwgPSBlW3QgPj4gMl0sIHIgPSByIC0gbCB8IDAsIChoIHwgMCkgPT0gZVt0ICsgNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtvID4+IDJdID0gZVt0ICsgOCA+PiAyXSwgdCA9IHIgPj4+IDAgPiBsID4+PiAwID8gciA6IGwsIGkgPSAociA+Pj4gMCA+PSBsID4+PiAwID8gbCA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIGwgPSB0ICYgMTYzODQsIHIgPSB0IDw8IDEsIHQgPSByLCAhbDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIGwgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyAxMiA+PiAyXSwgdCA9IHIsIHIgPSByID4+PiAwIDwgbCA+Pj4gMCwgdCA9IHIgPyB0IDogbCwgaSA9IChyID8gbCA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIGwgPSB0ICYgMTYzODQsIHIgPSB0IDw8IDEsIHQgPSByLCAhbDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtuID4+IDJdLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuIC0gNCB8IDAsIGMgPSBlW24gKyA0ID4+IDJdID4+PiAyMyAmIDQgfCAoZVtzID4+IDJdID4+PiAyNSAmIDEgfCAobCA+Pj4gMTggJiAxNiB8IChsID4+PiAyMiAmIDY0IHwgbCA+Pj4gNiAmIDE3MCkpKSwgbyA9IChJW2MgKyAzOTUyMCB8IDBdIDw8IDIpICsgbSB8IDAsIGwgPSBlW0IgKyA4ID4+IDJdLCBoID0gbCA+Pj4gMzEgfCAwLCBVID0gdTJbdyArICgoKGwgJiAyMTQ3NDgzNjQ3KSA+Pj4gQyAmIDEyNykgPDwgMSkgPj4gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAoayB8IDApID09IC01NTkwMzg3MzcgPyA3IDogayAtIDEgfCAwLCBpID0gKGggPDwgaykgKyBpIHwgMCwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbZVtmICsgMTYgPj4gMl1dID0gaSwgaSA9IGVbZiArIDE2ID4+IDJdLCBrID0gSVtpIHwgMF0sIGVbZiArIDE2ID4+IDJdID0gaSArIDEsIGsgPSAoayB8IDApID09IDI1NSA/IDcgOiA4LCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtvID4+IDJdLCBsID0gZVt0ID4+IDJdLCByID0gciAtIGwgfCAwLCBlW3QgKyA0ID4+IDJdID09IChoIF4gSVtjICsgMzk3NzYgfCAwXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyA4ID4+IDJdLCB0ID0gciA+Pj4gMCA+IGwgPj4+IDAgPyByIDogbCwgaSA9IChyID4+PiAwID49IGwgPj4+IDAgPyBsIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgbCA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFsOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyBsIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtvID4+IDJdID0gZVt0ICsgMTIgPj4gMl0sIHQgPSByLCByID0gciA+Pj4gMCA8IGwgPj4+IDAsIHQgPSByID8gdCA6IGwsIGkgPSAociA/IGwgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBsID0gdCAmIDE2Mzg0LCByID0gdCA8PCAxLCB0ID0gciwgIWw7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gdiArIFUgfCAwLCBlW3MgPj4gMl0gPSBlW3MgPj4gMl0gfCAyMDQ4LCBlW24gKyA0ID4+IDJdID0gZVtuICsgNCA+PiAyXSB8IDUxMiwgbCA9IGVbbiA+PiAyXSB8IGggPDwgMjUgfCAxMDI0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGwgfCAxMzQyMTc3MjgsIGVbbiA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHQgJiAyNTM0NDApIHwgdCAmIDEwNzM3NTAwMTYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBnICYgZVtCICsgMTIgPj4gMl0sIGggPSAocyB8IDApICE9IDAsIG8gPSAoSVtlW2YgKyAxMDggPj4gMl0gKyAodCA+Pj4gOSAmIDQ5NSkgfCAwXSA8PCAyKSArIG0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gKGsgfCAwKSA9PSAtNTU5MDM4NzM3ID8gNyA6IGsgLSAxIHwgMCwgaSA9IChoIDw8IGspICsgaSB8IDAsIGspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltlW2YgKyAxNiA+PiAyXV0gPSBpLCBpID0gZVtmICsgMTYgPj4gMl0sIGsgPSBJW2kgfCAwXSwgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgayA9IChrIHwgMCkgPT0gMjU1ID8gNyA6IDgsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW28gPj4gMl0sIGwgPSBlW3QgPj4gMl0sIHIgPSByIC0gbCB8IDAsIChoIHwgMCkgPT0gZVt0ICsgNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShyICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyA4ID4+IDJdLCB0ID0gciA+Pj4gMCA+IGwgPj4+IDAgPyByIDogbCwgaSA9IChyID4+PiAwID49IGwgPj4+IDAgPyBsIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgbCA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFsOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIGwgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyAxMiA+PiAyXSwgdCA9IHIsIHIgPSByID4+PiAwIDwgbCA+Pj4gMCwgdCA9IHIgPyB0IDogbCwgaSA9IChyID8gbCA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIGwgPSB0ICYgMTYzODQsIHIgPSB0IDw8IDEsIHQgPSByLCAhbDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtuID4+IDJdLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbiAtIDQgfCAwLCBjID0gZVtuICsgNCA+PiAyXSA+Pj4gMjYgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gMjggJiAxIHwgKGwgPj4+IDIxICYgMTYgfCAobCA+Pj4gMjUgJiA2NCB8IGwgPj4+IDkgJiAxNzApKSksIG8gPSAoSVtjICsgMzk1MjAgfCAwXSA8PCAyKSArIG0gfCAwLCBsID0gZVtCICsgMTIgPj4gMl0sIGggPSBsID4+PiAzMSB8IDAsIFUgPSB1Mlt3ICsgKCgobCAmIDIxNDc0ODM2NDcpID4+PiBDICYgMTI3KSA8PCAxKSA+PiAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChrIHwgMCkgPT0gLTU1OTAzODczNyA/IDcgOiBrIC0gMSB8IDAsIGkgPSAoaCA8PCBrKSArIGkgfCAwLCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGW2VbZiArIDE2ID4+IDJdXSA9IGksIGkgPSBlW2YgKyAxNiA+PiAyXSwgayA9IElbaSB8IDBdLCBlW2YgKyAxNiA+PiAyXSA9IGkgKyAxLCBrID0gKGsgfCAwKSA9PSAyNTUgPyA3IDogOCwgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbbyA+PiAyXSwgbCA9IGVbdCA+PiAyXSwgciA9IHIgLSBsIHwgMCwgZVt0ICsgNCA+PiAyXSA9PSAoaCBeIElbYyArIDM5Nzc2IHwgMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEociAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyA4ID4+IDJdLCB0ID0gciA+Pj4gMCA+IGwgPj4+IDAgPyByIDogbCwgaSA9IChyID4+PiAwID49IGwgPj4+IDAgPyBsIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgbCA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFsOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgbCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbbyA+PiAyXSA9IGVbdCArIDEyID4+IDJdLCB0ID0gciwgciA9IHIgPj4+IDAgPCBsID4+PiAwLCB0ID0gciA/IHQgOiBsLCBpID0gKHIgPyBsIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgbCA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFsOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHYgKyBVIHwgMCwgbCA9IGVbZiArIDEyNCA+PiAyXSwgZVtzID4+IDJdID0gZVtzID4+IDJdIHwgMTYzODQsIGVbbiArIDQgPj4gMl0gPSBlW24gKyA0ID4+IDJdIHwgNDA5NiwgZVtuID4+IDJdID0gZVtuID4+IDJdIHwgaCA8PCAyOCB8IDgxOTIsIGwgPSAobCA8PCAyKSArIG4gfCAwLCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSB8IDQsIGVbbCArIDEyID4+IDJdID0gZVtsICsgMTIgPj4gMl0gfCAxLCBlW2wgKyA4ID4+IDJdID0gZVtsICsgOCA+PiAyXSB8IGggPDwgMTggfCAyLCBsID0gZVtuID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW24gPj4gMl0gPSBsIHwgMTA3Mzc0MTgyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9IEIgKyAxNiB8IDAsIG4gPSBuICsgNCB8IDAsIHUgPSB1ICsgMSB8IDAsIChwIHwgMCkgPT0gKHUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlW2YgKyAxMjggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbiArIDggfCAwLCBhID0gYSArIDQgfCAwLCAhKGEgPj4+IDAgPCAodCAmIC00KSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbZiArIDEyNCA+PiAyXSwgQiA9IChlW2YgKyAxMjAgPj4gMl0gKyAobyA8PCAyKSB8IDApICsgMTIgfCAwLCBsID0gZVtmICsgMTE2ID4+IDJdLCBrID0gZVtmICsgOCA+PiAyXSwgciA9IGVbZiArIDQgPj4gMl0sIGkgPSBlW2YgPj4gMl0sIHcgPSBlW2YgKyAxMDQgPj4gMl0sIHYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPCA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gQyA/IDQwNTQ0IDogNDA4MDAsIGMgPSBFICYgMjE0NzQ4MzU4NCwgdSA9IDEsIGggPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSAwLCBuID0gMCwgdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbQiA+PiAyXSwgISghKGEgJiA5MzYwKSB8IChhICYgMTIyNjgzMzkyMCkgPT0gMTIyNjgzMzkyMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSAmIDIwOTcxNjgpICE9IDE2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gKChhICYgMTA0ODU3NiA/IDE2IDogYSAmIDQ5NSA/IDE1IDogMTQpIDw8IDIpICsgbSB8IDAsIHUgPSBlW2wgPj4gMl0sIG8gPSAodSAmIGMpICE9IDAsIHAgPSB1MltzICsgKCgodSAmIDIxNDc0ODM2NDcpID4+PiBDICYgMTI3KSA8PCAxKSA+PiAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChrIHwgMCkgPT0gLTU1OTAzODczNyA/IDcgOiBrIC0gMSB8IDAsIGkgPSAobyA8PCBrKSArIGkgfCAwLCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltlW2YgKyAxNiA+PiAyXV0gPSBpLCBpID0gZVtmICsgMTYgPj4gMl0sIHUgPSBJW2kgfCAwXSwgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgayA9ICh1IHwgMCkgPT0gMjU1ID8gNyA6IDgsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW3cgPj4gMl0sIHUgPSBlW24gPj4gMl0sIHIgPSByIC0gdSB8IDAsIChvIHwgMCkgPT0gZVtuICsgNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEociAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbdyA+PiAyXSA9IGVbbiArIDggPj4gMl0sIHQgPSByID4+PiAwID4gdSA+Pj4gMCA/IHIgOiB1LCBpID0gKHIgPj4+IDAgPj0gdSA+Pj4gMCA/IHUgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCB1ID0gdCAmIDE2Mzg0LCByID0gdCA8PCAxLCB0ID0gciwgIXU7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIHUgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW3cgPj4gMl0gPSBlW24gKyAxMiA+PiAyXSwgdCA9IHIsIHIgPSByID4+PiAwIDwgdSA+Pj4gMCwgdCA9IHIgPyB0IDogdSwgaSA9IChyID8gdSA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIHUgPSB0ICYgMTYzODQsIHIgPSB0IDw8IDEsIHQgPSByLCAhdTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB2ICsgcCB8IDAsIHUgPSBhIHwgMTA0ODU3NjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSAmIDE2Nzc3MzQ0KSA9PSAxMjgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9ICgoYSAmIDgzODg2MDggPyAxNiA6IGEgJiAzOTYwID8gMTUgOiAxNCkgPDwgMikgKyBtIHwgMCwgbiA9IGVbbCArIDQgPj4gMl0sIHQgPSAobiAmIGMpICE9IDAsIHAgPSB1MltzICsgKCgobiAmIDIxNDc0ODM2NDcpID4+PiBDICYgMTI3KSA8PCAxKSA+PiAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChrIHwgMCkgPT0gLTU1OTAzODczNyA/IDcgOiBrIC0gMSB8IDAsIGkgPSAodCA8PCBrKSArIGkgfCAwLCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltlW2YgKyAxNiA+PiAyXV0gPSBpLCBpID0gZVtmICsgMTYgPj4gMl0sIGsgPSBJW2kgfCAwXSwgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgayA9IChrIHwgMCkgPT0gMjU1ID8gNyA6IDgsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBlW3cgPj4gMl0sIG4gPSBlW28gPj4gMl0sIHIgPSByIC0gbiB8IDAsICh0IHwgMCkgPT0gZVtvICsgNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEociAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbdyA+PiAyXSA9IGVbbyArIDggPj4gMl0sIHQgPSByID4+PiAwID4gbiA+Pj4gMCA/IHIgOiBuLCBpID0gKHIgPj4+IDAgPj0gbiA+Pj4gMCA/IG4gOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBuID0gdCAmIDE2Mzg0LCByID0gdCA8PCAxLCB0ID0gciwgIW47ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW3cgPj4gMl0gPSBlW28gKyAxMiA+PiAyXSwgdCA9IHIsIHIgPSByID4+PiAwIDwgbiA+Pj4gMCwgdCA9IHIgPyB0IDogbiwgaSA9IChyID8gbiA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIG4gPSB0ICYgMTYzODQsIHIgPSB0IDw8IDEsIHQgPSByLCAhbjsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB2ICsgcCB8IDAsIHUgPSB1IHwgODM4ODYwODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSAmIDEzNDIxODc1MikgPT0gMTAyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gKChhICYgNjcxMDg4NjQgPyAxNiA6IGEgJiAzMTY4MCA/IDE1IDogMTQpIDw8IDIpICsgbSB8IDAsIG4gPSBlW2wgKyA4ID4+IDJdLCB0ID0gKG4gJiBjKSAhPSAwLCBwID0gdTJbcyArICgoKG4gJiAyMTQ3NDgzNjQ3KSA+Pj4gQyAmIDEyNykgPDwgMSkgPj4gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAoayB8IDApID09IC01NTkwMzg3MzcgPyA3IDogayAtIDEgfCAwLCBpID0gKHQgPDwgaykgKyBpIHwgMCwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbZVtmICsgMTYgPj4gMl1dID0gaSwgaSA9IGVbZiArIDE2ID4+IDJdLCBrID0gSVtpIHwgMF0sIGVbZiArIDE2ID4+IDJdID0gaSArIDEsIGsgPSAoayB8IDApID09IDI1NSA/IDcgOiA4LCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gZVt3ID4+IDJdLCBuID0gZVtvID4+IDJdLCByID0gciAtIG4gfCAwLCAodCB8IDApID09IGVbbyArIDQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW3cgPj4gMl0gPSBlW28gKyA4ID4+IDJdLCB0ID0gciA+Pj4gMCA+IG4gPj4+IDAgPyByIDogbiwgaSA9IChyID4+PiAwID49IG4gPj4+IDAgPyBuIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgbiA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFuOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyBuIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVt3ID4+IDJdID0gZVtvICsgMTIgPj4gMl0sIHQgPSByLCByID0gciA+Pj4gMCA8IG4gPj4+IDAsIHQgPSByID8gdCA6IG4sIGkgPSAociA/IG4gOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBuID0gdCAmIDE2Mzg0LCByID0gdCA8PCAxLCB0ID0gciwgIW47ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gdiArIHAgfCAwLCB1ID0gdSB8IDY3MTA4ODY0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhICYgMTA3Mzc1MDAxNikgPT0gODE5MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gKChhICYgNTM2ODcwOTEyID8gMTYgOiBhICYgMjUzNDQwID8gMTUgOiAxNCkgPDwgMikgKyBtIHwgMCwgYSA9IGVbbCArIDEyID4+IDJdLCBvID0gKGEgJiBjKSAhPSAwLCB0ID0gdTJbcyArICgoKGEgJiAyMTQ3NDgzNjQ3KSA+Pj4gQyAmIDEyNykgPDwgMSkgPj4gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAoayB8IDApID09IC01NTkwMzg3MzcgPyA3IDogayAtIDEgfCAwLCBpID0gKG8gPDwgaykgKyBpIHwgMCwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbZVtmICsgMTYgPj4gMl1dID0gaSwgaSA9IGVbZiArIDE2ID4+IDJdLCBhID0gSVtpIHwgMF0sIGVbZiArIDE2ID4+IDJdID0gaSArIDEsIGsgPSAoYSB8IDApID09IDI1NSA/IDcgOiA4LCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gZVt3ID4+IDJdLCBhID0gZVtuID4+IDJdLCByID0gciAtIGEgfCAwLCAobyB8IDApID09IGVbbiArIDQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW3cgPj4gMl0gPSBlW24gKyA4ID4+IDJdLCBuID0gciA+Pj4gMCA+IGEgPj4+IDAgPyByIDogYSwgaSA9IChyID4+PiAwID49IGEgPj4+IDAgPyBhIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgYSA9IG4gJiAxNjM4NCwgciA9IG4gPDwgMSwgbiA9IHIsICFhOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVt3ID4+IDJdID0gZVtuICsgMTIgPj4gMl0sIG4gPSByLCByID0gciA+Pj4gMCA8IGEgPj4+IDAsIG4gPSByID8gbiA6IGEsIGkgPSAociA/IGEgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBhID0gbiAmIDE2Mzg0LCByID0gbiA8PCAxLCBuID0gciwgIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gdCArIHYgfCAwLCB1ID0gdSB8IDUzNjg3MDkxMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQiA+PiAyXSA9IHUsIG8gPSBlW2YgKyAxMjQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCArIDE2IHwgMCwgQiA9IEIgKyA0IHwgMCwgZyA9IGcgKyAxIHwgMCwgIShvID4+PiAwID4gZyA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZVtmICsgMTI4ID4+IDJdLCBuID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiArIDggfCAwLCB1ID0gbiwgaCA9IGggKyA0IHwgMCwgIShoID4+PiAwIDwgKHQgJiAtNCkgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvIHwgdCA+Pj4gMCA8PSBoID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIGggfCAwLCBzID0gQyA/IDQwNTQ0IDogNDA4MDAsIEUgPSBFICYgMjE0NzQ4MzU4NCwgZyA9IDAsIEgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gdCA8PCAyLCBoID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbQiA+PiAyXSwgbiAmIDkzNjApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDAsIGcgPSBsOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IFoobywgMyksICgyMDk3MTY4IDw8IHUgJiBuKSA9PSAxNiA8PCB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHIsIHIgPSBuID4+PiB1IHwgMCwgdyA9ICgociAmIDEwNDg1NzYgPyAxNiA6IHIgJiA0OTUgPyAxNSA6IDE0KSA8PCAyKSArIG0gfCAwLCBuID0gZVt3ID4+IDJdLCBhID0gZVtuID4+IDJdLCByID0gcCAtIGEgfCAwLCBwID0gZVtnID4+IDJdLCBVID0gdTJbcyArICgoKHAgJiAyMTQ3NDgzNjQ3KSA+Pj4gQyAmIDEyNykgPDwgMSkgPj4gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbiArIDQgPj4gMl0gIT0gKChFICYgcCkgIT0gMCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVt3ID4+IDJdID0gZVtuICsgMTIgPj4gMl0sIG4gPSByLCByID0gciA+Pj4gMCA8IGEgPj4+IDAsIG4gPSByID8gbiA6IGEsIGkgPSAociA/IGEgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBhID0gbiAmIDE2Mzg0LCByID0gbiA8PCAxLCBuID0gciwgIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociAmIDMyNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbdyA+PiAyXSA9IGVbbiArIDggPj4gMl0sIG4gPSByID4+PiAwID4gYSA+Pj4gMCA/IHIgOiBhLCBpID0gKHIgPj4+IDAgPj0gYSA+Pj4gMCA/IGEgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBhID0gbiAmIDE2Mzg0LCByID0gbiA8PCAxLCBuID0gciwgIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVtCID4+IDJdIHwgMTA0ODU3NiA8PCB1LCBlW0IgPj4gMl0gPSBuLCB2ID0gdiArIFUgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZyArIDQgfCAwLCBvID0gbyArIDEgfCAwLCAodCB8IDApID09IChvIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZVtmICsgMTI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgKyBjIHwgMCwgQiA9IEIgKyA0IHwgMCwgaCA9IGggKyAxIHwgMCwgIShoID4+PiAwIDwgbyA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQgJiAtNCwgbiA9IChhID4+PiAwIDw9IDQgPyA0IDogYSkgLSAxIHwgMCwgYSA9IChuICYgLTQpICsgNCB8IDAsIG4gPSAodSArIChuIDw8IDEgJiAtOCkgfCAwKSArIDIwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2YgKyAxMjQgPj4gMl0sIGwgPSAoZVtmICsgMTIwID4+IDJdICsgKHIgPDwgMikgfCAwKSArIDEyIHwgMCwgdyA9IGVbZiArIDExNiA+PiAyXSwgayA9IGVbZiArIDggPj4gMl0sIG4gPSBlW2YgKyA0ID4+IDJdLCBpID0gZVtmID4+IDJdLCBhID0gZVtmICsgMTA0ID4+IDJdLCB2ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAwIDwgNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoWTIgPSBDID8gNDAwMzIgOiA0MDI4OCwgYyA9IEUgJiAyMTQ3NDgzNTg0LCBvID0gMSwgZyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFUgPSAwLCBCID0gMCwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gZVtsID4+IDJdLCAhQikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlW3kgPj4gMl0sIGEgPSBlW3QgPj4gMl0sIG4gPSBuIC0gYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgJiBlW3cgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDAsIGggPSAwLCB1ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gMCwgYyAmIGVbdyArIDQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHcgKyA0IHwgMCwgaCA9IDEsIHUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgJiBlW3cgKyA4ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB3ICsgOCB8IDAsIGggPSAyLCB1ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjICYgZVt3ICsgMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHcgKyAxMiB8IDAsIGggPSAzLCB1ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB3ICsgMTYgfCAwLCBoID0gNCwgbyA9IDEsIHUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHUgfCAwKSA9PSBlW3QgKyA0ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG4gJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbeSA+PiAyXSA9IGVbdCArIDggPj4gMl0sIHIgPSBuID4+PiAwID4gYSA+Pj4gMCA/IG4gOiBhLCBpID0gKG4gPj4+IDAgPj0gYSA+Pj4gMCA/IGEgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBhID0gciAmIDE2Mzg0LCBuID0gciA8PCAxLCByID0gbiwgIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbeSA+PiAyXSA9IGVbdCArIDEyID4+IDJdLCByID0gbiwgbiA9IG4gPj4+IDAgPCBhID4+PiAwLCByID0gbiA/IHIgOiBhLCBpID0gKG4gPyBhIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgYSA9IHIgJiAxNjM4NCwgbiA9IHIgPDwgMSwgciA9IG4sICFhOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbUCA+PiAyXSwgYSA9IGVbciA+PiAyXSwgdCA9IG4gLSBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNCA+PiAyXSA9PSAoaCA+Pj4gMSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHQgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbUCA+PiAyXSA9IGVbciArIDggPj4gMl0sIHIgPSB0ID4+PiAwID4gYSA+Pj4gMCA/IHQgOiBhLCBpID0gKHQgPj4+IDAgPj0gYSA+Pj4gMCA/IGEgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBhID0gciAmIDE2Mzg0LCB0ID0gciA8PCAxLCByID0gdCwgIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbUCA+PiAyXSA9IGVbciArIDEyID4+IDJdLCBuID0gdCA+Pj4gMCA8IGEgPj4+IDAsIHIgPSBuID8gdCA6IGEsIGkgPSAobiA/IGEgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBhID0gciAmIDE2Mzg0LCB0ID0gciA8PCAxLCByID0gdCwgIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVtQID4+IDJdLCBhID0gZVtyID4+IDJdLCBuID0gdCAtIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA0ID4+IDJdID09IChoICYgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtQID4+IDJdID0gZVtyICsgOCA+PiAyXSwgciA9IG4gPj4+IDAgPiBhID4+PiAwID8gbiA6IGEsIGkgPSAobiA+Pj4gMCA+PSBhID4+PiAwID8gYSA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIGEgPSByICYgMTYzODQsIG4gPSByIDw8IDEsIHIgPSBuLCAhYTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtQID4+IDJdID0gZVtyICsgMTIgPj4gMl0sIHIgPSBuLCBuID0gbiA+Pj4gMCA8IGEgPj4+IDAsIHIgPSBuID8gciA6IGEsIGkgPSAobiA/IGEgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBhID0gciAmIDE2Mzg0LCBuID0gciA8PCAxLCByID0gbiwgIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbbCA+PiAyXSwgKHIgJiAxMjI2ODQzMjgwKSA9PSAxMjI2ODQzMjgwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IFAsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSAwLCByID0gQiwgKHIgJiAxMjI2ODQzMjgwKSAhPSAxMjI2ODQzMjgwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgPSBsIC0gNCB8IDAsIG8gPSBoLCB1ID0gdzsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IFoobywgMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghQiAmIChvIHwgMCkgPT0gKGggfCAwKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciA+Pj4gdCB8IDAsIHIgJiAyMDk3MTY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChJW2VbZiArIDEwOCA+PiAyXSArIChyICYgNDk1KSB8IDBdIDw8IDIpICsgbSB8IDAsIHIgPSBlW2EgPj4gMl0sIHMgPSBlW3IgPj4gMl0sIG4gPSBuIC0gcyB8IDAsIHggPSBjICYgZVt1ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNCA+PiAyXSA9PSAoKHggfCAwKSAhPSAwIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShuICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbYSA+PiAyXSA9IGVbciArIDggPj4gMl0sIHIgPSBuID4+PiAwID4gcyA+Pj4gMCA/IG4gOiBzLCBpID0gKG4gPj4+IDAgPj0gcyA+Pj4gMCA/IHMgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBzID0gciAmIDE2Mzg0LCBuID0gciA8PCAxLCByID0gbiwgIXM7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyBzIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVthID4+IDJdID0gZVtyICsgMTIgPj4gMl0sIHIgPSBuLCBuID0gbiA+Pj4gMCA8IHMgPj4+IDAsIHIgPSBuID8gciA6IHMsIGkgPSAobiA/IHMgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBzID0gciAmIDE2Mzg0LCBuID0gciA8PCAxLCByID0gbiwgIXM7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVtsID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gZVtsICsgNCA+PiAyXSA+Pj4gdCArIDE3ICYgNCB8IChlW3AgPj4gMl0gPj4+IHQgKyAxOSAmIDEgfCAociA+Pj4gKG8gPyB0ICsgMTIgfCAwIDogMTQpICYgMTYgfCAociA+Pj4gKHQgfCAxNikgJiA2NCB8IHIgPj4+IHQgJiAxNzApKSksIGEgPSAoSVtqICsgMzk1MjAgfCAwXSA8PCAyKSArIG0gfCAwLCByID0gZVthID4+IDJdLCBzID0gZVtyID4+IDJdLCBuID0gbiAtIHMgfCAwLCB4ID0gZVt1ID4+IDJdLCB0MCA9IHUyW1kyICsgKCgoeCAmIDIxNDc0ODM2NDcpID4+PiBDICYgMTI3KSA8PCAxKSA+PiAxXSwgaDAgPSBJW2ogKyAzOTc3NiB8IDBdLCBqID0geCA+Pj4gMzEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA0ID4+IDJdID09IChoMCBeIGopKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG4gJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbYSA+PiAyXSA9IGVbciArIDggPj4gMl0sIHIgPSBuID4+PiAwID4gcyA+Pj4gMCA/IG4gOiBzLCBpID0gKG4gPj4+IDAgPj0gcyA+Pj4gMCA/IHMgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBzID0gciAmIDE2Mzg0LCBuID0gciA8PCAxLCByID0gbiwgIXM7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgcyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbYSA+PiAyXSA9IGVbciArIDEyID4+IDJdLCByID0gbiwgbiA9IG4gPj4+IDAgPCBzID4+PiAwLCByID0gbiA/IHIgOiBzLCBpID0gKG4gPyBzIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgcyA9IHIgJiAxNjM4NCwgbiA9IHIgPDwgMSwgciA9IG4sICFzOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBlW2YgKyAxMjQgPj4gMl0sIGVbcCA+PiAyXSA9IGVbcCA+PiAyXSB8IDMyIDw8IHQsIGVbbCA+PiAyXSA9IGVbbCA+PiAyXSB8IChqIDw8IDE5IHwgMTYpIDw8IHQsIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgOCA8PCB0LCAhbyAmIChtMiB8IDApICE9IDAgfCBvIHx8IChyID0gKC0yIC0gcyA8PCAyKSArIGwgfCAwLCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSB8IDMyNzY4LCBlW3IgPj4gMl0gPSBlW3IgPj4gMl0gfCB4ICYgLTIxNDc0ODM2NDggfCA2NTUzNiwgciA9IHIgLSA0IHwgMCwgZVtyID4+IDJdID0gZVtyID4+IDJdIHwgMTMxMDcyKSwgdiA9IHYgKyB0MCB8IDAsIChvIHwgMCkgIT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IChzIDw8IDIpICsgbCB8IDAsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgNCwgZVtyICsgMTIgPj4gMl0gPSBlW3IgKyAxMiA+PiAyXSB8IDEsIGVbciArIDggPj4gMl0gPSBlW3IgKyA4ID4+IDJdIHwgaiA8PCAxOCB8IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2wgPj4gMl0gJiAoMjA5NzE1MiA8PCB0IF4gLTEpLCBlW2wgPj4gMl0gPSByLCB1ID0gdSArIDQgfCAwLCBvID0gbyArIDEgfCAwLCAobyB8IDApID09IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gUDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGggfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDEsIHIgPSByICYgLTEyMjQ3MzY3Njk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAzLCByID0gciAmIC0xMDczNzQxODI1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAyLCByID0gciAmIC0xMjA3OTU5NTUzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAwLCByID0gciAmIC0xMjI2ODMzOTIxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtsID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9ICg0IC0gaCA8PCAyKSArIHcgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCArIDQgfCAwLCByID0gZVtmICsgMTI0ID4+IDJdLCBVID0gVSArIDEgfCAwLCAhKHIgPj4+IDAgPiBVID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlW2YgKyAxMjggPj4gMl0sIEIgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgKyA4IHwgMCwgbyA9IEIsIGcgPSBnICsgNCB8IDAsICEoZyA+Pj4gMCA8ICh0ICYgLTQpID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIgfCB0ID4+PiAwIDw9IGcgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgPSBDID8gNDAwMzIgOiA0MDI4OCwgVSA9IEUgJiAyMTQ3NDgzNTg0LCBoID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtsID4+IDJdLCAociAmIDEyMjY4NDMyODApICE9IDEyMjY4NDMyODApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0IHwgMCkgIT0gKGcgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbCA+PiAyXSA9IHIgJiAtMTIyNjgzMzkyMSwgdCA9IGVbZiArIDEyOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyA9IGwgLSA0IHwgMCwgQiA9IDAsIHUgPSB3OyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFooQiwgMyksIHIgPSByID4+PiBvIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgJiAyMDk3MTY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAoSVtlW2YgKyAxMDggPj4gMl0gKyAociAmIDQ5NSkgfCAwXSA8PCAyKSArIG0gfCAwLCByID0gZVthID4+IDJdLCB0ID0gZVtyID4+IDJdLCBuID0gbiAtIHQgfCAwLCBFID0gVSAmIGVbdSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA0ID4+IDJdID09ICgoRSB8IDApICE9IDAgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobiAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbYSA+PiAyXSA9IGVbciArIDggPj4gMl0sIHIgPSB0ID4+PiAwIDwgbiA+Pj4gMCA/IG4gOiB0LCBpID0gKHQgPj4+IDAgPD0gbiA+Pj4gMCA/IHQgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCB0ID0gciAmIDE2Mzg0LCBuID0gciA8PCAxLCByID0gbiwgIXQ7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIHQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW2EgPj4gMl0gPSBlW3IgKyAxMiA+PiAyXSwgciA9IG4sIG4gPSB0ID4+PiAwID4gbiA+Pj4gMCwgciA9IG4gPyByIDogdCwgaSA9IChuID8gdCA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIHQgPSByICYgMTYzODQsIG4gPSByIDw8IDEsIHIgPSBuLCAhdDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVtsID4+IDJdLCBjID0gZVtsICsgNCA+PiAyXSA+Pj4gbyArIDE3ICYgNCB8IChlW3MgPj4gMl0gPj4+IG8gKyAxOSAmIDEgfCAociA+Pj4gbyArIDE2ICYgNjQgfCByID4+PiBvICYgMTcwIHwgciA+Pj4gKEIgPyBvICsgMTIgfCAwIDogMTQpICYgMTYpKSwgYSA9IChJW2MgKyAzOTUyMCB8IDBdIDw8IDIpICsgbSB8IDAsIHIgPSBlW2EgPj4gMl0sIHQgPSBlW3IgPj4gMl0sIG4gPSBuIC0gdCB8IDAsIEUgPSBlW3UgPj4gMl0sIHggPSB1MltwICsgKCgoRSAmIDIxNDc0ODM2NDcpID4+PiBDICYgMTI3KSA8PCAxKSA+PiAxXSwgaiA9IElbYyArIDM5Nzc2IHwgMF0sIGMgPSBFID4+PiAzMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNCA+PiAyXSA9PSAoaiBeIGMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShuICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVthID4+IDJdID0gZVtyICsgOCA+PiAyXSwgciA9IHQgPj4+IDAgPCBuID4+PiAwID8gbiA6IHQsIGkgPSAodCA+Pj4gMCA8PSBuID4+PiAwID8gdCA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIHQgPSByICYgMTYzODQsIG4gPSByIDw8IDEsIHIgPSBuLCAhdDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgdCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbYSA+PiAyXSA9IGVbciArIDEyID4+IDJdLCByID0gbiwgbiA9IHQgPj4+IDAgPiBuID4+PiAwLCByID0gbiA/IHIgOiB0LCBpID0gKG4gPyB0IDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgdCA9IHIgJiAxNjM4NCwgbiA9IHIgPDwgMSwgciA9IG4sICF0OyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2YgKyAxMjQgPj4gMl0sIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSB8IDMyIDw8IG8sIGVbbCA+PiAyXSA9IGVbbCA+PiAyXSB8IChjIDw8IDE5IHwgMTYpIDw8IG8sIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIHwgOCA8PCBvLCAhQiAmIChtMiB8IDApICE9IDAgfCBCIHx8IChyID0gKC0yIC0gdCA8PCAyKSArIGwgfCAwLCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSB8IDMyNzY4LCBlW3IgPj4gMl0gPSBlW3IgPj4gMl0gfCBFICYgLTIxNDc0ODM2NDggfCA2NTUzNiwgciA9IHIgLSA0IHwgMCwgZVtyID4+IDJdID0gZVtyID4+IDJdIHwgMTMxMDcyKSwgdiA9IHYgKyB4IHwgMCwgKEIgfCAwKSAhPSAzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAodCA8PCAyKSArIGwgfCAwLCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSB8IDQsIGVbciArIDEyID4+IDJdID0gZVtyICsgMTIgPj4gMl0gfCAxLCBlW3IgKyA4ID4+IDJdID0gZVtyICsgOCA+PiAyXSB8IGMgPDwgMTggfCAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2wgPj4gMl0gJiAoMjA5NzE1MiA8PCBvIF4gLTEpLCBlW2wgPj4gMl0gPSByLCB1ID0gdSArIDQgfCAwLCBCID0gQiArIDEgfCAwLCB0ID0gZVtmICsgMTI4ID4+IDJdLCAhKEIgPj4+IDAgPCB0IC0gZyA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgKyA0IHwgMCwgdyA9ICh0IC0gZyA8PCAyKSArIHcgfCAwLCBoID0gaCArIDEgfCAwLCAhKGggPj4+IDAgPCBkW2YgKyAxMjQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtmICsgOCA+PiAyXSA9IGssIGVbZiArIDQgPj4gMl0gPSBuLCBlW2YgPj4gMl0gPSBpLCBlW2YgKyAxMDQgPj4gMl0gPSBhLCAhZTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtmICsgMTA0ID4+IDJdID0gZiArIDEwMCwgciA9IGVbZiArIDQgPj4gMl0sIHUgPSAxOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHIsIGsgPSBlW2YgKyAxMDQgPj4gMl0sIHIgPSBlW2sgPj4gMl0sIGEgPSBlW3IgPj4gMl0sIGkgPSBpIC0gYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNCA+PiAyXSA9PSAodSAmIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtmICsgNCA+PiAyXSA9IGksIGkgJiAzMjc2OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IGVbZiA+PiAyXSwgZVtrID4+IDJdID0gZVtyICsgOCA+PiAyXSwgciA9IGkgPj4+IDAgPiBhID4+PiAwID8gaSA6IGEsIGkgPSAoaSA+Pj4gMCA+PSBhID4+PiAwID8gYSA6IDApICsgbiB8IDAsIGsgPSBlW2YgKyA4ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gayAtIDEgfCAwLCBlW2YgKyA4ID4+IDJdID0gaywgYSA9IGkgPDwgMSwgZVtmID4+IDJdID0gYSwgciA9IHIgPDwgMSwgZVtmICsgNCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtmICsgMTYgPj4gMl0sIGsgPSBJW3IgfCAwXSwgKGsgfCAwKSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyAxNiA+PiAyXSA9IHIgKyAxLCBGW3IgKyAxIHwgMF0gPSBhID4+PiAyMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShpICYgNjcxMDg4NjQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyAxNiA+PiAyXSA9IHIgKyAxLCBGW3IgKyAxIHwgMF0gPSBhID4+PiAxOTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGW3IgfCAwXSA9IGsgKyAxLCBpID0gZVtmICsgMTYgPj4gMl0sIElbaSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgciA9IGVbZiA+PiAyXSAmIDEzNDIxNzcyNywgZVtmID4+IDJdID0gciwgRltpICsgMSB8IDBdID0gciA+Pj4gMjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyAxNiA+PiAyXSA9IGkgKyAxLCBGW2kgKyAxIHwgMF0gPSBlW2YgPj4gMl0gPj4+IDE5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSA4LCBpID0gNTI0Mjg3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDcsIGkgPSAxMDQ4NTc1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyA4ID4+IDJdID0gaywgaSA9IGkgJiBlW2YgPj4gMl0sIGVbZiA+PiAyXSA9IGksIHIgPSBlW2YgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSBlW2YgPj4gMl0sIGVbayA+PiAyXSA9IGVbciArIDEyID4+IDJdLCByID0gaSwgaSA9IGkgPj4+IDAgPCBhID4+PiAwLCByID0gaSA/IHIgOiBhLCBpID0gKGkgPyBhIDogMCkgKyBuIHwgMCwgayA9IGVbZiArIDggPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gayAtIDEgfCAwLCBlW2YgKyA4ID4+IDJdID0gaywgYSA9IGkgPDwgMSwgZVtmID4+IDJdID0gYSwgciA9IHIgPDwgMSwgZVtmICsgNCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2YgKyAxNiA+PiAyXSwgayA9IElbciB8IDBdLCAoayB8IDApID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyAxNiA+PiAyXSA9IHIgKyAxLCBGW3IgKyAxIHwgMF0gPSBhID4+PiAyMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmIDY3MTA4ODY0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDE2ID4+IDJdID0gciArIDEsIEZbciArIDEgfCAwXSA9IGEgPj4+IDE5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZbciB8IDBdID0gayArIDEsIGkgPSBlW2YgKyAxNiA+PiAyXSwgSVtpIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgciA9IGVbZiA+PiAyXSAmIDEzNDIxNzcyNywgZVtmID4+IDJdID0gciwgRltpICsgMSB8IDBdID0gciA+Pj4gMjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyAxNiA+PiAyXSA9IGkgKyAxLCBGW2kgKyAxIHwgMF0gPSBlW2YgPj4gMl0gPj4+IDE5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDgsIGkgPSA1MjQyODc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gNywgaSA9IDEwNDg1NzU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgOCA+PiAyXSA9IGssIGkgPSBpICYgZVtmID4+IDJdLCBlW2YgPj4gMl0gPSBpLCByID0gZVtmICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiA+PiAyXSA9IGEgKyBlW2YgPj4gMl0sIHIgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSB1ICsgMSB8IDAsICh1IHwgMCkgPT0gNSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbQiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSAmIDkzNjApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMDsgYSA9IFoobiwgMyksICgyMDk3MTY4IDw8IGEgJiB1KSA9PSAxNiA8PCBhICYmIChvID0gZVtsID4+IDJdLCBrID0gKGsgfCAwKSA9PSAtNTU5MDM4NzM3ID8gNyA6IGsgLSAxIHwgMCwgaSA9ICgoKG8gJiBFKSAhPSAwKSA8PCBrKSArIGkgfCAwLCB3ID0gdSA+Pj4gYSB8IDAsIHcgPSAodyAmIDEwNDg1NzYgPyAxNiA6IHcgJiA0OTUgPyAxNSA6IDE0KSA8PCAyLCBvID0gdTJbcyArICgoKG8gJiAyMTQ3NDgzNjQ3KSA+Pj4gQyAmIDEyNykgPDwgMSkgPj4gMV0sIGsgfHwgKEZbZVtmICsgMTYgPj4gMl1dID0gaSwgaSA9IGVbZiArIDE2ID4+IDJdLCB1ID0gSVtpIHwgMF0sIGVbZiArIDE2ID4+IDJdID0gaSArIDEsIGsgPSAodSB8IDApID09IDI1NSA/IDcgOiA4LCB1ID0gZVtCID4+IDJdLCBpID0gMCksIHYgPSBvICsgdiB8IDAsIHUgPSAxMDQ4NTc2IDw8IGEgfCB1LCBlW0IgPj4gMl0gPSB1LCB3ID0gdyArIG0gfCAwKSwgbCA9IGwgKyA0IHwgMCwgbiA9IG4gKyAxIHwgMCwgKHQgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZVtmICsgMTI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9ICh0IDw8IDIpICsgbCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiArIDQgfCAwLCBnID0gZyArIDEgfCAwLCAhKG8gPj4+IDAgPiBnID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyA4ID4+IDJdID0gaywgZVtmICsgNCA+PiAyXSA9IHIsIGVbZiA+PiAyXSA9IGksIGVbZiArIDEwNCA+PiAyXSA9IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA8PSBhID4+PiAwIHx8IChsID0gZVtmICsgMTI0ID4+IDJdLCAhbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgPSBDID8gNDAwMzIgOiA0MDI4OCwgVSA9IEUgJiAyMTQ3NDgzNTg0LCB3ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGVbbiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA8PSBhID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gbiAtIDQgfCAwLCB1ID0gYTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IHUgLSBhIHwgMCwgbCA9IFooRSwgMyksIGggPSBnID4+PiBsIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoICYgMjA5NzE2OCB8fCAoYyA9IGggJiA0OTUsICFjKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IFUgJiBlW0IgPj4gMl0sIGggPSAoeCB8IDApICE9IDAsIG8gPSAoSVtjICsgZVtmICsgMTA4ID4+IDJdIHwgMF0gPDwgMikgKyBtIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChrIHwgMCkgPT0gLTU1OTAzODczNyA/IDcgOiBrIC0gMSB8IDAsIGkgPSAoaCA8PCBrKSArIGkgfCAwLCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbZVtmICsgMTYgPj4gMl1dID0gaSwgaSA9IGVbZiArIDE2ID4+IDJdLCBrID0gSVtpIHwgMF0sIGVbZiArIDE2ID4+IDJdID0gaSArIDEsIGsgPSAoayB8IDApID09IDI1NSA/IDcgOiA4LCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtvID4+IDJdLCBnID0gZVt0ID4+IDJdLCByID0gciAtIGcgfCAwLCAoaCB8IDApID09IGVbdCArIDQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEociAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtvID4+IDJdID0gZVt0ICsgOCA+PiAyXSwgdCA9IHIgPj4+IDAgPiBnID4+PiAwID8gciA6IGcsIGkgPSAociA+Pj4gMCA+PSBnID4+PiAwID8gZyA6IDApICsgaSB8IDA7IGkgPSBpIDw8IDEsIGsgPSBrIC0gMSB8IDAsIGsgfHwgKGVbZiA+PiAyXSA9IGksIGcwKGYpLCBrID0gZVtmICsgOCA+PiAyXSwgaSA9IGVbZiA+PiAyXSksIGcgPSB0ICYgMTYzODQsIHIgPSB0IDw8IDEsIHQgPSByLCAhZzsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyBnIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtvID4+IDJdID0gZVt0ICsgMTIgPj4gMl0sIHQgPSByLCByID0gciA+Pj4gMCA8IGcgPj4+IDAsIHQgPSByID8gdCA6IGcsIGkgPSAociA/IGcgOiAwKSArIGkgfCAwOyBpID0gaSA8PCAxLCBrID0gayAtIDEgfCAwLCBrIHx8IChlW2YgPj4gMl0gPSBpLCBnMChmKSwgayA9IGVbZiArIDggPj4gMl0sIGkgPSBlW2YgPj4gMl0pLCBnID0gdCAmIDE2Mzg0LCByID0gdCA8PCAxLCB0ID0gciwgIWc7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gKGEgfCAwKSA9PSAodSB8IDApLCB4ID0gZyAmIChtMiB8IDApICE9IDAsIG8gPSBlW24gPj4gMl0sIGogPSBlW24gKyA0ID4+IDJdID4+PiBsICsgMTcgJiA0IHwgKGVbcyA+PiAyXSA+Pj4gbCArIDE5ICYgMSB8IChvID4+PiBsICsgMTYgJiA2NCB8IG8gPj4+IGwgJiAxNzAgfCBvID4+PiAoZyA/IDE0IDogbCArIDEyIHwgMCkgJiAxNikpLCBvID0gKElbaiArIDM5NTIwIHwgMF0gPDwgMikgKyBtIHwgMCwgYyA9IGVbQiA+PiAyXSwgaCA9IGMgPj4+IDMxIHwgMCwgWTIgPSB1MltwICsgKCgoYyAmIDIxNDc0ODM2NDcpID4+PiBDICYgMTI3KSA8PCAxKSA+PiAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChrIHwgMCkgPT0gLTU1OTAzODczNyA/IDcgOiBrIC0gMSB8IDAsIGkgPSAoaCA8PCBrKSArIGkgfCAwLCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGW2VbZiArIDE2ID4+IDJdXSA9IGksIGkgPSBlW2YgKyAxNiA+PiAyXSwgayA9IElbaSB8IDBdLCBlW2YgKyAxNiA+PiAyXSA9IGkgKyAxLCBrID0gKGsgfCAwKSA9PSAyNTUgPyA3IDogOCwgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbbyA+PiAyXSwgZyA9IGVbdCA+PiAyXSwgciA9IHIgLSBnIHwgMCwgZVt0ICsgNCA+PiAyXSA9PSAoaCBeIElbaiArIDM5Nzc2IHwgMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEociAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlW28gPj4gMl0gPSBlW3QgKyA4ID4+IDJdLCB0ID0gciA+Pj4gMCA+IGcgPj4+IDAgPyByIDogZywgaSA9IChyID4+PiAwID49IGcgPj4+IDAgPyBnIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgZyA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFnOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgZyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbbyA+PiAyXSA9IGVbdCArIDEyID4+IDJdLCB0ID0gciwgciA9IHIgPj4+IDAgPCBnID4+PiAwLCB0ID0gciA/IHQgOiBnLCBpID0gKHIgPyBnIDogMCkgKyBpIHwgMDsgaSA9IGkgPDwgMSwgayA9IGsgLSAxIHwgMCwgayB8fCAoZVtmID4+IDJdID0gaSwgZzAoZiksIGsgPSBlW2YgKyA4ID4+IDJdLCBpID0gZVtmID4+IDJdKSwgZyA9IHQgJiAxNjM4NCwgciA9IHQgPDwgMSwgdCA9IHIsICFnOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2YgKyAxMjQgPj4gMl0sIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSB8IDMyIDw8IGwsIGVbbiA+PiAyXSA9IGVbbiA+PiAyXSB8IChoIDw8IDE5IHwgMTYpIDw8IGwsIGVbbiArIDQgPj4gMl0gPSBlW24gKyA0ID4+IDJdIHwgOCA8PCBsLCBFIHwgeCB8fCAoZyA9ICgtMiAtIHQgPDwgMikgKyBuIHwgMCwgZVtnICsgNCA+PiAyXSA9IGVbZyArIDQgPj4gMl0gfCAzMjc2OCwgZVtnID4+IDJdID0gZVtnID4+IDJdIHwgYyAmIC0yMTQ3NDgzNjQ4IHwgNjU1MzYsIGcgPSBnIC0gNCB8IDAsIGVbZyA+PiAyXSA9IGVbZyA+PiAyXSB8IDEzMTA3MiksIHYgPSB2ICsgWTIgfCAwLCAoRSB8IDApICE9IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gKHQgPDwgMikgKyBuIHwgMCwgZVtnICsgNCA+PiAyXSA9IGVbZyArIDQgPj4gMl0gfCA0LCBlW2cgKyAxMiA+PiAyXSA9IGVbZyArIDEyID4+IDJdIHwgMSwgZVtnICsgOCA+PiAyXSA9IGVbZyArIDggPj4gMl0gfCBoIDw8IDE4IHwgMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGVbbiA+PiAyXSB8IDIwOTcxNTIgPDwgbCwgZVtuID4+IDJdID0gZywgdCA9IGVbZiArIDEyOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9IEIgKyA0IHwgMCwgdSA9IHUgKyAxIHwgMCwgISh1ID4+PiAwIDwgdCA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZVtmICsgMTI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9ICh0IC0gYSA8PCAyKSArIEIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbiArIDQgfCAwLCB3ID0gdyArIDEgfCAwLCAhKGwgPj4+IDAgPiB3ID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgOCA+PiAyXSA9IGssIGVbZiArIDQgPj4gMl0gPSByLCBlW2YgPj4gMl0gPSBpLCBlW2YgKyAxMDQgPj4gMl0gPSBvOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIFgyID0gMSwgWDIgPSB4MiA/IFEyW2kwID4+IDNdIDogWDI7CiAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWswKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcSA/IDggOiA5LCBQMiA9IFEyWyhaKHEsIDgwKSArICgoaSA+Pj4gMCA8IHcyID4+PiAwID8gaSA6IHcyKSA8PCAzKSB8IDApICsgMzA1MjggPj4gM10sIGcyID0gRDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcSA/IDggOiA5LCBQMiA9IFEyWyhaKHEsIDgwKSArICgoaSA+Pj4gMCA8IHcyID4+PiAwID8gaSA6IHcyKSA8PCAzKSB8IDApICsgMzA4NDggPj4gM10sIGcyID0gcjA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZzIgPSBYMiAqIFAyICogZzIgKiArKDEgPDwgQyksIHAyID0gcDIgKyBnMiAqIChnMiAqICsodiB8IDApICogMTIyMDcwMzEyNWUtMTMpLCBRMlt6ICsgOCA+PiAzXSA9IHAyOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTDIgfHwgKGkgPSAoZjIgfCAwKSA9PSAyLCBpICYgIUMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUzIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW0QgKyAyOCA+PiAyXSAtIDQgfCAwLCBpICYgKHIgfCAwKSA9PSAoQyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZjIgfCAociB8IDApIDw9IChDIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2YgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPj0gNykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSAhPSA3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYzIgJiYgKHIgPSBlW2YgKyAxNiA+PiAyXSAtIDEgfCAwLCBJW3IgfCAwXSA9PSAyNTUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlW2YgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbZiA+PiAyXSwgIWkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpICYgMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAtIDEgPj4+IDAgPCAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gaSAmIC00OyByID0gaSAtIDQgfCAwLCBhID0gKCgxIDw8IGkgLSAyKSArIGEgfCAwKSArICgxIDw8IHIpIHwgMCwgaSA9IHIsIGsgPSBrICsgNCB8IDAsIChuIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMCwgayA9IDA7IHIgPSByIC0gMSB8IDAsIGEgPSAoaSA8PCByKSArIGEgfCAwLCBpID0gaSBeIDEsIGsgPSBrICsgMSB8IDAsICh1IHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmID4+IDJdID0gYSwgZVtmICsgOCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltlW2YgKyAxNiA+PiAyXV0gPSBhLCBlW2YgKyAxNiA+PiAyXSA9IGVbZiArIDE2ID4+IDJdICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDE2ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApICE9IDggfCBjMiB8fCAoaSA9IGVbZiArIDE2ID4+IDJdLCBJW2kgLSAxIHwgMF0gIT0gMTI3KSB8fCAoaSA9IGkgLSAyIHwgMCwgSVtpIHwgMF0gIT0gMjU1KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDE2ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYzIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbZiArIDggPj4gMl0sIGEgPSAxMiAtIGkgfCAwLCAoYSB8IDApID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IGVbZiA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgOCA+PiAyXSA9IDAsIHIgPSByIDw8IGksIGVbZiA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbZiArIDE2ID4+IDJdLCB1ID0gSVtpIHwgMF0sICh1IHwgMCkgPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDE2ID4+IDJdID0gaSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAxMzQyMTc3MjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgRltpICsgMSB8IDBdID0gciA+Pj4gMTk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRltpIHwgMF0gPSB1ICsgMSwgaSA9IGVbZiArIDE2ID4+IDJdLCBJW2kgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyAxNiA+PiAyXSA9IGkgKyAxLCByID0gZVtmID4+IDJdICYgMTM0MjE3NzI3LCBlW2YgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgRltpICsgMSB8IDBdID0gZVtmID4+IDJdID4+PiAxOTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSA1MjQyODcsIGkgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltpICsgMSB8IDBdID0gciA+Pj4gMjAsIHIgPSAxMDQ4NTc1LCBpID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtmICsgOCA+PiAyXSA9IGksIHIgPSBlW2YgPj4gMl0gJiByLCBlW2YgPj4gMl0gPSByLCBhID0gYSAtIGkgfCAwLCAhKChhIHwgMCkgPiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbZiArIDE2ID4+IDJdLCByID0gSVtpIHwgMF0sIChyIHwgMCkgIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZVtmID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYSAmIDEzNDIxNzcyOCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDE2ID4+IDJdID0gaSArIDEsIEZbaSArIDEgfCAwXSA9IGEgPj4+IDE5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZbaSB8IDBdID0gciArIDEsIGkgPSBlW2YgKyAxNiA+PiAyXSwgSVtpIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyAxNiA+PiAyXSA9IGkgKyAxLCByID0gZVtmID4+IDJdICYgMTM0MjE3NzI3LCBlW2YgPj4gMl0gPSByLCBGW2kgKyAxIHwgMF0gPSByID4+PiAyMCwgciA9IDEwNDg1NzUsIGkgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgRltpICsgMSB8IDBdID0gZVtmID4+IDJdID4+PiAxOTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gNTI0Mjg3LCBpID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDggPj4gMl0gPSBpLCBlW2YgPj4gMl0gPSBlW2YgPj4gMl0gJiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2YgPj4gMl0sIGkgPSByIHwgNjU1MzUsIHIgPSAoaSA+Pj4gMCA8IHIgKyBlW2YgKyA0ID4+IDJdID4+PiAwID8gaSA6IGkgLSAzMjc2OCB8IDApIDw8IGVbZiArIDggPj4gMl0sIGVbZiA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbZiArIDE2ID4+IDJdLCBhID0gSVtpIHwgMF0sIChhIHwgMCkgPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDE2ID4+IDJdID0gaSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAxMzQyMTc3MjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgRltpICsgMSB8IDBdID0gciA+Pj4gMTk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRltpIHwgMF0gPSBhICsgMSwgaSA9IGVbZiArIDE2ID4+IDJdLCBJW2kgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyAxNiA+PiAyXSA9IGkgKyAxLCByID0gZVtmID4+IDJdICYgMTM0MjE3NzI3LCBlW2YgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgRltpICsgMSB8IDBdID0gZVtmID4+IDJdID4+PiAxOTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSA1MjQyODcsIGkgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltpICsgMSB8IDBdID0gciA+Pj4gMjAsIHIgPSAxMDQ4NTc1LCBpID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyA4ID4+IDJdID0gaSwgciA9IChlW2YgPj4gMl0gJiByKSA8PCBpLCBlW2YgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2YgKyAxNiA+PiAyXSwgYSA9IElbaSB8IDBdLCAoYSB8IDApID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgKyAxNiA+PiAyXSA9IGkgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShyICYgMTM0MjE3NzI4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDE2ID4+IDJdID0gaSArIDEsIEZbaSArIDEgfCAwXSA9IHIgPj4+IDE5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZbaSB8IDBdID0gYSArIDEsIGkgPSBlW2YgKyAxNiA+PiAyXSwgSVtpIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTYgPj4gMl0gPSBpICsgMSwgciA9IGVbZiA+PiAyXSAmIDEzNDIxNzcyNywgZVtmID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDE2ID4+IDJdID0gaSArIDEsIEZbaSArIDEgfCAwXSA9IGVbZiA+PiAyXSA+Pj4gMTk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gNTI0Mjg3LCBpID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbaSArIDEgfCAwXSA9IHIgPj4+IDIwLCByID0gMTA0ODU3NSwgaSA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgOCA+PiAyXSA9IGksIGVbZiA+PiAyXSA9IGVbZiA+PiAyXSAmIHIsIGkgPSBlW2YgKyAxNiA+PiAyXSwgSVtpIHwgMF0gIT0gMjU1ICYmIChlW2YgKyAxNiA+PiAyXSA9IGkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbeiArIDIwIHwgMF0gPSBJW3ogKyAyMCB8IDBdIHwgMSwgaSA9IGVbZiArIDE2ID4+IDJdIC0gZVtmICsgMjAgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAzLCBIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVtmICsgOCA+PiAyXSwgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDwgNyB8fCAoaSA9IDAsIChyIHwgMCkgIT0gNykgfHwgKGkgPSAxLCBjMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IElbZVtmICsgMTYgPj4gMl0gLSAxIHwgMF0gIT0gMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBGW3ogKyAyMCB8IDBdID0gSVt6ICsgMjAgfCAwXSAmIDI1NCwgaSA9IChlW2YgKyAxNiA+PiAyXSAtIGVbZiArIDIwID4+IDJdIHwgMCkgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt6ID4+IDJdID0gaSwgaSA9IGYyICsgMSB8IDAsIHIgPSAoaSB8IDApID09IDMsIEMgPSBDIC0gciB8IDAsIHoyICYmIChlW2YgKyAxMDAgPj4gMl0gPSAzNzQ0MCwgZVtmICsgOTIgPj4gMl0gPSAzNTk2OCwgZVtmICsgODggPj4gMl0gPSAzNTk2OCwgZVtmICsgODQgPj4gMl0gPSAzNTk2OCwgZVtmICsgODAgPj4gMl0gPSAzNTk2OCwgZVtmICsgNzYgPj4gMl0gPSAzNTk2OCwgZVtmICsgNzIgPj4gMl0gPSAzNTk2OCwgZVtmICsgNjggPj4gMl0gPSAzNTk2OCwgZVtmICsgNjQgPj4gMl0gPSAzNTk2OCwgZVtmICsgNjAgPj4gMl0gPSAzNTk2OCwgZVtmICsgNTYgPj4gMl0gPSAzNTk2OCwgZVtmICsgNTIgPj4gMl0gPSAzNTk2OCwgZVtmICsgNDggPj4gMl0gPSAzNTk2OCwgZVtmICsgNDQgPj4gMl0gPSAzNTk2OCwgZVtmICsgNDAgPj4gMl0gPSAzNTk2OCwgZVtmICsgMzYgPj4gMl0gPSAzNTk2OCwgZVtmICsgMzIgPj4gMl0gPSAzNTk2OCwgZVtmICsgOTYgPj4gMl0gPSAzNjA2NCwgZVtmICsgMjggPj4gMl0gPSAzNjA5NiksIGYyID0gciA/IDAgOiBpLCBuMiA9IG4yICsgMSB8IDAsICEoKEMgfCAwKSA+PSAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0QgKyA0OCA+PiAyXSA9IG4yLCAhbjIgfHwgKGYgPSBlW2YgKyAxNiA+PiAyXSAtIGVbZiArIDIwID4+IDJdIHwgMCwgciA9IGVbRCArIDQ4ID4+IDJdLCAhcikpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBhID0gZVtEICsgOCA+PiAyXSwgdSA9IHIgJiAzOwogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiwgayA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwLCBrID0gcjsgayA9IGsgLSAxIHwgMCwgbyA9IGEgKyBaKGssIDI0KSB8IDAsIGkgPSBlW28gPj4gMl0sIGYgPj4+IDAgPCBpID4+PiAwICYmIChlW28gPj4gMl0gPSBmLCBpID0gZiksIGYgPSBpLCBuID0gbiArIDEgfCAwLCAodSB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSBhIC0gNzIgfCAwLCBvID0gYSAtIDQ4IHwgMCwgQiA9IGEgLSAyNCB8IDA7IHUgPSBaKGssIDI0KSwgbCA9IHUgKyBCIHwgMCwgZiA9IGVbbCA+PiAyXSwgZiA+Pj4gMCA+IGkgPj4+IDAgJiYgKGVbbCA+PiAyXSA9IGksIGYgPSBpKSwgbCA9IG8gKyB1IHwgMCwgaSA9IGVbbCA+PiAyXSwgZiA+Pj4gMCA8IGkgPj4+IDAgJiYgKGVbbCA+PiAyXSA9IGYsIGkgPSBmKSwgdSA9IG4gKyB1IHwgMCwgZiA9IGVbdSA+PiAyXSwgZiA+Pj4gMCA+IGkgPj4+IDAgJiYgKGVbdSA+PiAyXSA9IGksIGYgPSBpKSwgayA9IGsgLSA0IHwgMCwgdSA9IGEgKyBaKGssIDI0KSB8IDAsIGkgPSBlW3UgPj4gMl0sIGYgPj4+IDAgPCBpID4+PiAwICYmIChlW3UgPj4gMl0gPSBmLCBpID0gZiksICEhazsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVthID4+IDJdLCB1ID0gZVtEID4+IDJdIC0gMSB8IDAsIElbaSArIHUgfCAwXSA9PSAyNTUgJiYgKGkgPSBpIC0gMSB8IDAsIGVbYSA+PiAyXSA9IGkpLCBlW2EgKyAxNiA+PiAyXSA9IGksIGsgPSAxLCAociB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IHIgLSAxIHwgMCwgbiA9IGkgJiAxLCAociB8IDApICE9IDIpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IGkgJiAtMiwgdCA9IDA7IGkgPSBhICsgWihrLCAyNCkgfCAwLCBmID0gZVtpID4+IDJdLCBJW3UgKyBmIHwgMF0gPT0gMjU1ICYmIChmID0gZiAtIDEgfCAwLCBlW2kgPj4gMl0gPSBmKSwgZVtpICsgMTYgPj4gMl0gPSBmIC0gZVtpIC0gMjQgPj4gMl0sIGYgPSBlW2kgKyAyNCA+PiAyXSwgSVt1ICsgZiB8IDBdID09IDI1NSAmJiAoZiA9IGYgLSAxIHwgMCwgZVtpICsgMjQgPj4gMl0gPSBmKSwgZVtpICsgNDAgPj4gMl0gPSBmIC0gZVtpID4+IDJdLCBrID0gayArIDIgfCAwLCB0ID0gdCArIDIgfCAwLCAociB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4pCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBpID0gYSArIFooaywgMjQpIHwgMCwgayA9IGVbaSA+PiAyXSwgSVt1ICsgayB8IDBdID09IDI1NSAmJiAoayA9IGsgLSAxIHwgMCwgZVtpID4+IDJdID0gayksIGVbaSArIDE2ID4+IDJdID0gayAtIGVbaSAtIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVtEICsgMjggPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbRCArIDQ4ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghZVtBICsgNDAgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDEyID4+IDJdLCBRMltpICsgMzIgPj4gM10gPSBwMiArIFEyW2kgKyAzMiA+PiAzXSwgUihBKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyA0MCA+PiAyXSwgZiA9IGVbQSArIDEyID4+IDJdLCBRMltmICsgMzIgPj4gM10gPSBwMiArIFEyW2YgKyAzMiA+PiAzXSwgIWkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFIoQSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gSTQoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gVygwKSwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IFcoMCksIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMCwgRCA9IDAsIFUgPSAwLCBQID0gMCwgeCA9IDAsIHogPSAwLCBqID0gMCwgTyA9IFcoMCksIHEgPSAwLCBmMiA9IDAsIG4yID0gMCwgZzIgPSAwLCB3MiA9IDAsIGMyID0gMCwgbTIgPSAwLCBwMiA9IFcoMCksIFkyID0gMCwgWDIgPSAwLCBEMiA9IDAsIFMyID0gMCwgUDIgPSAwLCB4MiA9IDAsIHoyID0gMCwgTDIgPSAwLCBlMCA9IDAsIGkwID0gMCwgcjAgPSAwLCBrMCA9IDAsIHQwID0gMCwgaDAgPSAwOwogICAgICAgICAgICAgIHMgPSBYIC0gNDAwIHwgMCwgWCA9IHM7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFyIHwgKCFBIHwgIWkpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKHUgPSBlW2kgKyA1NTkyID4+IDJdLCB1IC0gMzQgPj4+IDAgPD0gNDI5NDk2NzI2MikgewogICAgICAgICAgICAgICAgICBlW3MgKyA0ID4+IDJdID0gMzMsIGVbcyA+PiAyXSA9IHUsIFEoZiwgMSwgMTgxMjcsIHMpOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGwgPSBlW2kgKyA1NTk2ID4+IDJdLCBsIC0gMTAyNSA+Pj4gMCA8PSA0Mjk0OTY2Mjc0KSB7CiAgICAgICAgICAgICAgICAgIGVbcyArIDE2ID4+IDJdID0gbCwgUShmLCAxLCAxODM3NiwgcyArIDE2IHwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodCA9IGVbaSArIDU2MDAgPj4gMl0sIHQgLSAxMDI1ID4+PiAwIDw9IDQyOTQ5NjYyNzQpIHsKICAgICAgICAgICAgICAgICAgZVtzICsgMzIgPj4gMl0gPSB0LCBRKGYsIDEsIDE4MzAxLCBzICsgMzIgfCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmIChaKHQsIGwpID4+PiAwIDwgNDA5NykgewogICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gbDsgbyA9IGssIGsgPSBrICsgMSB8IDAsIGggPSBuID4+PiAwID4gMywgbiA9IG4gPj4+IDEgfCAwLCAhIWg7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAwLCAodCB8IDApID49IDIpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IHQ7IGsgPSBrICsgMSB8IDAsIGggPSBuID4+PiAwID4gMywgbiA9IG4gPj4+IDEgfCAwLCAhIWg7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgfCAwKSAhPSAyIDw8IG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZVtzICsgMzUyID4+IDJdID0gbCwgUShmLCAxLCAxODM3NiwgcyArIDM1MiB8IDApLCBuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICgodCB8IDApICE9IDEgPDwgaykgewogICAgICAgICAgICAgICAgICAgICAgICBlW3MgKyAzMzYgPj4gMl0gPSB0LCBRKGYsIDEsIDE4Mzc2LCBzICsgMzM2IHwgMCksIG4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbaSArIDI0ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtpICsgMzIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMCwgUShmLCAxLCA5NDMzLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyA0Nzg4ID4+IDJdID49IDExKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtzICsgMzA0ID4+IDJdID0gMTAsIFEoZiwgMSwgMTc1NDMsIHMgKyAzMDQgfCAwKSwgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHUgfCAwKSA8IDExKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGVbcyArIDMyMCA+PiAyXSA9IDEwLCBRKGYsIDEsIDE3NjAzLCBzICsgMzIwIHwgMCksIG4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgayA9IGVbciArIDE2ID4+IDJdLCBlW0EgKyAxMDQgPj4gMl0gPSAxLCBlW0EgKyAxMDggPj4gMl0gPSAxLCBlW0EgKyA2OCA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHMltpICsgMTg3MDQgPj4gMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVbaSArIDE4Njc2ID4+IDJdIC0gMSB8IDAsIHQgPj4+IDAgPD0gMiAmJiAobCA9IHQgPDwgMiwgZVtpICsgMTg3MDAgPj4gMl0gPSBlW2wgKyAzMTY2NCA+PiAyXSwgbiA9IHQgPDwgNCwgayA9IG4gJiAzMSwgKG4gJiA2MykgPj4+IDAgPj0gMzIgPyBrID0gNCA+Pj4gayB8IDAgOiBrID0gKCgxIDw8IGspIC0gMSAmIDQpIDw8IDMyIC0gayB8IDE5NjYxMSA+Pj4gaywgdTJbaSArIDE4NzA0ID4+IDFdID0gaywgZVtpICsgMTg2ODAgPj4gMl0gPSBlW2wgKyAzMTY3NiA+PiAyXSksIG4gPSAzOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoayA9IGVbaSArIDE4Njg0ID4+IDJdLCBrIC0gMyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDMzMDI0LCAoayB8IDApID09IDMzMDI0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAwIDw9IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSA0OwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB1MltpICsgMTg3MDQgPj4gMV0gPSBuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIFEoZiwgMiwgNTQ4NCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB0ID0gZVtpICsgNDc4OCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDEsIGVbaSArIDIwID4+IDJdID0gMSwgZVtpICsgNDc4OCA+PiAyXSA9IDEsIGVbaSArIDQ3OTIgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDIwID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAxLCAodCB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGkgKyA0NzkyIHwgMCwgbiA9IDE7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPID0gR1t0ICsgKG4gPDwgMikgPj4gMl0sIHAyID0gTyA8PSBXKDEpID8gVygxKSA6IE8sIGsgPSBuIC0gMSB8IDAsIEIgPSBHW3QgKyAoayA8PCAyKSA+PiAyXSwgbSA9IEIgPD0gVygxKSA/IFcoMSkgOiBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShwMiA+PSBtKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRCA9ICtPLCBPICE9IHAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgPSArQiwgZzIgPSArcDIsIEIgIT0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUTJbcyArIDE2OCA+PiAzXSA9IG0sIFEyW3MgKyAxNjAgPj4gM10gPSB5LCBlW3MgKyAxNTIgPj4gMl0gPSBrLCBRMltzICsgMTQ0ID4+IDNdID0gZzIsIFEyW3MgKyAxMzYgPj4gM10gPSBELCBlW3MgKyAxMjggPj4gMl0gPSBuLCBRKGYsIDIsIDI1ODg0LCBzICsgMTI4IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRMltzICsgMjA4ID4+IDNdID0geSwgZVtzICsgMjAwID4+IDJdID0gaywgUTJbcyArIDE5MiA+PiAzXSA9IGcyLCBRMltzICsgMTg0ID4+IDNdID0gRCwgZVtzICsgMTc2ID4+IDJdID0gbiwgUShmLCAyLCA5NzM1LCBzICsgMTc2IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeSA9ICtCLCBCICE9IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRMltzICsgMjU2ID4+IDNdID0gbSwgUTJbcyArIDI0OCA+PiAzXSA9IHksIGVbcyArIDI0MCA+PiAyXSA9IGssIFEyW3MgKyAyMzIgPj4gM10gPSBELCBlW3MgKyAyMjQgPj4gMl0gPSBuLCBRKGYsIDIsIDI1ODAwLCBzICsgMjI0IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRMltzICsgMjk2ID4+IDNdID0geSwgZVtzICsgMjg4ID4+IDJdID0gaywgUTJbcyArIDI4MCA+PiAzXSA9IEQsIGVbcyArIDI3MiA+PiAyXSA9IG4sIFEoZiwgMiwgOTY2OSwgcyArIDI3MiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW2kgKyA0Nzg4ID4+IDJdLCBuID0gbiArIDEgfCAwLCAhKGsgPj4+IDAgPiBuID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW2kgKyAyOCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAxLCAodCB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gaSArIDUxOTIgfCAwLCBrID0gdCwgbiA9IDE7IEIgPSBHW2wgKyAobiA8PCAyKSA+PiAyXSwgdCA9IG4gLSAxIHwgMCwgbSA9IEdbbCArICh0IDw8IDIpID4+IDJdLCAhKEIgPCBtKSB8IChrIC0gMSB8IDApID09IChuIHwgMCkgJiBCID09IFcoMCkgfHwgKFEyW3MgKyAxMjAgPj4gM10gPSBtLCBlW3MgKyAxMTIgPj4gMl0gPSB0LCBlW3MgKyA5NiA+PiAyXSA9IG4sIFEyW3MgKyAxMDQgPj4gM10gPSBCLCBRKGYsIDIsIDk4MTksIHMgKyA5NiB8IDApLCBrID0gZVtpICsgNDc4OCA+PiAyXSksIG4gPSBuICsgMSB8IDAsIG4gPj4+IDAgPCBrID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW2kgKyAxODcwMCA+PiAyXSwgKG4gfCAwKSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gR1soKGsgPDwgMikgKyBpIHwgMCkgKyA0Nzg4ID4+IDJdLCBCID4gVygwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBlW3IgKyAyNCA+PiAyXSwgQiA9IFcoK2RbciArIDE2ID4+IDJdICogK2RbayArIDggPj4gMl0gKiArZFtrICsgMTIgPj4gMl0gKiArZFtrICsgMjQgPj4gMl0gLyAoK0IgKiA4ICogK2RbayA+PiAyXSAqICtkW2sgKyA0ID4+IDJdKSksIHQgPSBCID4gVygyMTQ3NDgzNjQ4KSwgQiA9IFcoTmUoQikpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXKFIyKEIpKSA8IFcoMjE0NzQ4MzY0OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IH5+QjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtpICsgMTg3MDAgPj4gMl0gPSB0ID8gMjE0NzQ4MzY0NyA6IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyAxODcwMCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKGsgfCAwKSAhPSAxIHwgKEcyW2kgKyAxODcwNCA+PiAxXSAtIDEwMjQgJiA2NTUzNSkgPj4+IDAgPiAxNDM1IHwgR1tpICsgNDc5MiA+PiAyXSAhPSBXKDApIHx8ICh0ID0gZVtyICsgMjQgPj4gMl0sIEdbaSArIDQ3OTIgPj4gMl0gPSBXKFooWihaKGVbdCArIDggPj4gMl0sIGVbciArIDE2ID4+IDJdKSwgZVt0ICsgMTIgPj4gMl0pLCBlW3QgKyAyNCA+PiAyXSkgPj4+IDApIC8gVyhaKGVbdCArIDQgPj4gMl0sIFoobiwgZVt0ID4+IDJdKSkgPDwgMyA+Pj4gMCkpLCAhaykKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbciArIDI0ID4+IDJdLCBCID0gVygrZFtyICsgMTYgPj4gMl0gKiArZFt0ICsgOCA+PiAyXSAqICtkW3QgKyAxMiA+PiAyXSAqICtkW3QgKyAyNCA+PiAyXSAvICgrKG4gPj4+IDApICogOCAqICtkW3QgPj4gMl0gKiArZFt0ICsgNCA+PiAyXSkpLCB0ID0gaSArIDQ3OTIgfCAwLCBuID0gMCwgbCA9IDE7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gdCArIChuIDw8IDIpIHwgMCwgIShCID4gR1tvID4+IDJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbiArIDEgfCAwLCAobiB8IDApICE9IChrIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCAmIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEdbbyA+PiAyXSA9IEIsIGwgPSAwLCBuID0gbiArIDEgfCAwLCAobiB8IDApID09IChrIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDE4NjY4LCAwKTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIFEoZiwgMiwgNTA3OCwgMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gRzJbaSArIDE4NzA0ID4+IDFdLCAobiAtIDMgJiA2NTUzNSkgPj4+IDAgPj0gNCAmIChuIC0gMTAyNCAmIDY1NTM1KSA+Pj4gMCA+IDE0MzUgfHwgKGVbQSArIDE2ID4+IDJdID0gMSwgbiA9IEcyW2kgKyAxODcwNCA+PiAxXSwgKG4gLSAzICYgNjU1MzUpID4+PiAwID4gMykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAxMDgxNiwgKG4gLSA1ICYgNjU1MzUpID4+PiAwIDwgMikKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICBsID0gWCAtIDQ4IHwgMCwgWCA9IGwsIGVbaSArIDE2ID4+IDJdID0gMSwgZVtpID4+IDJdID0gMCwgZVtpICsgNCA+PiAyXSA9IDAsIHUyW2kgKyAxODY4OCA+PiAxXSA9IDE3MTUzLCBlW2kgKyAxODE4MCA+PiAyXSA9IDAsIGVbaSArIDE4MTg0ID4+IDJdID0gMCwgZVtpICsgOCA+PiAyXSA9IDAsIGVbaSArIDEyID4+IDJdID0gMSwgZVtpICsgMTgxODggPj4gMl0gPSAxLCBlW2kgKyAxODE5MiA+PiAyXSA9IDEsIGVbaSArIDU2MTIgPj4gMl0gPSAtMSwgZVtpICsgNTU5NiA+PiAyXSA9IDMyLCBlW2kgKyA1NjAwID4+IDJdID0gMzIsIGVbaSArIDU2MDQgPj4gMl0gPSAwLCBlW2kgKyA1NjA4ID4+IDJdID0gMSwgayA9IGVbaSArIDQ3ODggPj4gMl0sIChrIHwgMCkgPj0gMiAmJiAodCA9IGkgKyA0NzkyIHwgMCwgQiA9IEdbKHQgKyAoayA8PCAyKSB8IDApIC0gNCA+PiAyXSwgZVtsICsgMzIgPj4gMl0gPSBrLCBRMltsICsgNDAgPj4gM10gPSBCLCBRKGYsIDIsIDIxNjgsIGwgKyAzMiB8IDApLCBHW2kgKyA0NzkyID4+IDJdID0gR1sodCArIChlW2kgKyA0Nzg4ID4+IDJdIDw8IDIpIHwgMCkgLSA0ID4+IDJdLCBlW2kgKyA0Nzg4ID4+IDJdID0gMSksIHQgPSBlW2kgKyA1NTkyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoRzJbaSArIDE4NzA0ID4+IDFdIC0gMyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gNiwgKHQgfCAwKSA8PSA2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMjY3ODk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSA8PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2wgKyAxNiA+PiAyXSA9IHQgKyAxLCBRKGYsIDIsIDI2OTM1LCBsICsgMTYgfCAwKSwgZVtpICsgNTU5MiA+PiAyXSA9IDEsIGVbaSArIDQwID4+IDJdID0gZVtpICsgNDAgPj4gMl0gfCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPCA4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSA3LCBuID0gMjY2MzU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtsID4+IDJdID0gdCArIDEsIFEoZiwgMiwgbiwgbCksIGVbaSArIDU1OTIgPj4gMl0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGsgLSAxIHwgMCwgZVtpICsgNTYyMCA+PiAyXSA9IG4sIGVbaSArIDQwID4+IDJdID0gZVtpICsgNDAgPj4gMl0gfCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDQwID4+IDJdID0gZVtpICsgNDAgPj4gMl0gfCAxLCAodCB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbaSArIDU3NTYgPj4gMl0gPSAxMjgsIGVbaSArIDU2MjAgPj4gMl0gPSAxLCBlW2kgKyA1NjI0ID4+IDJdID0gMTI4LCB0ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gdCAtIDEgfCAwLCBlW2kgKyA1NjIwID4+IDJdID0gbiwgayA9IHQsIChrIHwgMCkgPCAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGkgKyA1NzU2IHwgMCwgdSA9IGkgKyA1NjI0IHwgMCwgdCA9IDAsIG4gLSAxID4+PiAwID49IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHYgPSBuICYgLTQ7IGggPSB0IDw8IDIsIGVbaCArIHUgPj4gMl0gPSAyNTYsIGVbbyArIGggPj4gMl0gPSAyNTYsIEMgPSBoIHwgNCwgZVtDICsgdSA+PiAyXSA9IDI1NiwgZVtvICsgQyA+PiAyXSA9IDI1NiwgQyA9IGggfCA4LCBlW0MgKyB1ID4+IDJdID0gMjU2LCBlW28gKyBDID4+IDJdID0gMjU2LCBoID0gaCB8IDEyLCBlW2ggKyB1ID4+IDJdID0gMjU2LCBlW28gKyBoID4+IDJdID0gMjU2LCB0ID0gdCArIDQgfCAwLCBnID0gZyArIDQgfCAwLCAodiB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbiAmIDMsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgaCA9IHQgPDwgMiwgZVtoICsgdSA+PiAyXSA9IDI1NiwgZVtvICsgaCA+PiAyXSA9IDI1NiwgdCA9IHQgKyAxIHwgMCwgYSA9IGEgKyAxIHwgMCwgKG4gfCAwKSAhPSAoYSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA0NCA+PiAyXSA9IDQsIGsgPSAwLCBHMltpICsgMTg3MDQgPj4gMV0gPT0gNCAmJiAoZVtpICsgMjQ0ID4+IDJdID0gMSwgZVtpICsgODAgPj4gMl0gPSA0LCBlW2kgKyA2NCA+PiAyXSA9IDMsIGVbaSArIDU2ID4+IDJdID0gMSwgZVtpICsgNDggPj4gMl0gPSAwLCBlW2kgKyA1MiA+PiAyXSA9IDAsIGVbaSArIDk2ID4+IDJdID0gMSwgZVtpICsgMjI4ID4+IDJdID0gNCwgZVtpICsgMjEyID4+IDJdID0gMywgZVtpICsgMjA4ID4+IDJdID0gdCwgZVtpICsgMjAwID4+IDJdID0gMCwgZVtpICsgMjA0ID4+IDJdID0gMSwgayA9IHQgLSAxIHwgMCwgZVtpICsgNjAgPj4gMl0gPSBrLCBlW2kgKyAxOTYgPj4gMl0gPSBrLCBrID0gMiksIGVbaSArIDIwID4+IDJdID0gMSwgZVtpICsgNDc4NCA+PiAyXSA9IGssIGsgPSBlW2kgKyAxODcwMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoayB8IDApIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbaSArIDE4NzAwID4+IDJdID0gMTMwMjA4MywgUShmLCAyLCAyMjU3NywgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA8IDEzMDIwODQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgIFEoZiwgMiwgMTk5MDEsIDApLCBlW2kgKyAxODcwMCA+PiAyXSA9IDEzMDIwODM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgayA9IGVbaSArIDE4NjgwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtpICsgMTg2ODAgPj4gMl0gPSAxMDQxNjY2LCBRKGYsIDIsIDIyNDI4LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID4+PiAwIDwgMTA0MTY2NykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgUShmLCAyLCAxOTcyOCwgMCksIGVbaSArIDE4NjgwID4+IDJdID0gMTA0MTY2NjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBrID0gZVtyICsgMjQgPj4gMl0sIEdbaSArIDQ3OTIgPj4gMl0gPSBXKFooWihaKGVbayArIDggPj4gMl0sIGVbciArIDE2ID4+IDJdKSwgZVtrICsgMTIgPj4gMl0pLCBlW2sgKyAyNCA+PiAyXSkgPj4+IDApIC8gVyhaKGVbayArIDQgPj4gMl0sIFooZVtpICsgMTg3MDAgPj4gMl0sIGVbayA+PiAyXSkpIDw8IDMgPj4+IDApLCBYID0gbCArIDQ4IHwgMCwgbyA9IEcyW2kgKyAxODcwNCA+PiAxXSwgbiA9IDAsIHQgPSBYIC0gODAgfCAwLCBYID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW3IgKyAxNiA+PiAyXSwgKGsgfCAwKSA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBlW3IgKyAyNCA+PiAyXSwgbCA9IGVbYSArIDMyID4+IDJdLCBrID0gZVthICsgMjQgPj4gMl0sIGwgfCAoayB8IDApICE9IDEyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbYSArIDg0ID4+IDJdLCBrID0gZVthICsgNzYgPj4gMl0sIGwgfCAoayB8IDApICE9IDEyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVthICsgMTM2ID4+IDJdLCBrID0gZVthICsgMTI4ID4+IDJdLCBsIHwgKGsgfCAwKSAhPSAxMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvIC0gMyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVthICsgMTIgPj4gMl0sIG4gPSBlW2EgKyA4ID4+IDJdLCBrID4+PiAwIDwgMTA4MSAmIG4gPj4+IDAgPD0gMjA0OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0ICsgNCA+PiAyXSA9IGssIGVbdCA+PiAyXSA9IG4sIFEoZiwgMiwgMTU3NjEsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW2EgKyAxMiA+PiAyXSwgbiA9IGVbYSArIDggPj4gMl0sIGsgPj4+IDAgPCAyMTYxICYgbiA+Pj4gMCA8PSA0MDk2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3QgKyAyMCA+PiAyXSA9IGssIGVbdCArIDE2ID4+IDJdID0gbiwgUShmLCAyLCAxNTU5NiwgdCArIDE2IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3QgKyA0OCA+PiAyXSA9IGssIFEoZiwgMiwgMTYxNDksIHQgKyA0OCB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IElbMjM0Nl0gfCBJWzIzNDddIDw8IDggfCAoSVsyMzQ4XSA8PCAxNiB8IElbMjM0OV0gPDwgMjQpLCBGW3QgKyA3NSB8IDBdID0gYSwgRlt0ICsgNzYgfCAwXSA9IGEgPj4+IDgsIEZbdCArIDc3IHwgMF0gPSBhID4+PiAxNiwgRlt0ICsgNzggfCAwXSA9IGEgPj4+IDI0LCBlW3QgKyA3MiA+PiAyXSA9IElbMjM0M10gfCBJWzIzNDRdIDw8IDggfCAoSVsyMzQ1XSA8PCAxNiB8IElbMjM0Nl0gPDwgMjQpLCBGW3QgLSAtNjQgfCAwXSA9IElbMjM0OV0sIGVbdCArIDMyID4+IDJdID0gbiwgZVt0ICsgMzYgPj4gMl0gPSBrLCBlW3QgKyA0MCA+PiAyXSA9IGwgPyB0ICsgNzIgfCAwIDogdCArIDU2IHwgMCwgayA9IElbMjM0NV0gfCBJWzIzNDZdIDw8IDggfCAoSVsyMzQ3XSA8PCAxNiB8IElbMjM0OF0gPDwgMjQpLCBlW3QgKyA1NiA+PiAyXSA9IElbMjM0MV0gfCBJWzIzNDJdIDw8IDggfCAoSVsyMzQzXSA8PCAxNiB8IElbMjM0NF0gPDwgMjQpLCBlW3QgKyA2MCA+PiAyXSA9IGssIFEoZiwgMiwgMTU5MzIsIHQgKyAzMiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoWCA9IHQgKyA4MCB8IDAsICFsKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDEwODc4LCAobiAmIDY1NTM1KSA9PSA3IHx8IChrID0gMTA3NjgsIChuIC0gMjU2ICYgNjU1MzUpID4+PiAwIDwgNTI0KSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIGlmICgobiAtIDEwMjQgJiA2NTUzNSkgPj4+IDAgPD0gMTQzNSkgewogICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA1NTk2ID4+IDJdICE9IDY0IHwgZVtpICsgNTYwMCA+PiAyXSAhPSA2NCB8fCAoZVtpICsgNTU5NiA+PiAyXSA9IDMyLCBlW2kgKyA1NjAwID4+IDJdID0gMzIpLCB0ID0gRzJbaSArIDE4NzA0ID4+IDFdLCB1MltpICsgMTg2ODggPj4gMV0gPSAxNzE1MywgZVtpICsgNDQgPj4gMl0gfHwgKGVbaSArIDQ0ID4+IDJdID0gNCksICh0ICYgNjUwMjQpICE9IDEwMjQgJiAodCAmIDY1MjgwKSAhPSAxNTM2IHx8IChlW2kgKyA1NjA4ID4+IDJdID0gMSksIGsgPSBlW2kgKyA1NTkyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgIT0gNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDYsIGVbciArIDQgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlW2kgPj4gMl0sIGsgPSBlWyhsID8gaSArIDEyIHwgMCA6IHIgKyA4IHwgMCkgPj4gMl0sIG4gPSA2OwogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQgLSAxMDI0ID4+PiA4IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPiAyMDQ3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+IDEwMjMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+IDQwOTUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID4+PiAwID4gMjA0NykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPiAxMDIzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+IDQwOTUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID4+PiAwID4gMjA0NykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPCAxMDI0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbaSArIDU1OTIgPj4gMl0gPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWwgJiYgKGwgPSBlW3IgKyA4ID4+IDJdLCBrID0gbiAtIDEgfCAwLCB0ID0gMSA8PCBrLCBsID4+PiAwIDwgdCA+Pj4gMCB8IHQgPj4+IDAgPiBkW3IgKyAxMiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyA1NTkyID4+IDJdID0gaywgdCA9IG4gLSAyIHwgMCwgbyA9IDEgPDwgdCwgbyA+Pj4gMCA8PSBsID4+PiAwICYgbyA+Pj4gMCA8PSBkW3IgKyAxMiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDU1OTIgPj4gMl0gPSB0LCBrID4+PiAwIDwgMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IG4gLSAzIHwgMCwgbyA9IDEgPDwgaywgIShvID4+PiAwID4gbCA+Pj4gMCB8IG8gPj4+IDAgPiBkW3IgKyAxMiA+PiAyXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDU1OTIgPj4gMl0gPSBrLCB0ID4+PiAwIDwgMiB8fCAodCA9IG4gLSA0IHwgMCwgbyA9IDEgPDwgdCwgbyA+Pj4gMCA8PSBsID4+PiAwICYgbyA+Pj4gMCA8PSBkW3IgKyAxMiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyA1NTkyID4+IDJdID0gdCwgayA+Pj4gMCA8IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBuIC0gNSB8IDAsIG8gPSAxIDw8IGssICEobyA+Pj4gMCA+IGwgPj4+IDAgfCBvID4+PiAwID4gZFtyICsgMTIgPj4gMl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyA1NTkyID4+IDJdID0gaywgdCA+Pj4gMCA8IDIgfHwgKHQgPSBuIC0gNiB8IDAsIG4gPSAxIDw8IHQsIG4gPj4+IDAgPD0gbCA+Pj4gMCAmIG4gPj4+IDAgPD0gZFtyICsgMTIgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA1NTkyID4+IDJdID0gdCwgayA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyA0MCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDQwID4+IDJdID0gMSwgKGsgfCAwKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA1NzU2ID4+IDJdID0gMTI4LCBlW2kgKyA1NjIwID4+IDJdID0gMSwgZVtpICsgNTYyNCA+PiAyXSA9IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gayAtIDEgfCAwLCBlW2kgKyA1NjIwID4+IDJdID0gdSwgKGsgfCAwKSA8IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gaSArIDU3NTYgfCAwLCBvID0gaSArIDU2MjQgfCAwLCBuID0gMCwgayAtIDIgPj4+IDAgPj0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaCA9IHUgJiAtNCwgbCA9IDA7IGsgPSBhIDw8IDIsIGVbayArIG8gPj4gMl0gPSAyNTYsIGVbayArIHQgPj4gMl0gPSAyNTYsIGcgPSBrIHwgNCwgZVtnICsgbyA+PiAyXSA9IDI1NiwgZVt0ICsgZyA+PiAyXSA9IDI1NiwgZyA9IGsgfCA4LCBlW2cgKyBvID4+IDJdID0gMjU2LCBlW3QgKyBnID4+IDJdID0gMjU2LCBrID0gayB8IDEyLCBlW2sgKyBvID4+IDJdID0gMjU2LCBlW2sgKyB0ID4+IDJdID0gMjU2LCBhID0gYSArIDQgfCAwLCBsID0gbCArIDQgfCAwLCAoaCB8IDApICE9IChsIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gdSAmIDMsICFrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbCA9IGEgPDwgMiwgZVtsICsgbyA+PiAyXSA9IDI1NiwgZVt0ICsgbCA+PiAyXSA9IDI1NiwgYSA9IGEgKyAxIHwgMCwgbiA9IG4gKyAxIHwgMCwgKGsgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgayA9IFggLSA0MDAgfCAwLCBYID0gaywgbCA9IGVbKGVbaSA+PiAyXSA/IGkgKyAxMiB8IDAgOiByICsgOCB8IDApID4+IDJdLCB0ID0gZVtpICsgNTU5MiA+PiAyXSwgbyA9IEcyW2kgKyAxODcwNCA+PiAxXSwgbiA9IG8gJiAxNTsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID4+PiAwID49IDEyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDMzNiA+PiAyXSA9IG4sIFEoZiwgMiwgMTEzMDEsIGsgKyAzMzYgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gbyA+Pj4gNCAmIDE1LCBoID0gRzJbKG4gPDwgMSkgKyAzMTMxMiA+PiAxXSwgYSA9IDEsIHUgPj4+IDAgPD0gaCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDM2MCA+PiAyXSA9IHUsIGVbayArIDM1NiA+PiAyXSA9IG4sIGVbayArIDM1MiA+PiAyXSA9IGgsIFEoZiwgMiwgMTExNzcsIGsgKyAzNTIgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbciArIDE2ID4+IDJdLCBuID4+PiAwID49IDQgJiYgKGVbayArIDMyMCA+PiAyXSA9IG4sIFEoZiwgMiwgMTIyNjksIGsgKyAzMjAgfCAwKSwgYSA9IDApLCB1ID0gZVtyICsgNCA+PiAyXSwgaCA9IGVbciA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAodSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDEsICF1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAzMDggPj4gMl0gPSBuLCBlW2sgKyAzMDQgPj4gMl0gPSBoLCBRKGYsIDIsIDExNTIxLCBrICsgMzA0IHwgMCksIGEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlW2kgKyA0ID4+IDJdLCB1ID0gZVtpICsgOCA+PiAyXSwgbiB8IHUgJiYgKGVbayArIDI5MiA+PiAyXSA9IHUsIGVbayArIDI4OCA+PiAyXSA9IG4sIFEoZiwgMiwgMTE0MDcsIGsgKyAyODggfCAwKSwgYSA9IDApLCBoID0gbyAmIDY1MjgwOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW2kgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW3IgKyA4ID4+IDJdLCBuID0gZVtpICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKG8gJiA2NTAyNCkgIT0gMTAyNCAmIChoIHwgMCkgIT0gMTUzNikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBlW3IgKyAxMiA+PiAyXSwgdiA9IGVbaSArIDE2ID4+IDJdLCBnID4+PiAwIDw9IHYgPj4+IDAgJiBuID4+PiAwID49IHUgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMjY4ID4+IDJdID0gZywgZVtrICsgMjY0ID4+IDJdID0gdSwgZVtrICsgMjYwID4+IDJdID0gdiwgZVtrICsgMjU2ID4+IDJdID0gbiwgUShmLCAyLCAxMjQxNCwgayArIDI1NiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPj4+IDAgPj0gdSA+Pj4gMCAmIGRbaSArIDE2ID4+IDJdID49IGRbciArIDEyID4+IDJdIHx8ICh1ID0gZVtpICsgMTYgPj4gMl0sIChuIHwgMCkgPT0gMTAyNCAmICh1IHwgMCkgPT0gMTAyNCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAyNzYgPj4gMl0gPSB1LCBlW2sgKyAyNzIgPj4gMl0gPSBuLCBRKGYsIDIsIDEwOTMzLCBrICsgMjcyIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlW3IgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gMDsgdSA9IGVbciArIDI0ID4+IDJdICsgWihnLCA1MikgfCAwLCBlW3UgKyAyNCA+PiAyXSAtIDggPj4+IDAgPD0gOCAmICFlW3UgKyAzMiA+PiAyXSB8fCAoYSA9IDAsIG4gPSBJWzIzNDZdIHwgSVsyMzQ3XSA8PCA4IHwgKElbMjM0OF0gPDwgMTYgfCBJWzIzNDldIDw8IDI0KSwgRltrICsgMzk1IHwgMF0gPSBuLCBGW2sgKyAzOTYgfCAwXSA9IG4gPj4+IDgsIEZbayArIDM5NyB8IDBdID0gbiA+Pj4gMTYsIEZbayArIDM5OCB8IDBdID0gbiA+Pj4gMjQsIGVbayArIDM5MiA+PiAyXSA9IElbMjM0M10gfCBJWzIzNDRdIDw8IDggfCAoSVsyMzQ1XSA8PCAxNiB8IElbMjM0Nl0gPDwgMjQpLCBGW2sgKyAzODQgfCAwXSA9IElbMjM0OV0sIG4gPSBJWzIzNDVdIHwgSVsyMzQ2XSA8PCA4IHwgKElbMjM0N10gPDwgMTYgfCBJWzIzNDhdIDw8IDI0KSwgZVtrICsgMzc2ID4+IDJdID0gSVsyMzQxXSB8IElbMjM0Ml0gPDwgOCB8IChJWzIzNDNdIDw8IDE2IHwgSVsyMzQ0XSA8PCAyNCksIGVbayArIDM4MCA+PiAyXSA9IG4sIG4gPSBlW3UgKyAzMiA+PiAyXSwgZVtrICsgMjQ0ID4+IDJdID0gZVt1ICsgMjQgPj4gMl0sIGVbayArIDI0MCA+PiAyXSA9IGcsIGVbayArIDI0OCA+PiAyXSA9IG4gPyBrICsgMzkyIHwgMCA6IGsgKyAzNzYgfCAwLCBRKGYsIDIsIDEyMDgwLCBrICsgMjQwIHwgMCksIG4gPSBlW3IgKyAxNiA+PiAyXSksIGcgPSBnICsgMSB8IDAsIGcgPj4+IDAgPCBuID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuIHx8IChuID0gZVtlW3IgKyAyNCA+PiAyXSA+PiAyXSwgKG4gfCAwKSAhPSAxICYmIChlW2sgKyAyMjQgPj4gMl0gPSBuLCBRKGYsIDIsIDE1MTA5LCBrICsgMjI0IHwgMCksIGEgPSAwKSwgbiA9IGVbZVtyICsgMjQgPj4gMl0gKyA0ID4+IDJdLCAobiB8IDApICE9IDEgJiYgKGVbayArIDIxMiA+PiAyXSA9IDAsIGVbayArIDIwOCA+PiAyXSA9IG4sIFEoZiwgMiwgMTMyNzMsIGsgKyAyMDggfCAwKSwgYSA9IDApLCBkW3IgKyAxNiA+PiAyXSA8IDIpIHx8IChuID0gZVtlW3IgKyAyNCA+PiAyXSArIDUyID4+IDJdLCBuIC0gMSA+Pj4gMCA+PSAyICYmIChlW2sgKyAxOTIgPj4gMl0gPSBuLCBRKGYsIDIsIDE1MDA3LCBrICsgMTkyIHwgMCksIGEgPSAwKSwgbiA9IGVbZVtyICsgMjQgPj4gMl0gKyA1NiA+PiAyXSwgKG4gfCAwKSAhPSAxICYmIChlW2sgKyAxODAgPj4gMl0gPSAxLCBlW2sgKyAxNzYgPj4gMl0gPSBuLCBRKGYsIDIsIDEzMjczLCBrICsgMTc2IHwgMCksIGEgPSAwKSwgZyA9IDIsIGRbciArIDE2ID4+IDJdIDw9IDIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbiA9IFooZywgNTIpLCB1ID0gbiArIGVbciArIDI0ID4+IDJdIHwgMCwgdiA9IGVbdSA+PiAyXSwgdSA9IGVbdSAtIDUyID4+IDJdLCAodiB8IDApICE9ICh1IHwgMCkgJiYgKGVbayArIDE2OCA+PiAyXSA9IHUsIGVbayArIDE2NCA+PiAyXSA9IHYsIGVbayArIDE2MCA+PiAyXSA9IGcgKyAxLCBRKGYsIDIsIDE1MzUzLCBrICsgMTYwIHwgMCksIGEgPSAwKSwgbiA9IGVbKG4gKyBlW3IgKyAyNCA+PiAyXSB8IDApICsgNCA+PiAyXSwgKG4gfCAwKSAhPSAxICYmIChlW2sgKyAxNDggPj4gMl0gPSBnLCBlW2sgKyAxNDQgPj4gMl0gPSBuLCBRKGYsIDIsIDEzMjczLCBrICsgMTQ0IHwgMCksIGEgPSAwKSwgZyA9IGcgKyAxIHwgMCwgZyA+Pj4gMCA8IGRbciArIDE2ID4+IDJdOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8gLSAxMDI0ID4+PiA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID4+PiAwID4gNSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IDEgPDwgbiwgISh1ICYgOSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHUgJiAxOCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbciArIDI0ID4+IDJdLCBnID0gZVt1ICsgMTIgPj4gMl0sIHUgPSBlW3UgKyA4ID4+IDJdLCBnID4+PiAwIDwgMzExMyAmIHUgPj4+IDAgPD0gNDA5NikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDExNiA+PiAyXSA9IGcsIGVbayArIDExMiA+PiAyXSA9IHUsIFEoZiwgMiwgMTE5MzIsIGsgKyAxMTIgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gZVtyICsgMjQgPj4gMl0sIGcgPSBlW3UgKyAxMiA+PiAyXSwgdSA9IGVbdSArIDggPj4gMl0sIGcgPj4+IDAgPCAxNTU3ICYgdSA+Pj4gMCA8PSAyMDQ4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMDAgPj4gMl0gPSBnLCBlW2sgKyA5NiA+PiAyXSA9IHUsIFEoZiwgMiwgMTE2MzYsIGsgKyA5NiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW3IgKyAyNCA+PiAyXSwgZyA9IGVbdSArIDEyID4+IDJdLCB1ID0gZVt1ICsgOCA+PiAyXSwgZyA+Pj4gMCA8IDYyMjUgJiB1ID4+PiAwIDw9IDgxOTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTMyID4+IDJdID0gZywgZVtrICsgMTI4ID4+IDJdID0gdSwgUShmLCAyLCAxMTc4NCwgayArIDEyOCB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVbaSArIDU2MTIgPj4gMl0gIT0gLTEgJiYgKFEoZiwgMiwgMTI1NzAsIDApLCBhID0gMCksIHUgPSBlW2kgKyA1NTk2ID4+IDJdLCBnID0gZVtpICsgNTYwMCA+PiAyXSwgKHUgfCAwKSA9PSAzMiAmIChnIHwgMCkgPT0gMzIgfHwgKGVbayArIDg0ID4+IDJdID0gZywgZVtrICsgODAgPj4gMl0gPSB1LCBRKGYsIDIsIDEzMTQwLCBrICsgODAgfCAwKSwgYSA9IDApLCB1ID0gZVtpICsgNDQgPj4gMl0sICh1IHwgMCkgIT0gNCAmJiAoZVtrICsgNjQgPj4gMl0gPSB1LCBRKGYsIDIsIDE0ODc2LCBrIC0gLTY0IHwgMCksIGEgPSAwKSwgdSA9IGVbaSArIDQ3ODQgPj4gMl0sIHUgJiYgKGVbayArIDQ4ID4+IDJdID0gdSwgUShmLCAyLCAxNTQ4NSwgayArIDQ4IHwgMCksIGEgPSAwKSwgdSA9IGVbaSArIDU2MDQgPj4gMl0sIHUgJiYgKGVbayArIDMyID4+IDJdID0gdSwgUShmLCAyLCAxNTIwNiwgayArIDMyIHwgMCksIGEgPSAwKSwgdSA9IGVbaSArIDU2MDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgobyAmIDY1MDI0KSAhPSAxMDI0ICYgKGggfCAwKSAhPSAxNTM2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodSB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxMjk5MzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMTI4NDY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMCwgUShmLCAyLCBvLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbaSArIDQ3ODggPj4gMl0sIChvIHwgMCkgIT0gMSAmJiAoZVtrICsgMTYgPj4gMl0gPSBvLCBRKGYsIDIsIDEzMzg2LCBrICsgMTYgfCAwKSwgYSA9IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4gLSAxIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0IC0gMiA+Pj4gMCA8IDUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAxNDYxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgLSAyID4+PiAwIDwgNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDE0NDk2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAtIDIgPj4+IDAgPCA3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMTQyMzY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID4+PiAwID49IDIwNDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0IC0gMiA+Pj4gMCA8IDUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMTQwOTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA8IDEwMjQgfCB0IC0gMiA+Pj4gMCA8IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAxMzY1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPj4+IDAgPj0gNDA5NikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgLSAyID4+PiAwIDwgNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAxNDM1NjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID4+PiAwID49IDIwNDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0IC0gMiA+Pj4gMCA8IDUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMTM4MDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA8IDEwMjQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0IC0gMiA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA+PSA4MTkyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAtIDIgPj4+IDAgPCA3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDE0NzM2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPj4+IDAgPj0gNDA5NikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgLSAyID4+PiAwIDwgNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAxMzk0OTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID4+PiAwID49IDIwNDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0IC0gMiA+Pj4gMCA8IDUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMTM4MDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA8IDEwMjQgfCB0IC0gMiA+Pj4gMCA8IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAxMzUwODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IHQgLSAxLCBRKGYsIDIsIG4sIGspLCBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2kgKyA1NjIwID4+IDJdLCBlW2kgKyA1NTkyID4+IDJdICE9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBpICsgNTc1NiB8IDAsIG4gPSBpICsgNTYyNCB8IDAsIGcgPSAwOyBvID0gZyA8PCAyLCBlW28gKyBuID4+IDJdID09IDI1NiAmIGVbdCArIG8gPj4gMl0gPT0gMjU2IHx8IChhID0gMCwgUShmLCAyLCAxMjcwMywgMCksIGwgPSBlW2kgKyA1NjIwID4+IDJdKSwgZyA9IGcgKyAxIHwgMCwgKGcgfCAwKSA8IChsIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKGwgfCAwKSAhPSAxIHwgZVtpICsgNTYyNCA+PiAyXSAhPSAxMjgpICYgZVtpICsgNTc1NiA+PiAyXSA9PSAxMjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwLCBRKGYsIDIsIDEyNzAzLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoWCA9IGsgKyA0MDAgfCAwLCAhYSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPDwgMTYgPj4gMTYgPj0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gbiAmIDY1NTM1LCBrID0gMjM1NjksICh0IHwgMCkgPT0gMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSA9PSAzMzAyNCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGsgPSAyMzUxMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgUShmLCAyLCBrLCAwKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB1MltpICsgMTg3MDQgPj4gMV0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVtBICsgMTYwID4+IDJdID0gZVtpICsgMTg2ODAgPj4gMl0sIHUyW0EgKyA4MCA+PiAxXSA9IEcyW2kgKyAxODcwNCA+PiAxXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDI0ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgZVtBICsgMTc2ID4+IDJdID0gMjsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyAyOCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgIGVbQSArIDE3NiA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW0EgKyAxNzYgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbaSArIDI0ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgIGlmICh0ID0gWihaKGVbaSArIDQ3ODggPj4gMl0sIGVbaSArIDU1OTIgPj4gMl0pLCAxMiksIGsgPSBVMih0KSwgZVtBICsgMTY4ID4+IDJdID0gaywgIWspIHsKICAgICAgICAgICAgICAgICAgICBuID0gMCwgUShmLCAxLCAyNzcxOCwgMCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBGMihrLCBlW2kgKyAzMiA+PiAyXSwgdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW0EgKyA5MiA+PiAyXSA9IGVbaSArIDEyID4+IDJdLCBlW0EgKyA5NiA+PiAyXSA9IGVbaSArIDE2ID4+IDJdLCBlW0EgKyA4NCA+PiAyXSA9IGVbaSArIDQgPj4gMl0sIGVbQSArIDg4ID4+IDJdID0gZVtpICsgOCA+PiAyXSwgayA9IGVbaSArIDM2ID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoaykgewogICAgICAgICAgICAgICAgICAgIGlmIChrID0gVTIodWUoaykgKyAxIHwgMCksIGVbQSArIDEwMCA+PiAyXSA9IGssICFrKSB7CiAgICAgICAgICAgICAgICAgICAgICBuID0gMCwgUShmLCAxLCA5NDc3LCAwKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQgPSBlW2kgKyAzNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodCBeIGspICYgMykgewogICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBJW3QgfCAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ICYgMykKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gSVt0IHwgMF0sIEZbayB8IDBdID0gbiwgIW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGsgKyAxIHwgMCwgdCA9IHQgKyAxIHwgMCwgISh0ICYgMykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW3QgPj4gMl0sICgobiB8IDE2ODQzMDA4IC0gbikgJiAtMjEzOTA2MjE0NCkgIT0gLTIxMzkwNjIxNDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbayA+PiAyXSA9IG4sIGsgPSBrICsgNCB8IDAsIG4gPSBlW3QgKyA0ID4+IDJdLCB0ID0gdCArIDQgfCAwLCAoKDE2ODQzMDA4IC0gbiB8IG4pICYgLTIxMzkwNjIxNDQpID09IC0yMTM5MDYyMTQ0OyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKEZbayB8IDBdID0gbiwgIShuICYgMjU1KSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBuID0gSVt0ICsgMSB8IDBdLCBGW2sgKyAxIHwgMF0gPSBuLCBrID0gayArIDEgfCAwLCB0ID0gdCArIDEgfCAwLCAhIW47ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChuID0gMCwgayA9IElbMzExOTNdIHwgSVszMTE5NF0gPDwgOCB8IChJWzMxMTk1XSA8PCAxNiB8IElbMzExOTZdIDw8IDI0KSwgdCA9IElbMzExODldIHwgSVszMTE5MF0gPDwgOCB8IChJWzMxMTkxXSA8PCAxNiB8IElbMzExOTJdIDw8IDI0KSwgRltzICsgMzg5IHwgMF0gPSB0LCBGW3MgKyAzOTAgfCAwXSA9IHQgPj4+IDgsIEZbcyArIDM5MSB8IDBdID0gdCA+Pj4gMTYsIEZbcyArIDM5MiB8IDBdID0gdCA+Pj4gMjQsIEZbcyArIDM5MyB8IDBdID0gaywgRltzICsgMzk0IHwgMF0gPSBrID4+PiA4LCBGW3MgKyAzOTUgfCAwXSA9IGsgPj4+IDE2LCBGW3MgKyAzOTYgfCAwXSA9IGsgPj4+IDI0LCBrID0gZVs3Nzk3XSwgZVtzICsgMzg0ID4+IDJdID0gZVs3Nzk2XSwgZVtzICsgMzg4ID4+IDJdID0gaywgayA9IGVbNzc5NV0sIGVbcyArIDM3NiA+PiAyXSA9IGVbNzc5NF0sIGVbcyArIDM4MCA+PiAyXSA9IGssIGsgPSBlWzc3OTNdLCBlW3MgKyAzNjggPj4gMl0gPSBlWzc3OTJdLCBlW3MgKyAzNzIgPj4gMl0gPSBrLCB0ID0gVTIodWUoMzIzMykgKyAyOSB8IDApLCBlW0EgKyAxMDAgPj4gMl0gPSB0LCAhdCkgewogICAgICAgICAgICAgICAgICAgIFEoZiwgMSwgOTUzMSwgMCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW3MgKyA4NCA+PiAyXSA9IDMyMzMsIGVbcyArIDgwID4+IDJdID0gcyArIDM2OCwgbiA9IFggLSAxNiB8IDAsIFggPSBuLCBsID0gcyArIDgwIHwgMCwgZVtuICsgMTIgPj4gMl0gPSBsLCBrID0gWCAtIDE2MCB8IDAsIFggPSBrLCBhID0gayArIDggfCAwLCBGMihhLCA0ODM4NCwgMTQ0KSwgZVtrICsgNTIgPj4gMl0gPSB0LCBlW2sgKyAyOCA+PiAyXSA9IHQsIG8gPSAtMiAtIHQgfCAwLCBvID0gbyA+Pj4gMCA+IDIxNDc0ODM2NDcgPyAyMTQ3NDgzNjQ3IDogbywgZVtrICsgNTYgPj4gMl0gPSBvLCBvID0gdCArIG8gfCAwLCBlW2sgKyAzNiA+PiAyXSA9IG8sIGVbayArIDI0ID4+IDJdID0gbywgSWkoYSwgMTM3NywgbCwgMCwgMCksICh0IHwgMCkgIT0gLTIgJiYgKHQgPSBlW2sgKyAyOCA+PiAyXSwgRlt0IC0gKCh0IHwgMCkgPT0gZVtrICsgMjQgPj4gMl0pIHwgMF0gPSAwKSwgWCA9IGsgKyAxNjAgfCAwLCBYID0gbiArIDE2IHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGVbaSA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVtBICsgOTIgPj4gMl0sICFrKSB7CiAgICAgICAgICAgICAgICAgICAgICBuID0gMCwgUShmLCAxLCA5NDEzLCAwKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtBICsgOTYgPj4gMl0sICF0KSB7CiAgICAgICAgICAgICAgICAgICAgICBuID0gMCwgUShmLCAxLCA0NzQwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtyICsgOCA+PiAyXSAtIGVbQSArIDg0ID4+IDJdIHwgMCwgYSA9IGwsIG4gPSBsICsgayB8IDAsIG8gPSBrID4+IDMxLCBsID0gbyArIChsID4+IDMxKSB8IDAsIGwgPSBuID4+PiAwIDwgYSA+Pj4gMCA/IGwgKyAxIHwgMCA6IGwsIGsgPSB6MChuIC0gMSB8IDAsIGwgLSAhbiB8IDAsIGssIG8pLCBlW0EgKyAxMDQgPj4gMl0gPSBrLCBsID0gZVtyICsgMTIgPj4gMl0gLSBlW0EgKyA4OCA+PiAyXSB8IDAsIGEgPSBsLCBuID0gbCArIHQgfCAwLCBvID0gdCA+PiAzMSwgbCA9IG8gKyAobCA+PiAzMSkgfCAwLCBsID0gbiA+Pj4gMCA8IGEgPj4+IDAgPyBsICsgMSB8IDAgOiBsLCB0ID0gejAobiAtIDEgfCAwLCBsIC0gIW4gfCAwLCB0LCBvKSwgZVtBICsgMTA4ID4+IDJdID0gdCwgayA+Pj4gMCA8PSA2NTUzNSAvICh0ID4+PiAwKSA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgZVtzICsgNjggPj4gMl0gPSB0LCBlW3MgKyA2NCA+PiAyXSA9IGssIFEoZiwgMSwgMjU0NzUsIHMgLSAtNjQgfCAwKSwgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW0EgKyA5MiA+PiAyXSA9IGVbciArIDggPj4gMl0gLSBlW0EgKyA4NCA+PiAyXSwgZVtBICsgOTYgPj4gMl0gPSBlW3IgKyAxMiA+PiAyXSAtIGVbQSArIDg4ID4+IDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKElbaSArIDE4Njg4IHwgMF0gJiYgKEZbQSArIDE3MiB8IDBdID0gSVtpICsgMTg2ODkgfCAwXSwgRltBICsgMTgwIHwgMF0gPSBJW0EgKyAxODAgfCAwXSB8IDEpLCBrID0gRTIoWihlW0EgKyAxMDggPj4gMl0sIGVbQSArIDEwNCA+PiAyXSksIDU2NDQpLCBlW0EgKyAxNTYgPj4gMl0gPSBrLCBrKSB7CiAgICAgICAgICAgICAgICAgIGlmIChaKGVbQSArIDEwOCA+PiAyXSwgZVtBICsgMTA0ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICBmb3IgKFkyID0gaSArIDU3NTYgfCAwLCBYMiA9IGkgKyA1NjI0IHwgMCwgUzIgPSBpICsgOTYgfCAwLCBEMiA9IGkgKyA0OCB8IDAsIFAyID0gaSArIDUxOTIgfCAwLCB4MiA9IGkgKyA0NzkyIHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtBICsgMTc2ID4+IDJdLCB3ID0gZVtBICsgMTU2ID4+IDJdICsgWihmMiwgNTY0NCkgfCAwLCBvID0gZVtpICsgNDc4OCA+PiAyXSwgZVt3ICsgOCA+PiAyXSA9IG8sIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IEcyW0EgKyA4MCA+PiAxXSwgdSA9IChrIC0gMyAmIDY1NTM1KSA+Pj4gMCA8IDQgfCAoayAtIDEwMjQgJiA2NTUzNSkgPj4+IDAgPCAxNDM2LCBsID0gdyArIDUxODQgfCAwLCB0ID0gdyArIDIwIHwgMCwgbiA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbiA8PCAyLCBHW2sgKyBsID4+IDJdID0gR1trICsgUDIgPj4gMl0sIGcgPSA0NzkyLCBrID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gNTE5MiwgayA9IGwsIChhIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBuIDw8IDIsIG0gPSBHW2sgKyB4MiA+PiAyXSwgR1trICsgdCA+PiAyXSA9IG0sIEIgPSBXKDApLCBrID0gdCwgIShtIDw9IFcoMSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSBHWyhpICsgZyB8IDApICsgKG4gPDwgMikgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHWyhuIDw8IDIpICsgayA+PiAyXSA9IEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbiArIDEgfCAwLCAobyB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZVt3ID4+IDJdID0gZVtpICsgNDAgPj4gMl0sIGVbdyArIDQgPj4gMl0gPSBlW2kgKyA0NCA+PiAyXSwgZVt3ICsgMTYgPj4gMl0gPSBGW2kgKyAxODY5MCB8IDBdLCBGW3cgKyA1NjQwIHwgMF0gPSBJW3cgKyA1NjQwIHwgMF0gJiAyNTE7CiAgICAgICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSBlW2kgKyA0Nzg0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IHcgKyA0MjQgfCAwLCBvID0gZjIgKyAxIHwgMCwgYSA9IDAsIGcgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG8gfCAwKSA9PSBlW1ooYSwgMTQ4KSArIFMyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBaKGcsIDE0OCksIGsgPSB0ICsgRDIgfCAwLCB1ID0gZVtrICsgNCA+PiAyXSwgbiA9IGVbciArIDE2ID4+IDJdLCB1ID4+PiAwID49IG4gPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlW2sgPj4gMl0sIHQgPSB0ICsgbCB8IDAsIGVbdCArIDQgPj4gMl0gPSB1LCBlW3QgPj4gMl0gPSBoLCBlW3QgKyA4ID4+IDJdID0gZVtrICsgOCA+PiAyXSwgZVt0ICsgMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSwgdSA9IGVbayArIDE2ID4+IDJdLCBlW3QgKyAxNiA+PiAyXSA9IG4gPj4+IDAgPiB1ID4+PiAwID8gdSA6IG4sIGVbdCArIDMyID4+IDJdID0gZVtrICsgMzIgPj4gMl0sIGVbdCArIDQ4ID4+IDJdID0gZVtrICsgNDggPj4gMl0sIGcgPSBnICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhICsgMSB8IDAsIChFIHwgMCkgPT0gKGEgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAwLCBKID0gZVtpICsgNDc4OCA+PiAyXSwgcCA9IGVbaSArIDU1OTIgPj4gMl0sIHUgPSBlW3IgKyAxNiA+PiAyXSwgaiA9IFoocCwgdSksIGMgPSBFMihaKEosIGopLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoeCA9IGYyICsgMSB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBaKGssIDE0OCkgKyBEMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHggfCAwKSAhPSBlW3YgKyA0OCA+PiAyXSB8fCAobyA9IGVbdiA+PiAyXSwgdCA9IGVbdiArIDEyID4+IDJdLCBvID4+PiAwID49ICh0ID4+PiAwIDwgcCA+Pj4gMCA/IHQgOiBwKSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IFoodSwgbyksIEggPSBlW3YgKyAxNiA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gZVt2ICsgNCA+PiAyXSwgbiA+Pj4gMCA8ICh1ID4+PiAwID4gSCA+Pj4gMCA/IEggOiB1KSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBuICsgYSB8IDAsIGggPSBlW3YgKyA4ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDID0gMCwgdCA9IGwsIGwgPSB0ICsgMSB8IDAsIGggPj4+IDAgPCBKID4+PiAwID8gaCA6IEopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2MgKyAodCA8PCAyKSA+PiAyXSA9IDEsIHQgPSB0ICsgaiB8IDAsIEMgPSBDICsgMSB8IDAsIGggPSBlW3YgKyA4ID4+IDJdLCBDID4+PiAwIDwgKGggPj4+IDAgPCBKID4+PiAwID8gaCA6IEopID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSBlW3YgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgMSB8IDAsICEobiA+Pj4gMCA8ICh1ID4+PiAwID4gSCA+Pj4gMCA/IEggOiB1KSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZVt2ICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgKyB1IHwgMCwgbyA9IG8gKyAxIHwgMCwgIShvID4+PiAwIDwgKHQgPj4+IDAgPCBwID4+PiAwID8gdCA6IHApID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gayArIDEgfCAwLCAoRSB8IDApID09IChrIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1IHwgKCFKIHwgIXApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2ID0gYyArIDEyIHwgMCwgRSA9IGMgKyA4IHwgMCwgeCA9IGMgKyA0IHwgMCwgVSA9IHUgJiAtNCwgYSA9IHUgJiAzLCBuID0gMCwgUCA9IHUgLSAxID4+PiAwIDwgMywgaCA9IDAsIEggPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGsgPSBuLCBvID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQyA9IDAsIHQgPSBrLCAhUCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gdCA8PCAyLCBoID0gZVtsICsgYyA+PiAyXSAhPSAxIHwgaCB8IGVbbCArIHggPj4gMl0gIT0gMSB8IGVbbCArIEUgPj4gMl0gIT0gMSB8IGVbbCArIHYgPj4gMl0gIT0gMSwgdCA9IHQgKyA0IHwgMCwgQyA9IEMgKyA0IHwgMCwgKFUgfCAwKSAhPSAoQyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQyA9IDAsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgaCA9IGVbYyArICh0IDw8IDIpID4+IDJdICE9IDEgfCBoLCB0ID0gdCArIDEgfCAwLCBDID0gQyArIDEgfCAwLCAoYSB8IDApICE9IChDIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gayArIHUgfCAwLCBvID0gbyArIDEgfCAwLCAocCB8IDApID09IChvIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IG4gKyBqIHwgMCwgSCA9IEggKyAxIHwgMCwgKEogfCAwKSA9PSAoSCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShmLCAxLCAxODAzNiwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIoYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDE5NjgwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZbdyArIDU2NDAgfCAwXSA9IElbdyArIDU2NDAgfCAwXSB8IDQsIGsgPSBnIC0gMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3cgKyA0MjAgPj4gMl0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gRTIoZVtyICsgMTYgPj4gMl0sIDEwODApLCBlW3cgKyA1NTg0ID4+IDJdID0gaywgIWspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMCwgUShmLCAxLCA1MTcwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyAxODY5NiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVtyICsgMTYgPj4gMl0sIHEgPSBaKGssIGspIDw8IDIsIGsgPSBVMihxKSwgIWspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwLCBRKGYsIDEsIDgwMDEsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHoyID0gZVtpICsgMTg2OTYgPj4gMl0sIGVbdyArIDE2ID4+IDJdID0gMiwgdCA9IFUyKHEpLCBlW3cgKyA1NjEyID4+IDJdID0gdCwgIXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIoayksIG4gPSAwLCBRKGYsIDEsIDI3ODk4LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGMih0LCBlW2kgKyAxODY5NiA+PiAyXSwgcSksIGcgPSBGMihrLCBlW2kgKyAxODY5NiA+PiAyXSwgcSksIEggPSBVMihxKSwgZVt3ICsgNTYwOCA+PiAyXSA9IEgsICFIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGcpLCBuID0gMCwgUShmLCAxLCAyNzc5MCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IDAsIGggPSAwLCBvID0gMCwgRSA9IDAsIHcyID0gMCwgcCA9IDAsIGMgPSBlW3IgKyAxNiA+PiAyXSwgayA9IFUyKGMgPDwgNCksIGspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEogPSBjIC0gMSB8IDAsIFUgPSBjIDw8IDIsIHUgPSBkMihrLCAwLCBVKSwgYzIgPSB1ICsgVSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB1LCBKID4+PiAwID49IDcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IGMgJiAtODsgZVt0ID4+IDJdID0gbCwgZVt0ICsgMjggPj4gMl0gPSBsIHwgNywgZVt0ICsgMjQgPj4gMl0gPSBsIHwgNiwgZVt0ICsgMjAgPj4gMl0gPSBsIHwgNSwgZVt0ICsgMTYgPj4gMl0gPSBsIHwgNCwgZVt0ICsgMTIgPj4gMl0gPSBsIHwgMywgZVt0ICsgOCA+PiAyXSA9IGwgfCAyLCBlW3QgKyA0ID4+IDJdID0gbCB8IDEsIGwgPSBsICsgOCB8IDAsIHQgPSB0ICsgMzIgfCAwLCBoID0gaCArIDggfCAwLCAoayB8IDApICE9IChoIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGMgJiA3LCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGggPSAwOyBlW3QgPj4gMl0gPSBsLCBsID0gbCArIDEgfCAwLCB0ID0gdCArIDQgfCAwLCBoID0gaCArIDEgfCAwLCAoayB8IDApICE9IChoIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoeiA9IGMgLSAyIHwgMCwgdiA9IEosIGsgPSAxLCBhID0gZywgQyA9IHU7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG8gfCAwKSA9PSAoYyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG8gPDwgMiwgbiA9IGogKyBhIHwgMCwgQiA9IFcoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGMgLSBvICYgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbywgdCA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0gR1tuID4+IDJdLCBCID0gQiA+IFcoMCkgPyBCIDogVygtQiksIHQgPSBCID4gVygwKSwgQiA9IHQgPyBCIDogVygwKSwgRSA9IHQgPyBvIDogRSwgbCA9IG8gKyAxIHwgMCwgdCA9IG4gKyBVIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobyB8IDApICE9IChKIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBtID0gR1t0ID4+IDJdLCBPID0gbSA+IFcoMCkgPyBtIDogVygtbSksIGggPSBPID4gQiwgeCA9IHQgKyBVIHwgMCwgbSA9IEdbeCA+PiAyXSwgbSA9IG0gPiBXKDApID8gbSA6IFcoLW0pLCBCID0gaCA/IE8gOiBCLCB0ID0gbSA+IEIsIEIgPSB0ID8gbSA6IEIsIEUgPSB0ID8gbCArIDEgfCAwIDogaCA/IGwgOiBFLCB0ID0gVSArIHggfCAwLCBsID0gbCArIDIgfCAwLCAoYyB8IDApICE9IChsIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9PSBXKDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvIHwgMCkgIT0gKEUgfCAwKSAmJiAodCA9IGVbQyA+PiAyXSwgbCA9ICgoRSA8PCAyKSArIEMgfCAwKSAtIGogfCAwLCBlW0MgPj4gMl0gPSBlW2wgPj4gMl0sIGVbbCA+PiAyXSA9IHQsIHQgPSAoWihjLCBFIC0gbyB8IDApIDw8IDIpICsgYSB8IDAsIGwgPSBGMihjMiwgdCwgVSksIEYyKHQsIGEsIFUpLCBGMihhLCBsLCBVKSksIGsgPj4+IDAgPCBjID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG0gPSBHW24gPj4gMl0sIHggPSBKIC0gbyAmIDMsIHQgPSBuICsgNCB8IDAsIGwgPSBuICsgVSB8IDAsIG4yID0geiAtIG8gPj4+IDAgPCAzLCBtMiA9IDAgLSB2IDw8IDIsIG4gPSBrOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gVyhHW2wgPj4gMl0gLyBtKSwgR1tsID4+IDJdID0gQiwgbCA9IGwgKyA0IHwgMCwgQiA9IFcoLUIpLCBQID0gMCwgaCA9IGssIHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgR1tsID4+IDJdID0gVyhCICogR1t0ID4+IDJdKSArIEdbbCA+PiAyXSwgbCA9IGwgKyA0IHwgMCwgaCA9IGggKyAxIHwgMCwgdCA9IHQgKyA0IHwgMCwgUCA9IFAgKyAxIHwgMCwgKHggfCAwKSAhPSAoUCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4yKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEdbbCA+PiAyXSA9IFcoQiAqIEdbdCA+PiAyXSkgKyBHW2wgPj4gMl0sIEdbbCArIDQgPj4gMl0gPSBXKEIgKiBHW3QgKyA0ID4+IDJdKSArIEdbbCArIDQgPj4gMl0sIEdbbCArIDggPj4gMl0gPSBXKEIgKiBHW3QgKyA4ID4+IDJdKSArIEdbbCArIDggPj4gMl0sIEdbbCArIDEyID4+IDJdID0gVyhCICogR1t0ICsgMTIgPj4gMl0pICsgR1tsICsgMTIgPj4gMl0sIGwgPSBsICsgMTYgfCAwLCB0ID0gdCArIDE2IHwgMCwgaCA9IGggKyA0IHwgMCwgKGMgfCAwKSAhPSAoaCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgKyBqIHwgMCwgdCA9IHQgKyBtMiB8IDAsIG4gPSBuICsgMSB8IDAsIChjIHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQyA9IEMgKyA0IHwgMCwgdiA9IHYgLSAxIHwgMCwgayA9IGsgKyAxIHwgMCwgYSA9IGEgKyBVIHwgMCwgbyA9IG8gKyAxIHwgMCwgKEogfCAwKSA9PSAobyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gKGMgPDwgMykgKyBjMiB8IDAsIHogPSBjIDw8IDIsIEUgPSBDICsgeiB8IDAsIG4yID0geiArIGMyIHwgMCwgaiA9IG4yICsgeiB8IDAsIEwyID0gYyAmIC00LCBtMiA9IGMgJiAzLCB4ID0gKGcgKyAoWihjLCBjKSA8PCAyKSB8IDApIC0gNCB8IDAsIGUwID0gKGMgXiAtMSkgPDwgMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHYgPSBkMihjMiwgMCwgVSksIGVbdiArICh3MiA8PCAyKSA+PiAyXSA9IDEwNjUzNTMyMTYsIG4gPSB1LCBvID0gZywgayA9IEMsIGEgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0gVygwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gVygwKSwgbCA9IG8sIHQgPSBDLCBhID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwID0gYSAmIC00LCBoID0gMDsgQiA9IFcoVyhHW2wgKyAxMiA+PiAyXSAqIEdbdCArIDEyID4+IDJdKSArIFcoVyhHW2wgKyA4ID4+IDJdICogR1t0ICsgOCA+PiAyXSkgKyBXKFcoR1tsICsgNCA+PiAyXSAqIEdbdCArIDQgPj4gMl0pICsgVyhXKEdbbCA+PiAyXSAqIEdbdCA+PiAyXSkgKyBCKSkpKSwgdCA9IHQgKyAxNiB8IDAsIGwgPSBsICsgMTYgfCAwLCBoID0gaCArIDQgfCAwLCAocCB8IDApICE9IChoIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSAwLCBwID0gYSAmIDMsICFwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBCID0gVyhXKEdbbCA+PiAyXSAqIEdbdCA+PiAyXSkgKyBCKSwgbCA9IGwgKyA0IHwgMCwgdCA9IHQgKyA0IHwgMCwgaCA9IGggKyAxIHwgMCwgKHAgfCAwKSAhPSAoaCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEdbayA+PiAyXSA9IEdbdiArIChlW24gPj4gMl0gPDwgMikgPj4gMl0gLSBCLCBrID0gayArIDQgfCAwLCBuID0gbiArIDQgfCAwLCBvID0gbyArIHogfCAwLCBhID0gYSArIDEgfCAwLCAoYyB8IDApID09IChhIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSAwLCB2ID0gRSwgYSA9IGosIG4gPSB4LCBrID0gYzsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBHW24gPj4gMl0sIEIgPSBXKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+PSBjID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQID0gMCwgbCA9IG4sIHQgPSBhLCBoID0gaywgcCA9IG8gJiAzLCBwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBoID0gaCArIDEgfCAwLCBCID0gVyhXKEdbbCArIDQgPj4gMl0gKiBHW3QgPj4gMl0pICsgQiksIGwgPSBsICsgNCB8IDAsIHQgPSB0ICsgNCB8IDAsIFAgPSBQICsgMSB8IDAsIChwIHwgMCkgIT0gKFAgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyAtIDEgPj4+IDAgPCAzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBCID0gVyhXKEdbbCArIDE2ID4+IDJdICogR1t0ICsgMTIgPj4gMl0pICsgVyhXKEdbbCArIDEyID4+IDJdICogR1t0ICsgOCA+PiAyXSkgKyBXKFcoR1tsICsgOCA+PiAyXSAqIEdbdCArIDQgPj4gMl0pICsgVyhXKEdbbCArIDQgPj4gMl0gKiBHW3QgPj4gMl0pICsgQikpKSksIHQgPSB0ICsgMTYgfCAwLCBsID0gbCArIDE2IHwgMCwgaCA9IGggKyA0IHwgMCwgKGMgfCAwKSAhPSAoaCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gNCB8IDAsIHYgPSB2IC0gNCB8IDAsIEdbYSA+PiAyXSA9IFcoR1t2ID4+IDJdIC0gQikgLyBtLCBvID0gbyArIDEgfCAwLCBuID0gbiArIGUwIHwgMCwgayA9IGsgLSAxIHwgMCwgIWspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUCA9IDAsIGwgPSBILCB0ID0gMCwgYSA9IDAsIEogPj4+IDAgPj0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBrID0gbjIgKyAodCA8PCAyKSB8IDAsIEdbbCA+PiAyXSA9IEdbayA+PiAyXSwgbiA9IGwgKyB6IHwgMCwgR1tuID4+IDJdID0gR1trICsgNCA+PiAyXSwgbiA9IG4gKyB6IHwgMCwgR1tuID4+IDJdID0gR1trICsgOCA+PiAyXSwgbiA9IG4gKyB6IHwgMCwgR1tuID4+IDJdID0gR1trICsgMTIgPj4gMl0sIGwgPSBuICsgeiB8IDAsIHQgPSB0ICsgNCB8IDAsIGEgPSBhICsgNCB8IDAsIChMMiB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBHW2wgPj4gMl0gPSBHW24yICsgKHQgPDwgMikgPj4gMl0sIHQgPSB0ICsgMSB8IDAsIGwgPSBsICsgeiB8IDAsIFAgPSBQICsgMSB8IDAsIChtMiB8IDApICE9IChQIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIID0gSCArIDQgfCAwLCBwID0gMSwgdzIgPSB3MiArIDEgfCAwLCAoYyB8IDApID09ICh3MiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIodSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUihnKSwgbiA9IDAsIFEoZiwgMSwgMjc4NTAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBVMihlW3IgKyAxNiA+PiAyXSA8PCAzKSwgZVt3ICsgNTYwNCA+PiAyXSA9IG8sICFvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGcpLCBuID0gMCwgUShmLCAxLCAyNzk1NiwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbdyArIDU2MDggPj4gMl0sIHQgPSAwLCBrID0gZVtyICsgMTYgPj4gMl0sIGspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGggPSBrICYgLTQsIHUgPSBrICYgMywgdiA9IGsgKyBrIHwgMCwgQyA9IHYgKyBrIHwgMCwgYyA9IEMgKyBrIHwgMCwgSCA9IGsgPj4+IDAgPCA0OyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRCA9IDAsIG4gPSB0LCBsID0gMCwgIUgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHkgPSArR1thICsgKG4gKyBDIDw8IDIpID4+IDJdLCBnMiA9IHkgKiB5LCB5ID0gK0dbYSArIChuICsgdiA8PCAyKSA+PiAyXSwgaTAgPSB5ICogeSwgeSA9ICtHW2EgKyAoayArIG4gPDwgMikgPj4gMl0sIHIwID0geSAqIHksIHkgPSArR1thICsgKG4gPDwgMikgPj4gMl0sIEQgPSBnMiArIChpMCArIChyMCArICh5ICogeSArIEQpKSksIG4gPSBuICsgYyB8IDAsIGwgPSBsICsgNCB8IDAsIChoIHwgMCkgIT0gKGwgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IDAsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHkgPSArR1thICsgKG4gPDwgMikgPj4gMl0sIEQgPSB5ICogeSArIEQsIG4gPSBrICsgbiB8IDAsIGwgPSBsICsgMSB8IDAsICh1IHwgMCkgIT0gKGwgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUTJbbyArICh0IDw8IDMpID4+IDNdID0gbUEoRCksIHQgPSB0ICsgMSB8IDAsIChrIHwgMCkgPT0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGcpLCBhID0gZVtyICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBxICsgejIgfCAwLCB0ID0gZVt3ICsgNTU4NCA+PiAyXSwgZyA9IDAsIG4gPSAwLCBhID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IGEgJiAtNCwgbCA9IDA7IGVbKHQgKyBaKG4sIDEwODApIHwgMCkgKyAxMDc2ID4+IDJdID0gZVtrICsgKG4gPDwgMikgPj4gMl0sIHUgPSBuIHwgMSwgZVsodCArIFoodSwgMTA4MCkgfCAwKSArIDEwNzYgPj4gMl0gPSBlW2sgKyAodSA8PCAyKSA+PiAyXSwgdSA9IG4gfCAyLCBlWyh0ICsgWih1LCAxMDgwKSB8IDApICsgMTA3NiA+PiAyXSA9IGVbayArICh1IDw8IDIpID4+IDJdLCB1ID0gbiB8IDMsIGVbKHQgKyBaKHUsIDEwODApIHwgMCkgKyAxMDc2ID4+IDJdID0gZVtrICsgKHUgPDwgMikgPj4gMl0sIG4gPSBuICsgNCB8IDAsIGwgPSBsICsgNCB8IDAsIChvIHwgMCkgIT0gKGwgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gYSAmIDMsICFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbKHQgKyBaKG4sIDEwODApIHwgMCkgKyAxMDc2ID4+IDJdID0gZVtrICsgKG4gPDwgMikgPj4gMl0sIG4gPSBuICsgMSB8IDAsIGcgPSBnICsgMSB8IDAsIChsIHwgMCkgIT0gKGcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwLCBvID0gMCwgayA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbdyArIDE2ID4+IDJdICE9IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZVt3ICsgNTYyMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVt3ICsgNTYwOCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt3ICsgNTYyNCA+PiAyXSA9PSAobCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGwgKyAxMCB8IDAsIGVbdyArIDU2MjQgPj4gMl0gPSBrLCBrID0gbzAoZVt3ICsgNTYxNiA+PiAyXSwgWihrLCAyMCkpLCAhaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdyArIDU2MTYgPj4gMl0gPSBrLCB0ID0gZVt3ICsgNTYyMCA+PiAyXSwgZDIoayArIFoodCwgMjApIHwgMCwgMCwgWihlW3cgKyA1NjI0ID4+IDJdIC0gdCB8IDAsIDIwKSksIGwgPSBlW3cgKyA1NjIwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbdyArIDU2MTYgPj4gMl0gKyBaKGwsIDIwKSB8IDAsIGsgPSBlW2EgKyAxMiA+PiAyXSwgayAmJiAoUihrKSwgZVthICsgMTIgPj4gMl0gPSAwKSwgZVthICsgOCA+PiAyXSA9IDEsIGVbYSA+PiAyXSA9IDIsIGVbYSArIDQgPj4gMl0gPSAxLCBuID0gMiwgayA9IGVbciArIDE2ID4+IDJdLCBsID0gWihrLCBrKSwgdSA9IGwgPDwgMiwgdCA9IFUyKHUpLCBlW2EgKyAxMiA+PiAyXSA9IHQsIGsgPSAwLCAhdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzJbZVsoZVthID4+IDJdIDw8IDIpICsgMzEyMTYgPj4gMl1dKGVbdyArIDU2MDggPj4gMl0sIHQsIGwpLCBlW2EgKyAxNiA+PiAyXSA9IHUsIGwgPSBlW3cgKyA1NjIwID4+IDJdICsgMSB8IDAsIGVbdyArIDU2MjAgPj4gMl0gPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3cgKyA1NjI0ID4+IDJdID09IChsIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGwgKyAxMCB8IDAsIGVbdyArIDU2MjQgPj4gMl0gPSBrLCBrID0gbzAoZVt3ICsgNTYxNiA+PiAyXSwgWihrLCAyMCkpLCAhaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt3ICsgNTYxNiA+PiAyXSA9IGssIHQgPSBlW3cgKyA1NjIwID4+IDJdLCBhID0gKGswID0gZDIoayArIFoodCwgMjApIHwgMCwgMCwgWihlW3cgKyA1NjI0ID4+IDJdIC0gdCB8IDAsIDIwKSkgLSAyMCB8IDAsIHQwID0gMCwgaDAgPSBhLCBoMCA/IGswIDogdDApLCBsID0gZVt3ICsgNTYyMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbdyArIDU2MTYgPj4gMl0gKyBaKGwsIDIwKSB8IDAsIGsgPSBlW3UgKyAxMiA+PiAyXSwgayAmJiAoUihrKSwgZVt1ICsgMTIgPj4gMl0gPSAwKSwgZVt1ICsgOCA+PiAyXSA9IG4sIGVbdSA+PiAyXSA9IDIsIGVbdSArIDQgPj4gMl0gPSAyLCBoID0gZVtyICsgMTYgPj4gMl0sIGcgPSBoIDw8IDIsIHQgPSBVMihnKSwgZVt1ICsgMTIgPj4gMl0gPSB0LCBrID0gMCwgIXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBVMihnKSwgIWspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGVbdSArIDEyID4+IDJdKSwgZVt1ICsgMTIgPj4gMl0gPSAwLCBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBoICYgMywgbCA9IGVbdyArIDU1ODQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj4+IDAgPCA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gaCAmIC00LCB0ID0gazsgR1t0ID4+IDJdID0gZVtsICsgMTA3NiA+PiAyXSwgR1t0ICsgNCA+PiAyXSA9IGVbbCArIDIxNTYgPj4gMl0sIEdbdCArIDggPj4gMl0gPSBlW2wgKyAzMjM2ID4+IDJdLCBHW3QgKyAxMiA+PiAyXSA9IGVbbCArIDQzMTYgPj4gMl0sIGwgPSBsICsgNDMyMCB8IDAsIHQgPSB0ICsgMTYgfCAwLCBvID0gbyArIDQgfCAwLCAoQyB8IDApICE9IChvIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IEdbdCA+PiAyXSA9IGVbbCArIDEwNzYgPj4gMl0sIGwgPSBsICsgMTA4MCB8IDAsIHQgPSB0ICsgNCB8IDAsIG8gPSBvICsgMSB8IDAsICh2IHwgMCkgIT0gKG8gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvMltlWyhlW3UgPj4gMl0gPDwgMikgKyAzMTIxNiA+PiAyXV0oaywgZVt1ICsgMTIgPj4gMl0sIGgpLCBSKGspLCBlW3UgKyAxNiA+PiAyXSA9IGcsIGVbdyArIDU2MjAgPj4gMl0gPSBlW3cgKyA1NjIwID4+IDJdICsgMSwgbCA9IGVbdyArIDU2MzIgPj4gMl0sIChsIHwgMCkgPT0gZVt3ICsgNTYzNiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gbCArIDEwIHwgMCwgZVt3ICsgNTYzNiA+PiAyXSA9IGssIGsgPSBvMChlW3cgKyA1NjI4ID4+IDJdLCBaKGssIDIwKSksICFrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGVbdyArIDU2MjggPj4gMl0pLCBlW3cgKyA1NjM2ID4+IDJdID0gMCwgZVt3ICsgNTYyOCA+PiAyXSA9IDAsIGVbdyArIDU2MzIgPj4gMl0gPSAwLCBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdyArIDU2MjggPj4gMl0gPSBrLCB0ID0gZVt3ICsgNTYzMiA+PiAyXSwgZDIoayArIFoodCwgMjApIHwgMCwgMCwgWihlW3cgKyA1NjM2ID4+IDJdIC0gdCB8IDAsIDIwKSksIGwgPSBlW3cgKyA1NjMyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBlW3cgKyA1NjI4ID4+IDJdICsgWihsLCAyMCkgfCAwLCBlW2sgKyA4ID4+IDJdID0gYSwgRltrICsgMTYgfCAwXSA9IElbayArIDE2IHwgMF0gfCAxLCB0ID0gZVtyICsgMTYgPj4gMl0sIGVbayArIDEyID4+IDJdID0gdSwgZVtrID4+IDJdID0gbiArIDEsIGVbayArIDQgPj4gMl0gPSB0LCBlW3cgKyA1NjMyID4+IDJdID0gZVt3ICsgNTYzMiA+PiAyXSArIDEsIGsgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUihlW3cgKyA1NjE2ID4+IDJdKSwgZVt3ICsgNTYyNCA+PiAyXSA9IDAsIGVbdyArIDU2MTYgPj4gMl0gPSAwLCBlW3cgKyA1NjIwID4+IDJdID0gMCwgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMCwgUShmLCAxLCA5NjIzLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlW3IgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGVbdyArIDE2ID4+IDJdICE9IDEgfCBhID4+PiAwIDwgMykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBlW3IgKyAyNCA+PiAyXSwgdCA9IGVbayA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0IHwgMCkgIT0gZVtrICsgNTIgPj4gMl0gfCAodCB8IDApICE9IGVbayArIDEwNCA+PiAyXSB8fCAodCA9IGVbayArIDQgPj4gMl0sICh0IHwgMCkgIT0gZVtrICsgNTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodCB8IDApID09IGVbayArIDEwOCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShmLCAyLCAyMzQyMiwgMCksIGVbdyArIDE2ID4+IDJdID0gMCwgYSA9IGVbciArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gYSAmIDEsIGsgPSBlW3IgKyAyNCA+PiAyXSwgbiA9IDAsIChhIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBhICYgLTIsIGEgPSAwOyBvID0gayArIFoobiwgNTIpIHwgMCwgZVtvICsgMzIgPj4gMl0gfHwgKGVbKGVbdyArIDU1ODQgPj4gMl0gKyBaKG4sIDEwODApIHwgMCkgKyAxMDc2ID4+IDJdID0gMSA8PCBlW28gKyAyNCA+PiAyXSAtIDEpLCBvID0gbiB8IDEsIHUgPSBrICsgWihvLCA1MikgfCAwLCBlW3UgKyAzMiA+PiAyXSB8fCAoZVsoZVt3ICsgNTU4NCA+PiAyXSArIFoobywgMTA4MCkgfCAwKSArIDEwNzYgPj4gMl0gPSAxIDw8IGVbdSArIDI0ID4+IDJdIC0gMSksIG4gPSBuICsgMiB8IDAsIGEgPSBhICsgMiB8IDAsIChsIHwgMCkgIT0gKGEgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQgfHwgKGsgPSBrICsgWihuLCA1MikgfCAwLCBlW2sgKyAzMiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVsoZVt3ICsgNTU4NCA+PiAyXSArIFoobiwgMTA4MCkgfCAwKSArIDEwNzYgPj4gMl0gPSAxIDw8IGVbayArIDI0ID4+IDJdIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbcyArIDQ4ID4+IDJdID0gYSwgUShmLCAxLCAxNzY2MywgcyArIDQ4IHwgMCksIG4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW3IgKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbdyArIDU1ODQgPj4gMl0gKyBaKGgsIDEwODApIHwgMCwgbCA9IGVbaSArIDQwID4+IDJdICYgMSwgZVt0ID4+IDJdID0gbCwgdSA9IGVbaSArIDU1OTIgPj4gMl0sIGVbdCArIDQgPj4gMl0gPSB1LCBrID0gMCwgbiA9IGVbaSArIDU1OTYgPj4gMl0sIChuIHwgMCkgPj0gMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBrID0gayArIDEgfCAwLCBhID0gbiA+Pj4gMCA+IDMsIG4gPSBuID4+PiAxIHwgMCwgISFhOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt0ICsgOCA+PiAyXSA9IGssIGsgPSAwLCBuID0gZVtpICsgNTYwMCA+PiAyXSwgKG4gfCAwKSA+PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGsgPSBrICsgMSB8IDAsIGEgPSBuID4+PiAwID4gMywgbiA9IG4gPj4+IDEgfCAwLCAhIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVbdCArIDEyID4+IDJdID0gaywgZVt0ICsgMTYgPj4gMl0gPSBlW2kgKyA1NjA0ID4+IDJdLCBrID0gZVtpICsgNTYwOCA+PiAyXSwgZVt0ICsgODA0ID4+IDJdID0gMiwgZVt0ICsgMjAgPj4gMl0gPSAhaywgZVt0ICsgMjQgPj4gMl0gPSAoKGsgfCAwKSAhPSAwKSA8PCAxLCBlW3QgKyA4MDggPj4gMl0gPSBlW2kgKyA1NjEyID4+IDJdID09IChoIHwgMCkgPyBlW2kgKyA1NjE2ID4+IDJdIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHUgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQyA9IHQgKyA5NDQgfCAwLCB2ID0gdCArIDgxMiB8IDAsIG8gPSAwLCBsID0gdTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbCAtIDEgfCAwLCBrID0gZVtpICsgNTYyMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGsgfCAwKSA+IChvIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDEsIGEgPSAxLCBnID0gbyA8PCAyLCBrID0gZVtnICsgWDIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGsgfCAwKSA8PSAwIHx8IChhID0gMCwgKGsgfCAwKSA9PSAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGEgPSBhICsgMSB8IDAsIGMgPSBrID4+PiAwID4gMywgayA9IGsgPj4+IDEgfCAwLCAhIWM7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt2ICsgKGwgPDwgMikgPj4gMl0gPSBhLCBrID0gZVtnICsgWTIgPj4gMl0sIChrIHwgMCkgPD0gMCB8fCAobiA9IDAsIChrIHwgMCkgPT0gMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4gPSBuICsgMSB8IDAsIGEgPSBrID4+PiAwID4gMywgayA9IGsgPj4+IDEgfCAwLCAhIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gayAtIDEgfCAwLCBhID0gayA8PCAyLCBjID0gbyAtIGsgfCAwLCBrID0gZVthICsgWTIgPj4gMl0gPj4gYywgbiA9IDEsIGcgPSAxLCBhID0gZVthICsgWDIgPj4gMl0gPj4gYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgPD0gMCB8fCAoZyA9IDAsIChhIHwgMCkgPT0gMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGcgPSBnICsgMSB8IDAsIGMgPSBhID4+PiAwID4gMywgYSA9IGEgPj4+IDEgfCAwLCAhIWM7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt2ICsgKGwgPDwgMikgPj4gMl0gPSBnLCAoayB8IDApIDw9IDAgfHwgKG4gPSAwLCAoayB8IDApID09IDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4gPSBuICsgMSB8IDAsIGEgPSBrID4+PiAwID4gMywgayA9IGsgPj4+IDEgfCAwLCAhIWE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtDICsgKGwgPDwgMikgPj4gMl0gPSBuLCBvID0gbyArIDEgfCAwLCAodSB8IDApID09IChvIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSB0ICsgOTQ0IHwgMCwgYSA9IHQgKyA4MTIgfCAwLCBsID0gMCwgbiA9IDAsIHUgPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2ID0gdSAmIC00LCBvID0gMDsgZyA9IG4gPDwgMiwgZVtnICsgYSA+PiAyXSA9IDE1LCBlW2sgKyBnID4+IDJdID0gMTUsIEMgPSBnIHwgNCwgZVtDICsgYSA+PiAyXSA9IDE1LCBlW2sgKyBDID4+IDJdID0gMTUsIEMgPSBnIHwgOCwgZVtDICsgYSA+PiAyXSA9IDE1LCBlW2sgKyBDID4+IDJdID0gMTUsIGcgPSBnIHwgMTIsIGVbZyArIGEgPj4gMl0gPSAxNSwgZVtrICsgZyA+PiAyXSA9IDE1LCBuID0gbiArIDQgfCAwLCBvID0gbyArIDQgfCAwLCAodiB8IDApICE9IChvIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IHUgJiAzLCAhbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB1ID0gbiA8PCAyLCBlW3UgKyBhID4+IDJdID0gMTUsIGVbayArIHUgPj4gMl0gPSAxNSwgbiA9IG4gKyAxIHwgMCwgbCA9IGwgKyAxIHwgMCwgKG8gfCAwKSAhPSAobCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPSBlWyhlW3IgKyAyNCA+PiAyXSArIFooaCwgNTIpIHwgMCkgKyAyNCA+PiAyXSwgZyA9IDAsIGsgPSBlW3QgKyA0ID4+IDJdLCBDID0gWihrLCAzKSAtIDIgfCAwLCBDKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gdCArIDI4IHwgMCwgSCA9IGsgLSAxIHwgMCwgSiA9IGVbdCArIDI0ID4+IDJdLCBwID0gZVt0ICsgMjAgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwLCB0ID0gMCwgZyAmJiAodCA9IGcgLSAxIHwgMCwgayA9ICh0ID4+PiAwKSAvIDMgfCAwLCBsID0gayBeIC0xLCB0ID0gKHQgLSBaKGssIDMpIHwgMCkgKyAxIHwgMCksIHUgPSBwICYmIHQgPyB0IC0gMSA+Pj4gMCA8IDIgPyAxIDogMiA6IDAsIEogPyAobiA9IFoodCwgODApLCBrID0gdCA/IDggOiA5LCB0ID0gbCArIEggfCAwLCB5ID0gKygxIDw8IHUgPj4+IDApIC8gUTJbKG4gKyAoKGsgPj4+IDAgPCB0ID4+PiAwID8gayA6IHQpIDw8IDMpIHwgMCkgKyAzMDg0OCA+PiAzXSAqIDgxOTIpIDogeSA9IDgxOTIsIEQgPSBOZSh5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihEKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB+fkQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSAxMywgYSA9IDAsIGwgPSAwLCB0ID0gaywgKGsgfCAwKSA+PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG8gPSBsLCBsID0gbCArIDEgfCAwLCBuID0gdCA+Pj4gMCA+IDMsIHQgPSB0ID4+PiAxIHwgMCwgISFuOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gazsgbiA9IGEsIGEgPSBuICsgMSB8IDAsIGwgPSB0ID4+PiAwID4gMywgdCA9IHQgPj4+IDEgfCAwLCAhIWw7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gKG4gPj4+IDAgPiAxMCA/IGsgPj4+IG4gLSAxMCB8IDAgOiBrIDw8IDEwIC0gbikgJiAyMDQ3LCBuID0gMTIgLSBvIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGMgKyAoZyA8PCAzKSB8IDAsIGVbayArIDQgPj4gMl0gPSBhLCBlW2sgPj4gMl0gPSAodSArIHYgfCAwKSArIG4sIGcgPSBnICsgMSB8IDAsIChDIHwgMCkgPT0gKGcgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGggKyAxIHwgMCwgIShoID4+PiAwIDwgZFtyICsgMTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChmMiA9IGYyICsgMSB8IDAsICEoZjIgPj4+IDAgPCBaKGVbQSArIDEwOCA+PiAyXSwgZVtBICsgMTA0ID4+IDJdKSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKG4gPSAxLCBBID0gZVtpICsgMTg2OTYgPj4gMl0sICFBKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIFIoQSksIGVbaSArIDE4Njk2ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4gPSAwLCBRKGYsIDEsIDUyMzQsIDApOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IHMgKyA0MDAgfCAwLCBuIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBmcihBLCBpLCByLCBmLCBrLCB0KSB7CiAgICAgICAgICAgICAgdmFyIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IFcoMCksIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMCwgeSA9IDAsIHAgPSAwLCBIID0gMCwgSiA9IDAsIEUgPSAwLCBEID0gMCwgVSA9IDAsIFAgPSAwLCB4ID0gMCwgeiA9IDAsIGogPSAwLCBPID0gMCwgcSA9IDAsIGYyID0gMCwgbjIgPSBXKDApLCBnMiA9IDAsIHcyID0gMCwgYzIgPSAwLCBtMiA9IDAsIHAyID0gMCwgWTIgPSAwLCBYMiA9IDAsIEQyID0gMCwgUzIgPSAwLCBQMiA9IDAsIHgyID0gMCwgejIgPSAwLCBMMiA9IDAsIGUwID0gMCwgaTAgPSAwLCByMCA9IDAsIGswID0gMCwgdDAgPSAwLCBoMCA9IDAsIEMwID0gMCwgSDAgPSAwLCBFMCA9IDAsIE0wID0gMCwgeDAgPSBXKDApLCBUMCA9IDAsIGIwID0gMCwgZjEgPSAwLCBhMSA9IDAsIFoxID0gMCwgcDEgPSAwOwogICAgICAgICAgICAgIGgwID0gWCAtIDE2IHwgMCwgWCA9IGgwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChrID4+PiAwIDw9IDMpIHsKICAgICAgICAgICAgICAgICAgayA9IDAsIFEodCwgMSwgNzMyNiwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBrMihyLCA2NTQyNywgMiksIGVbaSArIDQgPj4gMl0gPSBlW0EgKyA4ID4+IDJdLCB1ID0gZVtBICsgMTIgPj4gMl0sIGVbaSArIDggPj4gMl0gPSB1LCB1IHx8IChlW2VbZVtpICsgMjAgPj4gMl0gPj4gMl0gKyA4NDAgPj4gMl0gPSAwKSwgZVtmID4+IDJdID0gMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW0EgKyA2MCA+PiAyXSwgIXUgfHwgKHAyID0gRTIoMSwgMTIpLCBwMiAmJiAoZVtwMiA+PiAyXSA9IHUpLCBwMikpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgayA9IDAsIFEodCwgMSwgMTY1NjEsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGwgPSBrIC0gNCB8IDAsIHUgPSBlW0EgKyA2NCA+PiAyXSwgbCA+Pj4gMCA8IHUgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgayA9IDAsIFEodCwgMSwgNzMyNiwgMCksIExlKHAyKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGsgPSAwLCBvID0gZVtBICsgMjA0ID4+IDJdLCBDMCA9IHIgKyAyIHwgMCwgazAgPSBmLCBIMCA9IGwgLSB1IHwgMCwgUzIgPSB0LCBmMiA9IFggLSAxMjE2IHwgMCwgWCA9IGYyOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaCA9IGk7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDggPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgMzYgPj4gMl0gPSBvLCBEID0gZVtlW2kgKyAyOCA+PiAyXSArIDc2ID4+IDJdICsgWihvLCA1NjQ0KSB8IDAsIGVbaSArIDMyID4+IDJdID0gRCwgdSA9IGVbRCArIDU1ODQgPj4gMl0sIEIgPSBlW2VbaSArIDIwID4+IDJdID4+IDJdLCBsID0gZVtCICsgMjAgPj4gMl0sIGMgPSBlW0IgKyAxNiA+PiAyXSwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBsLCBvID0gdTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gWihlW2kgKyAxMiA+PiAyXSAtIGVbaSArIDQgPj4gMl0gfCAwLCBlW2kgKyA4ID4+IDJdIC0gZVtpID4+IDJdIHwgMCksIHQgPSBlW2kgKyAzNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtvICsgMjAgPj4gMl0gIT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPSBlW28gKyAxMDc2ID4+IDJdLCBtID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gbSAmIC00LCBmID0gMDsgR1t0ID4+IDJdID0gZVt0ID4+IDJdIC0gcCB8IDAsIEdbdCArIDQgPj4gMl0gPSBlW3QgKyA0ID4+IDJdIC0gcCB8IDAsIEdbdCArIDggPj4gMl0gPSBlW3QgKyA4ID4+IDJdIC0gcCB8IDAsIEdbdCArIDEyID4+IDJdID0gZVt0ICsgMTIgPj4gMl0gLSBwIHwgMCwgdCA9IHQgKyAxNiB8IDAsIGYgPSBmICsgNCB8IDAsIChnIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsIGcgPSBtICYgMywgIWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEdbdCA+PiAyXSA9IGVbdCA+PiAyXSAtIHAgfCAwLCB0ID0gdCArIDQgfCAwLCBmID0gZiArIDEgfCAwLCAoZyB8IDApICE9IChmIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBtICYgLTQsIGYgPSAwOyBlW3QgPj4gMl0gPSBlW3QgPj4gMl0gLSBlW28gKyAxMDc2ID4+IDJdLCBlW3QgKyA0ID4+IDJdID0gZVt0ICsgNCA+PiAyXSAtIGVbbyArIDEwNzYgPj4gMl0sIGVbdCArIDggPj4gMl0gPSBlW3QgKyA4ID4+IDJdIC0gZVtvICsgMTA3NiA+PiAyXSwgZVt0ICsgMTIgPj4gMl0gPSBlW3QgKyAxMiA+PiAyXSAtIGVbbyArIDEwNzYgPj4gMl0sIHQgPSB0ICsgMTYgfCAwLCBmID0gZiArIDQgfCAwLCAoZyB8IDApICE9IChmIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsIGcgPSBtICYgMywgZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbdCA+PiAyXSA9IGVbdCA+PiAyXSAtIGVbbyArIDEwNzYgPj4gMl0sIHQgPSB0ICsgNCB8IDAsIGYgPSBmICsgMSB8IDAsIChnIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlW0IgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBpICsgNzYgfCAwLCBvID0gbyArIDEwODAgfCAwLCBPID0gTyArIDEgfCAwLCAhKE8gPj4+IDAgPCBjID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBjIDw8IDI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBIID0gWihlW2wgKyAxMiA+PiAyXSAtIGVbbCArIDQgPj4gMl0gfCAwLCBlW2wgKyA4ID4+IDJdIC0gZVtsID4+IDJdIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlW0QgKyAxNiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbRCArIDU2MTIgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSAwLCBKID0gVTIoTyksICFKKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBlW0IgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgheikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHogJiAzLCBmID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeiA+Pj4gMCA8IDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSB6ICYgLTQsIHQgPSAwLCBpID0gMDsgQiA9IEogKyAodCA8PCAyKSB8IDAsIGVbQiA+PiAyXSA9IGVbbCArIDM2ID4+IDJdLCBlW0IgKyA0ID4+IDJdID0gZVtsICsgMTEyID4+IDJdLCBlW0IgKyA4ID4+IDJdID0gZVtsICsgMTg4ID4+IDJdLCBlW0IgKyAxMiA+PiAyXSA9IGVbbCArIDI2NCA+PiAyXSwgdCA9IHQgKyA0IHwgMCwgbCA9IGwgKyAzMDQgfCAwLCBpID0gaSArIDQgfCAwLCAodSB8IDApICE9IChpIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW0ogKyAodCA8PCAyKSA+PiAyXSA9IGVbbCArIDM2ID4+IDJdLCB0ID0gdCArIDEgfCAwLCBsID0gbCArIDc2IHwgMCwgZiA9IGYgKyAxIHwgMCwgKGcgfCAwKSAhPSAoZiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbZVtoICsgMzIgPj4gMl0gKyA1NjEyID4+IDJdLCBnID0gWih6LCB6KSwgRSA9IFUyKGcgKyB6IDw8IDIpLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IEUgKyAoeiA8PCAyKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZyAmIC00OyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1ICsgKFUgPDwgMikgfCAwLCB3ID0gVyhHW2YgPj4gMl0gKiBXKDgxOTIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMih3KSkgPCBXKDIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB+fnc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbaSA+PiAyXSA9IGwsIHcgPSBXKEdbZiArIDQgPj4gMl0gKiBXKDgxOTIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMih3KSkgPCBXKDIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB+fnc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbaSArIDQgPj4gMl0gPSBsLCB3ID0gVyhHW2YgKyA4ID4+IDJdICogVyg4MTkyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIodykpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gfn53OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA4ID4+IDJdID0gbCwgdyA9IFcoR1tmICsgMTIgPj4gMl0gKiBXKDgxOTIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMih3KSkgPCBXKDIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB+fnc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyAxMiA+PiAyXSA9IGwsIFUgPSBVICsgNCB8IDAsIGYgPSBmICsgMTYgfCAwLCBzID0gcyArIDQgfCAwLCAodCB8IDApID09IChzIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBnICYgMSwgIXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHUgKyAoVSA8PCAyKSB8IDAsIHcgPSBXKEdbZiA+PiAyXSAqIFcoODE5MikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIodykpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IH5+dzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtsID4+IDJdID0gaSwgVSA9IFUgKyAxIHwgMCwgZiA9IGYgKyA0IHwgMCwgYSA9IGEgKyAxIHwgMCwgKHQgfCAwKSA9PSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghSCB8ICF6KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9IHogJiAtMiwgRCA9IHogJiAxLCBCID0geiAmIC00LCBqID0geiAmIDMsIG0gPSB6IC0gMSB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgcyA9IDAsIG0gPj4+IDAgPj0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdCA9IGYgPDwgMiwgZVt0ICsgRSA+PiAyXSA9IGVbZVt0ICsgSiA+PiAyXSA+PiAyXSwgaSA9IHQgfCA0LCBlW2kgKyBFID4+IDJdID0gZVtlW2kgKyBKID4+IDJdID4+IDJdLCBpID0gdCB8IDgsIGVbaSArIEUgPj4gMl0gPSBlW2VbaSArIEogPj4gMl0gPj4gMl0sIGkgPSB0IHwgMTIsIGVbaSArIEUgPj4gMl0gPSBlW2VbaSArIEogPj4gMl0gPj4gMl0sIGYgPSBmICsgNCB8IDAsIHMgPSBzICsgNCB8IDAsIChCIHwgMCkgIT0gKHMgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVSA9IDAsIGopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPSBmIDw8IDIsIGVbaSArIEUgPj4gMl0gPSBlW2VbaSArIEogPj4gMl0gPj4gMl0sIGYgPSBmICsgMSB8IDAsIFUgPSBVICsgMSB8IDAsIChqIHwgMCkgIT0gKFUgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSB1LCBPID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IEogKyAoTyA8PCAyKSB8IDAsIGkgPSBlW2cgPj4gMl0sIGVbaSA+PiAyXSA9IDAsIFUgPSAwLCBhID0gMCwgcyA9IDAsIG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbCA9IEUgKyAoVSA8PCAyKSB8IDAsIHQgPSBlW2wgPj4gMl0sIGMgPSB0LCB4ID0gdCA+PiAzMSwgdCA9IGVbZiA+PiAyXSwgdCA9IGQwKGMsIHgsIHQsIHQgPj4gMzEpLCB4ID0gcTIsIHQgPSB0ICsgNDA5NiB8IDAsIHQgPSAoKCh0ID4+PiAwIDwgNDA5NiA/IHggKyAxIHwgMCA6IHgpICYgODE5MSkgPDwgMTkgfCB0ID4+PiAxMykgKyBhIHwgMCwgZVtpID4+IDJdID0gdCwgYSA9IGVbbCArIDQgPj4gMl0sIGwgPSBhLCBjID0gYSA+PiAzMSwgYSA9IGVbZiArIDQgPj4gMl0sIGEgPSBkMChsLCBjLCBhLCBhID4+IDMxKSwgbCA9IHEyLCBhID0gYSArIDQwOTYgfCAwLCBhID0gKCgoYSA+Pj4gMCA8IDQwOTYgPyBsICsgMSB8IDAgOiBsKSAmIDgxOTEpIDw8IDE5IHwgYSA+Pj4gMTMpICsgdCB8IDAsIGVbaSA+PiAyXSA9IGEsIFUgPSBVICsgMiB8IDAsIGYgPSBmICsgOCB8IDAsIHMgPSBzICsgMiB8IDAsIChwIHwgMCkgIT0gKHMgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEQgJiYgKHQgPSBlW0UgKyAoVSA8PCAyKSA+PiAyXSwgbCA9IHQsIGMgPSB0ID4+IDMxLCB0ID0gZVtmID4+IDJdLCB0ID0gZDAobCwgYywgdCwgdCA+PiAzMSksIHMgPSBxMiwgdCA9IHQgKyA0MDk2IHwgMCwgZVtpID4+IDJdID0gKCgodCA+Pj4gMCA8IDQwOTYgPyBzICsgMSB8IDAgOiBzKSAmIDgxOTEpIDw8IDE5IHwgdCA+Pj4gMTMpICsgYSwgZiA9IGYgKyA0IHwgMCksIGVbZyA+PiAyXSA9IGkgKyA0LCBPID0gTyArIDEgfCAwLCAoeiB8IDApID09IChPIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQyA9IEMgKyAxIHwgMCwgKEggfCAwKSA9PSAoQyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIoRSksIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSKEopLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBlW2wgKyAxODggPj4gMl0sIGcgPSBlW2wgKyAxMTIgPj4gMl0sIGwgPSBlW2wgKyAzNiA+PiAyXSwgIWVbdSArIDIwID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSAwLCBIKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGEgPSB0IDw8IDIsIGkgPSBhICsgbCB8IDAsIHUgPSBpLCBmID0gYSArIEIgfCAwLCB4MCA9IEdbZiA+PiAyXSwgbjIgPSBHW2kgPj4gMl0sIGkgPSBhICsgZyB8IDAsIHcgPSBHW2kgPj4gMl0sIEdbdSA+PiAyXSA9IFcoeDAgKiBXKDAuMTE0MDAwMDAwMDU5NjA0NjQpKSArIFcoVyhuMiAqIFcoMC4yOTg5OTk5OTQ5OTMyMDk4NCkpICsgVyh3ICogVygwLjU4NzAwMDAxMjM5Nzc2NjEpKSksIEdbaSA+PiAyXSA9IFcoeDAgKiBXKDAuNSkpICsgVyhXKG4yICogVygtMC4xNjg3NTAwMDI5ODAyMzIyNCkpICsgVyh3ICogVygtMC4zMzEyNTk5OTU2OTg5Mjg4MykpKSwgR1tmID4+IDJdID0gVyh4MCAqIFcoLTAuMDgxMzA5OTk2NTQ1MzE0NzkpKSArIFcoVyhuMiAqIFcoMC41KSkgKyBXKHcgKiBXKC0wLjQxODY4OTk5NjAwNDEwNDYpKSksIHQgPSB0ICsgMSB8IDAsIChIIHwgMCkgIT0gKHQgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IDAsIEgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGYgPSBvIDw8IDIsIGkgPSBmICsgbCB8IDAsIGMgPSBpLCB0ID0gZVtpID4+IDJdLCBhID0gZiArIGcgfCAwLCB1ID0gZVthID4+IDJdLCBmID0gZiArIEIgfCAwLCBpID0gZVtmID4+IDJdLCBlW2MgPj4gMl0gPSAodCArICh1IDw8IDEpIHwgMCkgKyBpID4+IDIsIGVbYSA+PiAyXSA9IGkgLSB1LCBlW2YgPj4gMl0gPSB0IC0gdSwgbyA9IG8gKyAxIHwgMCwgKEggfCAwKSAhPSAobyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbaCArIDMyID4+IDJdLCBpID0gZVtlW2ggKyAyMCA+PiAyXSA+PiAyXSwgZVtpICsgMTYgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gZVtpICsgMjAgPj4gMl0sIHQgPSBlW3QgKyA1NTg0ID4+IDJdLCBmID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVbdCArIDIwID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFI0KGVbaCArIDQ0ID4+IDJdLCBvLCAxMTAsIDExMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUjQoZVtoICsgNDQgPj4gMl0sIG8sIDExNiwgMTE3KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0ICsgMTA4MCB8IDAsIG8gPSBvICsgNzYgfCAwLCBmID0gZiArIDEgfCAwLCAhKGYgPj4+IDAgPCBkW2kgKyAxNiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZVtoICsgMzIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3QgKyAxNiA+PiAyXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW2VbdCArIDU1ODQgPj4gMl0gKyAyMCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDMsIGYgPSAzMDQ5NjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAzLCBmID0gMzA0NjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhID0gZVtlW2ggKyAyNCA+PiAyXSArIDE2ID4+IDJdLCBmID0gZVt0ICsgNTYwNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIEogPSBlW2VbaCArIDIwID4+IDJdID4+IDJdLCBjID0gMCwgSCA9IFggLSAxNiB8IDAsIFggPSBILCBlW0ggKyAxMiA+PiAyXSA9IDEsIGcgPSBlW2ggKyA0NCA+PiAyXSwgbSA9IGFmKCksIGVbSiArIDMyID4+IDJdID0gMCwgZVtKICsgMzYgPj4gMl0gPSAwLCBpID0gZVtKICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCA9IGVbSiArIDIwID4+IDJdICsgWihjLCA3NikgfCAwLCBDID0gZVtwICsgMjAgPj4gMl0sIEMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVt0ICsgNTU4NCA+PiAyXSArIFooYywgMTA4MCkgfCAwLCB4ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRSA9IGVbcCArIDI4ID4+IDJdICsgWih4LCAxNTIpIHwgMCwgZVtFICsgMjQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IEUgKyAyOCB8IDAsIG8gPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0gdSArIFoobywgMzYpIHwgMCwgaSA9IEIsIGVbaSArIDggPj4gMl0gIT0gZVtpID4+IDJdID8gaSA9IGVbaSArIDEyID4+IDJdID09IGVbaSArIDQgPj4gMl0gOiBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIHx8IChzID0gZVtFICsgMTYgPj4gMl0sIEMgPSBlW0UgKyAyMCA+PiAyXSwgIVoocywgQykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEQgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPSBlW0IgKyAyMCA+PiAyXSArIFooRCwgNDApIHwgMCwgWihlW2ogKyAyMCA+PiAyXSwgZVtqICsgMTYgPj4gMl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2ogKyAyNCA+PiAyXSwgQyA9IEUyKDEsIDQ0KSwgIUMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0MgKyAxMiA+PiAyXSA9IEosIGVbQyA+PiAyXSA9IGMsIGVbQyArIDQwID4+IDJdID0gbSwgZVtDICsgMzIgPj4gMl0gPSBhLCBlW0MgKyAyOCA+PiAyXSA9IGYsIGVbQyArIDI0ID4+IDJdID0gbCwgZVtDICsgMjAgPj4gMl0gPSBwLCBlW0MgKyAxNiA+PiAyXSA9IEIsIGVbQyArIDQgPj4gMl0gPSB4LCBlW0MgKyA4ID4+IDJdID0gaSArIFoocywgNTIpLCBlW0MgKyAzNiA+PiAyXSA9IEggKyAxMiwgYjEoZywgMjUxLCBDKSwgcyA9IHMgKyAxIHwgMCwgIShzID4+PiAwIDwgWihlW2ogKyAyMCA+PiAyXSwgZVtqICsgMTYgPj4gMl0pID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlW0UgKyAxNiA+PiAyXSwgQyA9IGVbRSArIDIwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEQgPSBEICsgMSB8IDAsICEoRCA+Pj4gMCA8IFoocywgQykgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBvICsgMSB8IDAsICEobyA+Pj4gMCA8IGRbRSArIDI0ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgPSBlW3AgKyAyMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPSB4ICsgMSB8IDAsICEoQyA+Pj4gMCA+IHggPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbSiArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSBjICsgMSB8IDAsIGMgPj4+IDAgPCBpID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbSCArIDEyID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChsMShlW2ggKyA0NCA+PiAyXSksIG0gJiYgSTEobSksIFggPSBIICsgMTYgfCAwLCAhZVtIICsgMTIgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoRDIgPSBlW2ggKyAyOCA+PiAyXSwgZVtmMiArIDEyID4+IDJdID0gMCwgZFtEMiArIDk2ID4+IDJdIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgTDIgPSBlW2ggKyAzMiA+PiAyXSwgbCA9IDAsIHcyID0gZVtlW2ggKyAyMCA+PiAyXSA+PiAyXSwgZVt3MiArIDI0ID4+IDJdID0gMCwgRSA9IGVbdzIgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghRSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgWTIgPSAxNzk3NjkzMTM0ODYyMzE1N2UyOTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEggPSBlW3cyICsgMjAgPj4gMl0sIHggPSBlW2VbaCArIDI0ID4+IDJdICsgMjQgPj4gMl0sIFkyID0gMTc5NzY5MzEzNDg2MjMxNTdlMjkyLCBpID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0MCA9IEggKyBaKGksIDc2KSB8IDAsIGVbdDAgKyA3MiA+PiAyXSA9IDAsIGogPSBlW3QwICsgMjAgPj4gMl0sIGopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChtID0gZVt0MCArIDI4ID4+IDJdLCBjID0gMCwgZzIgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlMCA9IG0gKyBaKGcyLCAxNTIpIHwgMCwgcCA9IGVbZTAgKyAyNCA+PiAyXSwgcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoRCA9IGUwICsgMjggfCAwLCBVID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IEQgKyBaKFUsIDM2KSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtmICsgOCA+PiAyXSA9PSBlW2YgPj4gMl0gfCBlW2YgKyAxMiA+PiAyXSA9PSBlW2YgKyA0ID4+IDJdIHx8IChCID0gWihlW2UwICsgMjAgPj4gMl0sIGVbZTAgKyAxNiA+PiAyXSksICFCKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVtmICsgMjAgPj4gMl0sIGEgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBnICsgWihhLCA0MCkgfCAwLCBvID0gWihlW3MgKyAyMCA+PiAyXSwgZVtzICsgMTYgPj4gMl0pLCBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKE8gPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgyID0gZVtzICsgMjQgPj4gMl0gKyBaKE8sIDUyKSB8IDAsIEMgPSBlW1gyICsgNDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFDIHx8IChKID0gZVtYMiArIDggPj4gMl0sIGYgPSBlW0ogPj4gMl0sIGYgJiYgKG4gPSBRMltKICsgOCA+PiAzXSAvICsoZiB8IDApLCBQMiA9IG4gPiBQMiA/IG4gOiBQMiwgWTIgPSBuIDwgWTIgPyBuIDogWTIpLCB0ID0gMSwgKEMgfCAwKSA9PSAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB6ID0gSiArIFoodCwgMjQpIHwgMCwgdSA9IGVbeiA+PiAyXSwgZiA9IGVbeiAtIDI0ID4+IDJdLCAodSB8IDApICE9IChmIHwgMCkgJiYgKG4gPSAoUTJbeiArIDggPj4gM10gLSBRMlt6IC0gMTYgPj4gM10pIC8gKyh1IC0gZiB8IDApLCBQMiA9IG4gPiBQMiA/IG4gOiBQMiwgWTIgPSBuIDwgWTIgPyBuIDogWTIpLCB0ID0gdCArIDEgfCAwLCAoQyB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IFooZVtYMiArIDI0ID4+IDJdIC0gZVtYMiArIDE2ID4+IDJdIHwgMCwgZVtYMiArIDIwID4+IDJdIC0gZVtYMiArIDEyID4+IDJdIHwgMCksIGwgPSBmICsgbCB8IDAsIGVbdzIgKyAyNCA+PiAyXSA9IGwsIGMgPSBmICsgYyB8IDAsIGVbdDAgKyA3MiA+PiAyXSA9IGMsIE8gPSBPICsgMSB8IDAsIChvIHwgMCkgPT0gKE8gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgKyAxIHwgMCwgKEIgfCAwKSA9PSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFUgPSBVICsgMSB8IDAsIChwIHwgMCkgPT0gKFUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZzIgPSBnMiArIDEgfCAwLCAoaiB8IDApID09IChnMiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9ICsoYyA+Pj4gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9ICsoMSA8PCBlWyh4ICsgWihpLCA1MikgfCAwKSArIDI0ID4+IDJdKSArIC0xLCBmMSA9IG4gKiBuICogdiArIGYxLCBpID0gaSArIDEgfCAwLCAoRSB8IDApID09IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbTDIgKyA4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoSCA9IHcyICsgNDAgfCAwLCBEID0gTDIgKyA1MTg0IHwgMCwgQiA9IEwyICsgMjAgfCAwLCBpMCA9IChQMiArIFkyKSAqIDAuNSwgdCA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQgPDwgMiwgdyA9IEdbaSArIEIgPj4gMl0sIG4yID0gVygkaSh3KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4yIDwgVyg0Mjk0OTY3Mjk2KSAmIG4yID49IFcoMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IH5+bjIgPj4+IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHcgPiBXKDApLCBnID0gZVtEMiArIDk2ID4+IDJdLCB4ID0gWCAtIDE2IHwgMCwgWCA9IHgsIHcgPSBHW2kgKyBEID4+IDJdLCBjMiA9ICtXKHcgLyBXKDEwKSksIGcxKCtjMiksIGkgPSBXMCgxKSB8IDAsIGYgPSBXMCgwKSB8IDAsIG8gPSBpID4+PiAyMCB8IDAsIGwgPSBvICYgMjA0NywgdSA9IGwgLSAxMDg2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA+Pj4gMCA8PSA0Mjk0OTY3MTY3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqID0gZiA8PCAxLCBzID0gaSA8PCAxIHwgZiA+Pj4gMzEsIG0gPSBzICsgMjA5NzE1MiB8IDAsICFqICYgKG0gfCAwKSA9PSAyMDk3MTUyIHwgbSA+Pj4gMCA8IDIwOTcxNTIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDEsICEocyB8IGopIHx8IChuID0gYzIgKyAxMCwgKHMgfCAwKSA9PSAtMjA5NzE1MiAmIChqIHwgMCkgIT0gMCB8IHMgPj4+IDAgPiA0MjkyODcwMTQ0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IChpIHwgMCkgPCAwID8gMCA6IGMyICogYzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA+Pj4gMCA8PSA0Mjk0OTY3MTY3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBjMiArIDEsIGwgPj4+IDAgPD0gOTU3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA+Pj4gMCA8PSAyMDQ3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gWCAtIDE2IHwgMCwgUTJbaSArIDggPj4gM10gPSAzMTA1MDM2MTg0NjAxNDE4ZTIxNiwgbiA9IFEyW2kgKyA4ID4+IDNdICogMzEwNTAzNjE4NDYwMTQxOGUyMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gWCAtIDE2IHwgMCwgUTJbaSArIDggPj4gM10gPSAxMjg4MjI5NzUzOTE5NDI2N2UtMjQ3LCBuID0gUTJbaSArIDggPj4gM10gKiAxMjg4MjI5NzUzOTE5NDI2N2UtMjQ3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBRMls1ODM5XSwgdiA9IG4gKiAxLjI1ICsgLTEsIFAgPSBuICogMCwgbTIgPSB2ICsgUCwgeSA9IFEyWzU0MDJdICogMyArIFEyWzU4NDFdLCB4MiA9IG0yICsgeSwgbiA9IFEyWzU0MDRdLCByMCA9IG0yICogbiwgcSA9IHYsIHYgPSB2ICogbiwgbiA9IHEgKiB2LCBxID0geDIgKyBuLCB2ID0gUTJbNTQwM10gKiAzICsgUTJbNTg0Ml0gKyAobTIgKyAoeSAtIHgyKSkgKyBQICogKHIwICsgdikgKyAobiArICh4MiAtIHEpKSwgbiA9IG0yICogcjAsIG4gPSB2ICsgbTIgKiBuICogKG4gKiAobiAqIChtMiAqIFEyWzU0MTBdICsgUTJbNTQwOV0pICsgKG0yICogUTJbNTQwOF0gKyBRMls1NDA3XSkpICsgKG0yICogUTJbNTQwNl0gKyBRMls1NDA1XSkpLCB5ID0gcSArIG4sIFEyW3ggKyA4ID4+IDNdID0gbiArIChxIC0geSksIEEwKDAsIGYgJiAtMTM0MjE3NzI4KSwgQTAoMSwgaSB8IDApLCBuID0gK04wKCksIGcxKCt5KSwgaSA9IFcwKDEpIHwgMCwgQTAoMCwgVzAoMCkgJiAtMTM0MjE3NzI4KSwgQTAoMSwgaSB8IDApLCB2ID0gK04wKCksIFAgPSBuICogdiwgdiA9IChjMiAtIG4pICogdiArIGMyICogKFEyW3ggKyA4ID4+IDNdICsgKHkgLSB2KSksIGcxKCtQKSwgaSA9IFcwKDEpIHwgMCwgVzAoMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBpID4+PiAyMCAmIDIwNDcsIGYgLSA5NjkgPj4+IDAgPCA2MykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBQICsgMSwgZiA+Pj4gMCA8IDk2OSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBmID4+PiAwIDwgMTAzMywgZiA9IDAsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFggLSAxNiB8IDAsIFEyW2kgKyA4ID4+IDNdID0gMTI4ODIyOTc1MzkxOTQyNjdlLTI0NywgbiA9IFEyW2kgKyA4ID4+IDNdICogMTI4ODIyOTc1MzkxOTQyNjdlLTI0NzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBYIC0gMTYgfCAwLCBRMltpICsgOCA+PiAzXSA9IDMxMDUwMzYxODQ2MDE0MThlMjE2LCBuID0gUTJbaSArIDggPj4gM10gKiAzMTA1MDM2MTg0NjAxNDE4ZTIxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5ID0gdiwgbiA9IFEyWzUxMzNdLCB2ID0gUCAqIFEyWzUxMzJdICsgbiwgbiA9IHYgLSBuLCB5ID0geSArIChuICogUTJbNTEzNV0gKyAobiAqIFEyWzUxMzRdICsgUCkpLCBuID0geSAqIHksIFAgPSBuICogbiAqICh5ICogUTJbNTEzOV0gKyBRMls1MTM4XSksIG4gPSBuICogKHkgKiBRMls1MTM3XSArIFEyWzUxMzZdKSwgZzEoK3YpLCBXMCgxKSB8IDAsIGwgPSBXMCgwKSB8IDAsIHUgPSBsIDw8IDQgJiAyMDMyLCB2ID0gUCArIChuICsgKFEyW3UgKyA0MTE2OCA+PiAzXSArIHkpKSwgbyA9IDAsIHUgPSB1ICsgNDExNzYgfCAwLCBpID0gbyArIGVbdSA+PiAyXSB8IDAsIHUgPSBlW3UgKyA0ID4+IDJdICsgKGwgPDwgMTMpIHwgMCwgdSA9IGkgPj4+IDAgPCBvID4+PiAwID8gdSArIDEgfCAwIDogdSwgIWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShsICYgLTIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEwKDAsIGkgfCAwKSwgQTAoMSwgdSAtIDEwNTgwMTMxODQgfCAwKSwgbiA9ICtOMCgpLCBuID0gKG4gKiB2ICsgbikgKiA1NDg2MTI0MDY4NzkzNjg5ZTI4ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEwKDAsIGkgfCAwKSwgcyA9IHUgKyAxMDcxNjQ0NjcyIHwgMCwgQTAoMSwgcyB8IDApLCBxID0gK04wKCksIHkgPSBxICogdiwgbiA9IHkgKyBxLCBSMihuKSA8IDEgJiYgKGkgPSBYIC0gMTYgfCAwLCBRMltpICsgOCA+PiAzXSA9IDIyMjUwNzM4NTg1MDcyMDE0ZS0zMjQsIFEyW2kgKyA4ID4+IDNdID0gUTJbaSArIDggPj4gM10gKiAyMjI1MDczODU4NTA3MjAxNGUtMzI0LCBBMCgwLCAwKSwgQTAoMSwgcyAmIC0yMTQ3NDgzNjQ4KSwgUCA9IG4gPCAwID8gLTEgOiAxLCB2ID0gbiArIFAsIG4gPSB2ICsgKHkgKyAocSAtIG4pICsgKG4gKyAoUCAtIHYpKSkgLSBQLCBuID0gKGExID0gK04wKCksIFoxID0gbiwgcDEgPSBuID09IDAsIHAxID8gYTEgOiBaMSkpLCBuID0gbiAqIDIyMjUwNzM4NTg1MDcyMDE0ZS0zMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTAoMCwgaSB8IDApLCBBMCgxLCB1IHwgMCksIG4gPSArTjAoKSwgbiA9IG4gKiB2ICsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgWCA9IHggKyAxNiB8IDAsIHYgPSBuLCB5ID0gUTJbdzIgKyAzMiA+PiAzXSwgbiA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGcgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodyA+IFcoMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA9IEdyKGVbaCArIDI0ID4+IDJdLCBEMiksICFtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgUCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaTAgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcCAmJiBhID4+PiAwIDwgSDAgPj4+IDAgPyBhIDogSDAsIG0yID0geSAtIGYxIC8gdiwgZyA9IHQgKyAxIHwgMCwgaSA9IHQgPDwgMywgbCA9IGkgKyBIIHwgMCwgdSA9IGkgKyBmMiB8IDAsIHVyKGVbZVtoICsgMjAgPj4gMl0gPj4gMl0sIHQsIGkwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0QyICsgOTYgPj4gMl0gIT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsICF4ZShtLCBlW2ggKyAzNiA+PiAyXSwgdzIsIGcsIEMwLCBmMiArIDEyIHwgMCwgcCwgMCwgZVtoICsgOCA+PiAyXSwgZVtoID4+IDJdLCBlW2ggKyAxNiA+PiAyXSwgMCwgUzIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAxLCB2ID0gaTAsIFAgPSB2LCB5ID0gWTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IEcyW0QyID4+IDFdLCAhKChpIC0gMyAmIDY1NTM1KSA+Pj4gMCA8IDQgfCAoaSAtIDEwMjQgJiA2NTUzNSkgPj4+IDAgPCAxNDM2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsIHQgPyBuID0gUTJbdSArIDggPj4gM10gKyBRMltsID4+IDNdIDogbiA9IFEyW0ggPj4gM10sICEobiA8IG0yKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSAwLCB4ZShtLCBlW2ggKyAzNiA+PiAyXSwgdzIsIGcsIEMwLCBmMiArIDEyIHwgMCwgcCwgMCwgZVtoICsgOCA+PiAyXSwgZVtoID4+IDJdLCBlW2ggKyAxNiA+PiAyXSwgMCwgUzIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gUDIsIHkgPSBpMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID8gbiA9IFEyW3UgKyA4ID4+IDNdICsgUTJbbCA+PiAzXSA6IG4gPSBRMltIID4+IDNdLCBuIDwgbTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBQMiwgeSA9IGkwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCA9IGkwLCB2ID0gUCwgeSA9IFkyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDEsIG4gPSBpMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocSA9IG4sIG4gPSAodiArIHkpICogMC41LCBSMihuIC0gcSkgPD0gcSAqIDVlLTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHVyKGVbZVtoICsgMjAgPj4gMl0gPj4gMl0sIHQsIG4sIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbRDIgKyA5NiA+PiAyXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBHMltEMiA+PiAxXSwgISgoaSAtIDMgJiA2NTUzNSkgPj4+IDAgPj0gNCAmIChpIC0gMTAyNCAmIDY1NTM1KSA+Pj4gMCA+IDE0MzUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXhlKG0sIGVbaCArIDM2ID4+IDJdLCB3MiwgZywgQzAsIGYyICsgMTIgfCAwLCBwLCAwLCBlW2ggKyA4ID4+IDJdLCBlW2ggPj4gMl0sIGVbaCArIDE2ID4+IDJdLCAwLCBTMikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeDIgPSB2LCByMCA9IFAsIGkgPSBmLCBxID0gbiwgdiA9IG4sIFAgPSBuLCB0ID8gYzIgPSBRMlt1ICsgOCA+PiAzXSArIFEyW2wgPj4gM10gOiBjMiA9IFEyW0ggPj4gM10sICEoYzIgPCBtMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeDIgPSB2LCByMCA9IFAsIGkgPSBmLCBxID0gbiwgdiA9IG4sIFAgPSBuLCB0ID8gYzIgPSBRMlt1ICsgOCA+PiAzXSArIFEyW2wgPj4gM10gOiBjMiA9IFEyW0ggPj4gM10sICEoYzIgPCBtMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZiB8ICFhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBuLCBmID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gMSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEgPSB5LCB4MiA9IG4sIHIwID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgcSA9IHksIHgyID0gbiwgcjAgPSBuLCB5ID0gbiwgIXhlKG0sIGVbaCArIDM2ID4+IDJdLCB3MiwgZywgQzAsIGYyICsgMTIgfCAwLCBwLCAwLCBlW2ggKyA4ID4+IDJdLCBlW2ggPj4gMl0sIGVbaCArIDE2ID4+IDJdLCAwLCBTMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBxLCB2ID0geDIsIFAgPSByMCwgZiA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gbyArIDEgfCAwLCAobyB8IDApID09IDEyOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMShtKSwgbiA9IFAgPT0gMCA/IG4gOiBQOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXIoZVtlW2ggKyAyMCA+PiAyXSA+PiAyXSwgdCwgbiwgMSksIGYgPSAoZjIgKyAxNiB8IDApICsgKHQgPDwgMykgfCAwLCB0ID8gKGkgPSB0IDw8IDMsIG4gPSBRMlsoaSArIGYyIHwgMCkgKyA4ID4+IDNdICsgUTJbaSArIEggPj4gM10pIDogbiA9IFEyW0ggPj4gM10sIFEyW2YgPj4gM10gPSBuLCB0ID0gdCArIDEgfCAwLCAhKHQgPj4+IDAgPCBkW0wyICsgOCA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKEUwID0gZVtlW2ggKyAzMiA+PiAyXSArIDggPj4gMl0sICFFMCB8fCAoaSA9IGVbZVtoICsgMjAgPj4gMl0gPj4gMl0sIE8gPSBlW2kgKyAxNiA+PiAyXSwgIU8pKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgZm9yICh3MiA9IGVbaSArIDIwID4+IDJdLCBvID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0MCA9IG8gLSAxIHwgMCwgYyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gdzIgKyBaKGMsIDc2KSB8IDAsIE0wID0gZVtsICsgMjAgPj4gMl0sIE0wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlMCA9IGVbKGVbZVtoICsgMjQgPj4gMl0gKyAyNCA+PiAyXSArIFooYywgNTIpIHwgMCkgKyAyNCA+PiAyXSwgbjIgPSBXKCsoZTAgPj4+IDApICogMC4wNjI1KSwgdSA9IGVbRDIgKyA4OCA+PiAyXSwgaSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBaKGksIE0wKSwgdCA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAoKGYyICsgMTYgfCAwKSArIFooaSwgMTIwKSB8IDApICsgWih0LCAxMikgfCAwLCBCID0gdSArIFoodCArIGEgfCAwLCAxMikgfCAwLCB3ID0gVyhuMiAqIFcoZVtCID4+IDJdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMih3KSkgPCBXKDIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gfn53OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiA+PiAyXSA9IGcsIHcgPSBXKG4yICogVyhlW0IgKyA0ID4+IDJdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMih3KSkgPCBXKDIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gfn53OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDQgPj4gMl0gPSBnLCB3ID0gVyhuMiAqIFcoZVtCICsgOCA+PiAyXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIodykpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IH5+dzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtmICsgOCA+PiAyXSA9IGcsIHQgPSB0ICsgMSB8IDAsIChNMCB8IDApID09ICh0IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgKyAxIHwgMCwgKEUwIHwgMCkgPT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoeiA9IGVbbCArIDI4ID4+IDJdLCB0ID0gMCwgcyA9IChmMiArIDE2IHwgMCkgKyBaKHQwLCAxMjApIHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVID0geiArIFoodCwgMTUyKSB8IDAsIEMgPSBlW1UgKyAyNCA+PiAyXSwgQykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChKID0gVSArIDI4IHwgMCwgaSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IEogKyBaKGksIDM2KSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbdSArIDggPj4gMl0gPT0gZVt1ID4+IDJdIHwgZVt1ICsgMTIgPj4gMl0gPT0gZVt1ICsgNCA+PiAyXSB8fCAoRSA9IFooZVtVICsgMjAgPj4gMl0sIGVbVSArIDE2ID4+IDJdKSwgIUUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmID0gaSA8PCAyLCBhID0gWih0LCAxMiksIEggPSBmICsgKGEgKyBzIHwgMCkgfCAwLCB4ID0gZiArIChhICsgKChmMiArIDE2IHwgMCkgKyBaKG8sIDEyMCkgfCAwKSB8IDApIHwgMCwgaiA9IGVbdSArIDIwID4+IDJdLCBnMiA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChYMiA9IGogKyBaKGcyLCA0MCkgfCAwLCBtID0gWihlW1gyICsgMjAgPj4gMl0sIGVbWDIgKyAxNiA+PiAyXSksIG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwID0gZVt4ID4+IDJdLCBEID0gZVtIID4+IDJdLCBCID0gcCAtIEQgfCAwLCBmID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHoyID0gZVtYMiArIDI0ID4+IDJdICsgWihmLCA1MikgfCAwLCB1ID0gZTAgLSBlW3oyICsgMjggPj4gMl0gfCAwLCBhID0gcCAtIHUgfCAwLCBhID0gKHUgfCAwKSA8IChEIHwgMCkgPyBCIDogKGEgfCAwKSA+IDAgPyBhIDogMCwgZyA9IGVbejIgKyA0ID4+IDJdICsgWihvLCAyNCkgfCAwLCBsID0gZVt6MiArIDQ0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IFooYSwgMykgLSAyIHwgMCwgYSA9IGEgPyBsIDogMCwgZVtnID4+IDJdID0gYSwgIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2cgKyA0ID4+IDJdID0gZVsoZVt6MiArIDggPj4gMl0gKyBaKGEsIDI0KSB8IDApIC0gMjQgPj4gMl0sIGEgPSBlW3oyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBaKGEsIDMpLCBlW2cgPj4gMl0gPSB1LCAhYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGVbejIgKyA4ID4+IDJdLCBMMiA9IGVbKGEgKyBaKGwsIDI0KSB8IDApIC0gMjQgPj4gMl0sIGwgPSBsICsgdSB8IDAsIGVbZyArIDQgPj4gMl0gPSBlWyhhICsgWihsLCAyNCkgfCAwKSAtIDI0ID4+IDJdIC0gTDIsIGEgPSBMMiArIGVbejIgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZyArIDE2ID4+IDJdID0gYSwgZVt6MiArIDQ0ID4+IDJdID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZiArIDEgfCAwLCAobSB8IDApID09IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcyID0gZzIgKyAxIHwgMCwgKEUgfCAwKSA9PSAoZzIgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBpICsgMSB8IDAsIChDIHwgMCkgPT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgKyAxIHwgMCwgKE0wIHwgMCkgPT0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID0gYyArIDEgfCAwLCAoTyB8IDApID09IChjIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gdzIgKyBaKGwsIDc2KSB8IDAsIEMgPSBlW2cgKyAyMCA+PiAyXSwgQykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBlWyhlW2VbaCArIDI0ID4+IDJdICsgMjQgPj4gMl0gKyBaKGwsIDUyKSB8IDApICsgMjQgPj4gMl0sIG4yID0gVygrKGogPj4+IDApICogMC4wNjI1KSwgdSA9IGVbRDIgKyA4OCA+PiAyXSwgYyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gWihDLCBjKSwgZiA9IChmMiArIDE2IHwgMCkgKyBaKGMsIDEyMCkgfCAwLCB0ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmICsgWih0LCAxMikgfCAwLCBEID0gdSArIFoodCArIGEgfCAwLCAxMikgfCAwLCB3ID0gVyhuMiAqIFcoZVtEID4+IDJdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXKFIyKHcpKSA8IFcoMjE0NzQ4MzY0OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0gfn53OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtpID4+IDJdID0gQiwgdyA9IFcobjIgKiBXKGVbRCArIDQgPj4gMl0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIodykpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSB+fnc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA0ID4+IDJdID0gQiwgdyA9IFcobjIgKiBXKGVbRCArIDggPj4gMl0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIodykpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSB+fnc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgOCA+PiAyXSA9IEIsIHQgPSB0ICsgMSB8IDAsIChDIHwgMCkgPT0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID0gYyArIDEgfCAwLCAoRTAgfCAwKSA9PSAoYyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChtID0gZVtnICsgMjggPj4gMl0sIGkgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKID0gbSArIFooaSwgMTUyKSB8IDAsIHAgPSBlW0ogKyAyNCA+PiAyXSwgcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoRCA9IEogKyAyOCB8IDAsIGcyID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IEQgKyBaKGcyLCAzNikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbZiArIDggPj4gMl0gPT0gZVtmID4+IDJdIHwgZVtmICsgMTIgPj4gMl0gPT0gZVtmICsgNCA+PiAyXSB8fCAoQiA9IFooZVtKICsgMjAgPj4gMl0sIGVbSiArIDE2ID4+IDJdKSwgIUIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSAoKGYyICsgMTYgfCAwKSArIFooaSwgMTIpIHwgMCkgKyAoZzIgPDwgMikgfCAwLCB1ID0gZVtmICsgMjAgPj4gMl0sIGMgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEUgPSB1ICsgWihjLCA0MCkgfCAwLCBhID0gWihlW0UgKyAyMCA+PiAyXSwgZVtFICsgMTYgPj4gMl0pLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEggPSBlW2cgPj4gMl0sIGYgPSAwOyBzID0gZVtFICsgMjQgPj4gMl0gKyBaKGYsIDUyKSB8IDAsIGVbcyArIDQ0ID4+IDJdID0gMCwgeCA9IGVbcyArIDQgPj4gMl0sIHQgPSBqIC0gZVtzICsgMjggPj4gMl0gfCAwLCB0ID0gKHQgfCAwKSA8IChIIHwgMCkgPyBIIC0gdCB8IDAgOiAwLCB0ID0gdCA/IFoodCwgMykgLSAyIHwgMCA6IDAsIGVbeCA+PiAyXSA9IHQsIHQgJiYgKGVbeCArIDQgPj4gMl0gPSBlWyhlW3MgKyA4ID4+IDJdICsgWih0LCAyNCkgfCAwKSAtIDI0ID4+IDJdLCBlW3ggKyAxNiA+PiAyXSA9IGVbcyA+PiAyXSwgZVtzICsgNDQgPj4gMl0gPSB0KSwgZiA9IGYgKyAxIHwgMCwgKGEgfCAwKSAhPSAoZiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSBjICsgMSB8IDAsIChCIHwgMCkgPT0gKGMgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnMiA9IGcyICsgMSB8IDAsIChwIHwgMCkgPT0gKGcyIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBpICsgMSB8IDAsIChDIHwgMCkgPT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgKyAxIHwgMCwgKE8gfCAwKSA9PSAobCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBvICsgMSB8IDAsIChFMCB8IDApID09IChvIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChmID0gR3IoZVtoICsgMjQgPj4gMl0sIGVbaCArIDI4ID4+IDJdKSwgIWYgfHwgKGkgPSB4ZShmLCBlW2ggKyAzNiA+PiAyXSwgZVtlW2ggKyAyMCA+PiAyXSA+PiAyXSwgZVtlW2ggKyAzMiA+PiAyXSArIDggPj4gMl0sIEMwLCBrMCwgSDAsIHAyLCBlW2ggKyA0ID4+IDJdLCBlW2ggPj4gMl0sIGVbaCArIDE2ID4+IDJdLCAxLCBTMiksIEkxKGYpLCAhaSkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIG8gPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoWCA9IGYyICsgMTIxNiB8IDAsICFvKSB7CiAgICAgICAgICAgICAgICAgIFEoUzIsIDEsIDEwMTE3LCAwKSwgTGUocDIpOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVtrMCA+PiAyXSA9IGVbazAgPj4gMl0gKyAyOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoZVtBICsgNjAgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IFUyKGVbQSArIDY0ID4+IDJdKSwgIWEpIHsKICAgICAgICAgICAgICAgICAgICAgIFEoUzIsIDEsIDM3ODIsIDApLCBMZShwMik7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoazIoYSwgNjUzNjgsIDIpLCBrMihhICsgNCB8IDAsIDAsIDEpLCBrID0gYSArIDUgfCAwLCBsID0gYSArIDIgfCAwLCBlW3AyICsgNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gMzsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2VbcDIgKyA4ID4+IDJdICsgKFQwIDw8IDIpID4+IDJdLCBGW2gwICsgMTEgfCAwXSA9IGkgJiAxMjcsIEEgPSAxLCBpID4+PiAwID49IDEyOCkKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZiA9IGkgPj4+IDcgfCAwLCBGWyhoMCArIDExIHwgMCkgKyBBIHwgMF0gPSBmIHwgMTI4LCBBID0gQSArIDEgfCAwLCB0ID0gaSA+Pj4gMCA+IDE2MzgzLCBpID0gZiwgISF0OyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gQSAmIDI1NSwgZiA9IG8gJiA2NTUzNSwgaSArIGYgPj4+IDAgPj0gNjU1MzYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGIwICYgMjU1KSA9PSAyNTUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGsyKGwsIGYsIDIpLCBrMihrLCA2NTM2OCwgMiksIGIwID0gYjAgKyAxIHwgMCwgazIoayArIDQgfCAwLCBiMCAmIDI1NSwgMSksIGwgPSBrICsgMiB8IDAsIG8gPSAzLCBrID0gayArIDUgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IEEgJiAyNTU7IGkgPSBpIC0gMSB8IDAsIGsyKGssIElbaSArIChoMCArIDExIHwgMCkgfCAwXSwgMSksIGsgPSBrICsgMSB8IDAsIEEgPSBBIC0gMSB8IDAsICEhKEEgJiAyNTUpOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGYgKyBvIHwgMCwgVDAgPSBUMCArIDEgfCAwLCAhKFQwID4+PiAwIDwgZFtwMiArIDQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgQSA9IG8gJiA2NTUzNTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgIEEgPSAzOwogICAgICAgICAgICAgICAgICAgIGsyKGwsIEEsIDIpLCBBID0gayAtIGEgfCAwLCB1NihBICsgciB8IDAsIHIsIGVbazAgPj4gMl0pLCBGMihyLCBhLCBBKSwgUihhKSwgZVtrMCA+PiAyXSA9IEEgKyBlW2swID4+IDJdOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIExlKHAyKSwgayA9IDE7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBrID0gMCwgUShTMiwgMSwgMjc2MjUsIDApLCBMZShwMiksIFIoYSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gaDAgKyAxNiB8IDAsIGs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gbGUoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMCwgeSA9IDAsIHAgPSAwLCBIID0gMCwgSiA9IDAsIEUgPSAwLCBEID0gMCwgVSA9IDAsIFAgPSAwLCB4ID0gMCwgeiA9IDAsIGogPSAwLCBPID0gMCwgcSA9IDAsIGYyID0gMCwgbjIgPSAwLCBnMiA9IDAsIHcyID0gMCwgYzIgPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVbQSArIDg0ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbQSArIDUyID4+IDJdLCBpID0gZVtBICsgMTk2ID4+IDJdLCByID4+PiAwIDwgaSA+Pj4gMCAmJiAoZiA9IGVbQSArIDY0ID4+IDJdLCBmID4+PiAwIDwgaSArIDEgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShlW0EgKyAyMzYgPj4gMl0sIDEsIDE4Nzc2LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtBICsgNDQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlW0EgKyAzNiA+PiAyXSwgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyA0NCA+PiAyXSA9IDAsIHUgPSBlW0EgKyA2OCA+PiAyXSwgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtBICsgNTIgPj4gMl0sIGkgPSBlW0EgKyAxOTYgPj4gMl0sIHIgPj4+IDAgPCBpID4+PiAwICYmIChmID0gZVtBICsgNjQgPj4gMl0sIGYgPj4+IDAgPCBpICsgMSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKGVbQSArIDIzNiA+PiAyXSwgMSwgMTg4MjEsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW0EgKyA0NCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGVbQSArIDM2ID4+IDJdLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDQ0ID4+IDJdID0gMCwgdSA9IGVbQSArIDQ4ID4+IDJdLCBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBlW0EgKyA1MiA+PiAyXSwgZiA9IGVbQSArIDE5NiA+PiAyXSwgcyA+Pj4gMCA8IGYgPj4+IDAgJiYgKGogPSBlW0EgKyA2NCA+PiAyXSwgaiA+Pj4gMCA8IGYgKyAxID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEoZVtBICsgMjM2ID4+IDJdLCAxLCAxODk1NiwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbQSArIDQ0ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gZVtBICsgNDAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVbQSArIDIyOCA+PiAyXSA9IDAsIGVbQSArIDIzMiA+PiAyXSA9IDAsIGVbQSArIDQ0ID4+IDJdID0gMCwgSCA9IGVbQSArIDIwMCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gSCArICh3IDw8IDQpIHwgMCwgbiA9IGVbciArIDggPj4gMl0sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobSA9IGVbciArIDEyID4+IDJdLCBpID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiArIChpIF4gLTEpIHwgMCwgbCA9IG0gKyAoaSA8PCA0KSB8IDAsIGsgPSBvICsgZVtsID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+IDMxIHx8ICh5ID0gZVtyID4+IDJdLCB5ID4+PiAwID4gLTEgPj4+IGsgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHkgPDwgaywgdCA9IHQgJiYgayA+Pj4gMCA+IHQgPj4+IDAgPyB0IDogaywgZVtBICsgMjI4ID4+IDJdID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG8gKyBlW2wgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+IDMxIHx8IChsID0gZVtyICsgNCA+PiAyXSwgbCA+Pj4gMCA+IC0xID4+PiBrID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBsIDw8IGssIHUgPSB1ICYmIGsgPj4+IDAgPiB1ID4+PiAwID8gdSA6IGssIGVbQSArIDIzMiA+PiAyXSA9IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSArIDEgfCAwLCAobiB8IDApID09IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSB3ICsgMSB8IDAsIChmIHwgMCkgPT0gKHcgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCB8ICF1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJW0EgfCAwXSB8fCAoZVtBICsgMTA4ID4+IDJdID0gZVtBICsgMjA4ID4+IDJdLCBlW0EgKyAxMDAgPj4gMl0gPSBlW0EgKyAyMDQgPj4gMl0sIGVbQSArIDExMiA+PiAyXSA9IGVbQSArIDIxNiA+PiAyXSwgZVtBICsgMTA0ID4+IDJdID0gZVtBICsgMjEyID4+IDJdKSwgaCA9IGVbQSArIDQ4ID4+IDJdLCBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFAgPSBlW0EgKyA1MiA+PiAyXSwgZiA9IGVbQSArIDE5NiA+PiAyXSwgUCA+Pj4gMCA8IGYgPj4+IDAgJiYgKGcyID0gZVtBICsgNjQgPj4gMl0sIGcyID4+PiAwIDwgZiArIDEgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShlW0EgKyAyMzYgPj4gMl0sIDEsIDE4OTExLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtBICsgNDQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSBlW0EgKyAyMDAgPj4gMl0sIGwgPSBlW0EgKyAyOCA+PiAyXSwgQyA9IEUgKyAobCA8PCA0KSB8IDAsIHAgPSBlW0EgKyA0MCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVtBICsgMjI4ID4+IDJdID0gMCwgZVtBICsgMjMyID4+IDJdID0gMCwgZVtBICsgNDQgPj4gMl0gPSAwLCBFID0gZVtBICsgMjAwID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSAoQiA8PCA0KSArIEUgfCAwLCBuID0gZVtyICsgOCA+PiAyXSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChIID0gZVtyICsgMTIgPj4gMl0sIGkgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuICsgKGkgXiAtMSkgfCAwLCBtID0gSCArIChpIDw8IDQpIHwgMCwgayA9IG8gKyBlW20gPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID4+PiAwID4gMzEgfHwgKHkgPSBlW3IgPj4gMl0sIHkgPj4+IDAgPiAtMSA+Pj4gayA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0geSA8PCBrLCB0ID0gdCAmJiBrID4+PiAwID4gdCA+Pj4gMCA/IHQgOiBrLCBlW0EgKyAyMjggPj4gMl0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbyArIGVbbSArIDQgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID4+PiAwID4gMzEgfHwgKG0gPSBlW3IgKyA0ID4+IDJdLCBtID4+PiAwID4gLTEgPj4+IGsgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG0gPDwgaywgdSA9IHUgJiYgayA+Pj4gMCA+IHUgPj4+IDAgPyB1IDogaywgZVtBICsgMjMyID4+IDJdID0gdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBpICsgMSB8IDAsIChuIHwgMCkgPT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9IEIgKyAxIHwgMCwgKGYgfCAwKSA9PSAoQiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0IHwgIXUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJW0EgfCAwXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0gZVtBICsgMTA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IGVbQSArIDIwOCA+PiAyXSwgZVtBICsgMTA4ID4+IDJdID0gQiwgZVtBICsgMTAwID4+IDJdID0gZVtBICsgMjA0ID4+IDJdLCBlW0EgKyAxMTIgPj4gMl0gPSBlW0EgKyAyMTYgPj4gMl0sIGVbQSArIDEwNCA+PiAyXSA9IGVbQSArIDIxMiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9IGVbQSArIDUyID4+IDJdLCBpID0gZVtBICsgMTk2ID4+IDJdLCBCID4+PiAwIDwgaSA+Pj4gMCAmJiAoaiA9IGVbQSArIDY0ID4+IDJdLCBqID4+PiAwIDwgaSArIDEgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShlW0EgKyAyMzYgPj4gMl0sIDEsIDE4ODY2LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtBICsgNDQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSBlW0EgKyAyOCA+PiAyXSwgaCA9IGVbQSArIDIwMCA+PiAyXSArIChCIDw8IDQpIHwgMCwgdyA9IGVbQSArIDQwID4+IDJdLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDI4ID4+IDJdID0gQiwgZVtBICsgNDQgPj4gMl0gPSAwLCBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHQgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyA0MCA+PiAyXSA9IHUsIGRbQSArIDU2ID4+IDJdIDw9IHUgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGVbQSArIDQ4ID4+IDJdLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDMyID4+IDJdID0gbCwgZFtBICsgNjAgPj4gMl0gPD0gbCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMjggPj4gMl0gPSByLCBpID0gciwgaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMzYgPj4gMl0gPSB0LCBkW0EgKyA3NiA+PiAyXSA8PSB0ID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDI4ID4+IDJdLCBoID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gKChaKGVbQSArIDE2ID4+IDJdLCBlW0EgKyAzMiA+PiAyXSkgKyBaKGVbQSArIDEyID4+IDJdLCBlW0EgKyA0MCA+PiAyXSkgfCAwKSArIFooZVtBICsgMjAgPj4gMl0sIGVbQSArIDI4ID4+IDJdKSB8IDApICsgWihlW0EgKyAyNCA+PiAyXSwgdCkgfCAwLCBpID4+PiAwID49IGRbQSArIDggPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyA0ID4+IDJdICsgKGkgPDwgMSkgfCAwLCBHMltpID4+IDFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZVtBICsgNDAgPj4gMl0gKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPj0gZiA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyAzMiA+PiAyXSwgbiA9IGVbQSArIDIwMCA+PiAyXSArIChpIDw8IDQpIHwgMCwgayA+Pj4gMCA+PSBkW24gKyA4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJW0EgfCAwXSB8fCAoaSA9IGVbbiArIDEyID4+IDJdICsgKGsgPDwgNCkgfCAwLCBlW0EgKyA3NiA+PiAyXSA9IFooZVtpICsgMTIgPj4gMl0sIGVbaSArIDggPj4gMl0pKSwgdCA9IGVbQSArIDcyID4+IDJdLCBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMSB8IDAsIGVbQSArIDI4ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlW0EgKyAzMiA+PiAyXSArIDEgfCAwLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgczogZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHcgKyAxIHwgMCwgZVtBICsgNDAgPj4gMl0gPSB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPj4+IDAgPj0gaiA+Pj4gMCB8fCAoZVtBICsgMjI4ID4+IDJdID0gMCwgZVtBICsgMjMyID4+IDJdID0gMCwgaCA9IGVbQSArIDIwMCA+PiAyXSArIChCIDw8IDQpIHwgMCwgciA9IGVbaCArIDggPj4gMl0sICFyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IGVbaCArIDEyID4+IDJdLCB0ID0gMCwgbCA9IDAsIGkgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gciArIChpIF4gLTEpIHwgMCwgayA9IG4gKyAoaSA8PCA0KSB8IDAsIGYgPSBIICsgZVtrID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID4+PiAwID4gMzEgfHwgKG0gPSBlW2ggPj4gMl0sIG0gPj4+IDAgPiAtMSA+Pj4gZiA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBtIDw8IGYsIGwgPSBsICYmIGYgPj4+IDAgPiBsID4+PiAwID8gbCA6IGYsIGVbQSArIDIyOCA+PiAyXSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IEggKyBlW2sgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID4+PiAwID4gMzEgfHwgKGsgPSBlW2ggKyA0ID4+IDJdLCBrID4+PiAwID4gLTEgPj4+IGYgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gayA8PCBmLCB0ID0gdCAmJiBmID4+PiAwID4gdCA+Pj4gMCA/IHQgOiBmLCBlW0EgKyAyMzIgPj4gMl0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSArIDEgfCAwLCAociB8IDApID09IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWwgfCAhdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElbQSB8IDBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVbQSArIDEwOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlW0EgKyAyMDggPj4gMl0sIGVbQSArIDEwOCA+PiAyXSA9IHQsIGVbQSArIDEwMCA+PiAyXSA9IGVbQSArIDIwNCA+PiAyXSwgZVtBICsgMTEyID4+IDJdID0gZVtBICsgMjE2ID4+IDJdLCBlW0EgKyAxMDQgPj4gMl0gPSBlW0EgKyAyMTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMjI0ID4+IDJdID0gdCwgZFtBICsgMTEyID4+IDJdIDw9IHQgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IGVbQSArIDEwMCA+PiAyXSwgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFtBICsgNTYgPj4gMl0gPD0gdyA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZVtBICsgMzIgPj4gMl0sIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAoKFooZVtBICsgMTYgPj4gMl0sIGVbQSArIDMyID4+IDJdKSArIFooZVtBICsgMTIgPj4gMl0sIHcpIHwgMCkgKyBaKGVbQSArIDIwID4+IDJdLCBCKSB8IDApICsgWihlW0EgKyAyNCA+PiAyXSwgZVtBICsgMzYgPj4gMl0pIHwgMCwgaSA+Pj4gMCA+PSBkW0EgKyA4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyA0ID4+IDJdICsgKGkgPDwgMSkgfCAwLCBHMltpID4+IDFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IEIgKyAxIHwgMCwgZVtBICsgMjggPj4gMl0gPSBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMjIwID4+IDJdID0gRSwgZFtBICsgMTA0ID4+IDJdIDw9IEUgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW0EgKyA0OCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB1ICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMzIgPj4gMl0gPSB1LCByID0gZVtBICsgNjAgPj4gMl0sIGkgPSBlW2ggKyA4ID4+IDJdLCAoaSA+Pj4gMCA+IHIgPj4+IDAgPyByIDogaSkgPj4+IDAgPiB1ID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtoID4+IDJdLCBsID0gaSArICh1IF4gLTEpIHwgMCwgciA9IGwgJiAzMSwgKGwgJiA2MykgPj4+IDAgPj0gMzIgPyAoaSA9IGYgPDwgciwgQyA9IDApIDogKGkgPSAoMSA8PCByKSAtIDEgJiBmID4+PiAzMiAtIHIsIEMgPSBmIDw8IHIpLCB5ID0gaSwgbiA9IEMsIHIgPSBsICYgMzEsIChsICYgNjMpID4+PiAwID49IDMyID8gaSA9IGkgPj4+IHIgfCAwIDogaSA9ICgoMSA8PCByKSAtIDEgJiBpKSA8PCAzMiAtIHIgfCBuID4+PiByLCAoaSB8IDApICE9IChmIHwgMCkgfHwgKGkgPSBsICYgMzEsIChsICYgNjMpID4+PiAwID49IDMyID8gaSA9IC0xID4+PiBpIHwgMCA6IGkgPSAoMSA8PCBpKSAtIDEgPDwgMzIgLSBpIHwgLTEgPj4+IGksIHIgPSBlW2ggKyA0ID4+IDJdLCAoaSAmIHIpICE9IChyIHwgMCkpIHx8IChuID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gciA8PCBuLCBwID0gMCkgOiAoaSA9ICgxIDw8IG4pIC0gMSAmIHIgPj4+IDMyIC0gbiwgcCA9IHIgPDwgbiksIEQgPSBpLCBIID0gaSAtICFwIHwgMCwgaSA9IEgsIFAgPSBwIC0gMSB8IDAsIGsgPSBlW0EgKyAyMTYgPj4gMl0sIG4gPSBQICsgayB8IDAsIHEgPSBuMChuLCBrID4+PiAwID4gbiA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIHAsIEQpLCB2ID0gZVtBICsgMjA4ID4+IDJdLCBuID0gdiArIFAgfCAwLCBpID0gdiA+Pj4gMCA+IG4gPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBuID0gbjAobiwgaSwgcCwgRCksIG0gPSB5IC0gIUMgfCAwLCBpID0gbSwgYyA9IEMgLSAxIHwgMCwgbyA9IGVbQSArIDIxMiA+PiAyXSwgayA9IGMgKyBvIHwgMCwgTyA9IG4wKGssIGsgPj4+IDAgPCBvID4+PiAwID8gaSArIDEgfCAwIDogaSwgQywgeSksIHggPSBlW0EgKyAyMDQgPj4gMl0sIGsgPSBjICsgeCB8IDAsIGkgPSB4ID4+PiAwID4gayA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGsgPSBuMChrLCBpLCBDLCB5KSwgSiA9IGVbaCArIDEyID4+IDJdICsgKHUgPDwgNCkgfCAwLCB6ID0gZVtKID4+IDJdLCBvID0geiArIGwgfCAwLCBpID0gbyAmIDMxLCAobyAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSAtMSA+Pj4gaSB8IDAgOiBpID0gKDEgPDwgaSkgLSAxIDw8IDMyIC0gaSB8IC0xID4+PiBpLCAoZiB8IDApICE9IChpICYgZikpIHx8IChhID0gciwgZjIgPSByLCBzID0gciwgVSA9IGVbSiArIDQgPj4gMl0sIHIgPSBVICsgbCB8IDAsIGcgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gKGkgPSBhIDw8IGcsIGcgPSAwKSA6IChpID0gKDEgPDwgZykgLSAxICYgcyA+Pj4gMzIgLSBnLCBnID0gcyA8PCBnKSwgYSA9IGcsIHMgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gYSA9IGkgPj4+IHMgfCAwIDogYSA9ICgoMSA8PCBzKSAtIDEgJiBpKSA8PCAzMiAtIHMgfCBhID4+PiBzLCAoZjIgfCAwKSAhPSAoYSB8IDApKSB8fCAocyA9IGVbQSArIDIyNCA+PiAyXSwgVmUocywgZywgaSkgfCBxMiAmJiAoKHMgfCAwKSAhPSAodiB8IDApIHx8IChhID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gLTEgPDwgYSwgciA9IDApIDogKHIgPSAtMSA8PCBhLCBpID0gciB8ICgxIDw8IGEpIC0gMSAmIC0xID4+PiAzMiAtIGEpLCByID0gciBeIC0xLCBnID0gaSBeIC0xLCB2ID0gciwgaSA9IDAsIGEgPSBuLCByID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gbiA8PCByLCByID0gMCkgOiAoaSA9ICgxIDw8IHIpIC0gMSAmIGEgPj4+IDMyIC0gciB8IGkgPDwgciwgciA9IGEgPDwgciksICEodiAmIHIgfCBpICYgZykpKSkgfHwgKGEgPSBvICYgMzEsIHIgPSBlW0EgKyAyMjAgPj4gMl0sIChvICYgNjMpID4+PiAwID49IDMyID8gKGkgPSBmIDw8IGEsIGEgPSAwKSA6IChpID0gKDEgPDwgYSkgLSAxICYgZiA+Pj4gMzIgLSBhLCBhID0gZiA8PCBhKSwgVmUociwgYSwgaSkgfCBxMiAmJiAoKHIgfCAwKSAhPSAoeCB8IDApIHx8IChmID0gbyAmIDMxLCAobyAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gLTEgPDwgZiwgYSA9IDApIDogKGEgPSAtMSA8PCBmLCBpID0gYSB8ICgxIDw8IGYpIC0gMSAmIC0xID4+PiAzMiAtIGYpLCBmID0gYSBeIC0xLCBhID0gaSBeIC0xLCBnID0gZiwgaSA9IDAsIG8gPSBrLCBmID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gayA8PCBmLCBmID0gMCkgOiAoaSA9ICgxIDw8IGYpIC0gMSAmIG8gPj4+IDMyIC0gZiB8IGkgPDwgZiwgZiA9IG8gPDwgZiksICEoZyAmIGYgfCBpICYgYSkpKSkgfHwgKGYgPSBlW0ogKyA4ID4+IDJdLCAhZiB8ICFlW0ogKyAxMiA+PiAyXSB8IChrIHwgMCkgPT0gKE8gfCAwKSkgfHwgKG4gfCAwKSA9PSAocSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBlW0EgKyA2OCA+PiAyXSwgZVtBICsgNDAgPj4gMl0gPSB3LCBpID0gbSwgciA9IHIgKyBjIHwgMCwgaSA9IHIgPj4+IDAgPCBjID4+PiAwID8gaSArIDEgfCAwIDogaSwgciA9IChuMChyLCBpLCBDLCB5KSA+Pj4geikgLSAoayA+Pj4geikgfCAwLCBpID0gSCwgayA9IHMgKyBQIHwgMCwgaSA9IGsgPj4+IDAgPCBzID4+PiAwID8gaSArIDEgfCAwIDogaSwgdzIgPSBBLCBjMiA9IFooZiwgKG4wKGssIGksIHAsIEQpID4+PiBVKSAtIChuID4+PiBVKSB8IDApICsgciB8IDAsIGVbdzIgKyAzNiA+PiAyXSA9IGMyLCBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW0EgKyAyMjAgPj4gMl0sIHIgPSBlW0EgKyAyMjggPj4gMl0sIEUgPSBpICsgciAtIChpID4+PiAwKSAlIChyID4+PiAwKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtBICsgMjI0ID4+IDJdLCByID0gZVtBICsgMjMyID4+IDJdLCB0ID0gaSArIHIgLSAoaSA+Pj4gMCkgJSAociA+Pj4gMCkgfCAwLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBsOiBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHAgKyAxIHwgMCwgZVtBICsgNDAgPj4gMl0gPSBwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDIyNCA+PiAyXSA9IEIsIGRbQSArIDExMiA+PiAyXSA8PSBCID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gZVtBICsgMTAwID4+IDJdLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgczogZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyAyMjAgPj4gMl0gPSB4LCBkW0EgKyAxMDQgPj4gMl0gPD0geCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDI4ID4+IDJdID0gUCwgbCA9IFAsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRbQSArIDU2ID4+IDJdIDw9IHAgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBlW0EgKyAzMiA+PiAyXSwgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9ICgoWihlW0EgKyAxNiA+PiAyXSwgZVtBICsgMzIgPj4gMl0pICsgWihlW0EgKyAxMiA+PiAyXSwgcCkgfCAwKSArIFooZVtBICsgMjAgPj4gMl0sIGwpIHwgMCkgKyBaKGVbQSArIDI0ID4+IDJdLCBlW0EgKyAzNiA+PiAyXSkgfCAwLCBpID4+PiAwID49IGRbQSArIDggPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVtBICsgNCA+PiAyXSArIChpIDw8IDEpIHwgMCwgRzJbaSA+PiAxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtBICsgMjI0ID4+IDJdLCByID0gZVtBICsgMjMyID4+IDJdLCBCID0gaSArIHIgLSAoaSA+Pj4gMCkgJSAociA+Pj4gMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA+PSBnMiA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gZVtBICsgNDggPj4gMl0sIGVbQSArIDMyID4+IDJdID0gdywgQyA9IChsIDw8IDQpICsgRSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gdyArIDEgfCAwLCBlW0EgKyAzMiA+PiAyXSA9IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtBICsgNjAgPj4gMl0sIGkgPSBlW0MgKyA4ID4+IDJdLCAoaSA+Pj4gMCA+IHIgPj4+IDAgPyByIDogaSkgPj4+IDAgPiB3ID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbQyA+PiAyXSwgdSA9IGkgKyAodyBeIC0xKSB8IDAsIHIgPSB1ICYgMzEsICh1ICYgNjMpID4+PiAwID49IDMyID8gKGkgPSBmIDw8IHIsIGggPSAwKSA6IChpID0gKDEgPDwgcikgLSAxICYgZiA+Pj4gMzIgLSByLCBoID0gZiA8PCByKSwgeSA9IGksIG4gPSBoLCByID0gdSAmIDMxLCAodSAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSBpID4+PiByIHwgMCA6IGkgPSAoKDEgPDwgcikgLSAxICYgaSkgPDwgMzIgLSByIHwgbiA+Pj4gciwgKGkgfCAwKSAhPSAoZiB8IDApIHx8IChpID0gdSAmIDMxLCAodSAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSAtMSA+Pj4gaSB8IDAgOiBpID0gKDEgPDwgaSkgLSAxIDw8IDMyIC0gaSB8IC0xID4+PiBpLCByID0gZVtDICsgNCA+PiAyXSwgKGkgJiByKSAhPSAociB8IDApKSB8fCAobiA9IHUgJiAzMSwgKHUgJiA2MykgPj4+IDAgPj0gMzIgPyAoaSA9IHIgPDwgbiwgZyA9IDApIDogKGkgPSAoMSA8PCBuKSAtIDEgJiByID4+PiAzMiAtIG4sIGcgPSByIDw8IG4pLCBEID0gaSwgSCA9IGkgLSAhZyB8IDAsIGkgPSBILCBxID0gZyAtIDEgfCAwLCBrID0gZVtBICsgMjE2ID4+IDJdLCBuID0gcSArIGsgfCAwLCBPID0gbjAobiwgayA+Pj4gMCA+IG4gPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBnLCBEKSwgSiA9IGVbQSArIDIwOCA+PiAyXSwgbiA9IEogKyBxIHwgMCwgaSA9IEogPj4+IDAgPiBuID4+PiAwID8gaSArIDEgfCAwIDogaSwgbiA9IG4wKG4sIGksIGcsIEQpLCBtID0geSAtICFoIHwgMCwgaSA9IG0sIGMgPSBoIC0gMSB8IDAsIG8gPSBlW0EgKyAyMTIgPj4gMl0sIGsgPSBjICsgbyB8IDAsIGEgPSBuMChrLCBrID4+PiAwIDwgbyA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGgsIHkpLCB6ID0gZVtBICsgMjA0ID4+IDJdLCBrID0gYyArIHogfCAwLCBpID0geiA+Pj4gMCA+IGsgPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBrID0gbjAoaywgaSwgaCwgeSksIFUgPSBlW0MgKyAxMiA+PiAyXSArICh3IDw8IDQpIHwgMCwgaiA9IGVbVSA+PiAyXSwgbyA9IGogKyB1IHwgMCwgaSA9IG8gJiAzMSwgKG8gJiA2MykgPj4+IDAgPj0gMzIgPyBpID0gLTEgPj4+IGkgfCAwIDogaSA9ICgxIDw8IGkpIC0gMSA8PCAzMiAtIGkgfCAtMSA+Pj4gaSwgKGYgfCAwKSAhPSAoaSAmIGYpKSB8fCAodCA9IHIsIGYyID0gciwgcyA9IHIsIG4yID0gZVtVICsgNCA+PiAyXSwgciA9IG4yICsgdSB8IDAsIHYgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gKGkgPSB0IDw8IHYsIHYgPSAwKSA6IChpID0gKDEgPDwgdikgLSAxICYgcyA+Pj4gMzIgLSB2LCB2ID0gcyA8PCB2KSwgdCA9IHYsIHMgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gdCA9IGkgPj4+IHMgfCAwIDogdCA9ICgoMSA8PCBzKSAtIDEgJiBpKSA8PCAzMiAtIHMgfCB0ID4+PiBzLCAoZjIgfCAwKSAhPSAodCB8IDApKSB8fCAocyA9IGVbQSArIDIyNCA+PiAyXSwgVmUocywgdiwgaSkgfCBxMiAmJiAoKHMgfCAwKSAhPSAoSiB8IDApIHx8ICh0ID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gLTEgPDwgdCwgciA9IDApIDogKHIgPSAtMSA8PCB0LCBpID0gciB8ICgxIDw8IHQpIC0gMSAmIC0xID4+PiAzMiAtIHQpLCByID0gciBeIC0xLCB2ID0gaSBeIC0xLCBmMiA9IHIsIGkgPSAwLCB0ID0gbiwgciA9IHUgJiAzMSwgKHUgJiA2MykgPj4+IDAgPj0gMzIgPyAoaSA9IG4gPDwgciwgciA9IDApIDogKGkgPSAoMSA8PCByKSAtIDEgJiB0ID4+PiAzMiAtIHIgfCBpIDw8IHIsIHIgPSB0IDw8IHIpLCAhKGYyICYgciB8IGkgJiB2KSkpKSB8fCAodCA9IG8gJiAzMSwgciA9IGVbQSArIDIyMCA+PiAyXSwgKG8gJiA2MykgPj4+IDAgPj0gMzIgPyAoaSA9IGYgPDwgdCwgZiA9IDApIDogKGkgPSAoMSA8PCB0KSAtIDEgJiBmID4+PiAzMiAtIHQsIGYgPSBmIDw8IHQpLCBWZShyLCBmLCBpKSB8IHEyICYmICgociB8IDApICE9ICh6IHwgMCkgfHwgKGYgPSBvICYgMzEsIChvICYgNjMpID4+PiAwID49IDMyID8gKGkgPSAtMSA8PCBmLCB0ID0gMCkgOiAodCA9IC0xIDw8IGYsIGkgPSB0IHwgKDEgPDwgZikgLSAxICYgLTEgPj4+IDMyIC0gZiksIGYgPSB0IF4gLTEsIHQgPSBpIF4gLTEsIHYgPSBmLCBpID0gMCwgbyA9IGssIGYgPSB1ICYgMzEsICh1ICYgNjMpID4+PiAwID49IDMyID8gKGkgPSBrIDw8IGYsIGYgPSAwKSA6IChpID0gKDEgPDwgZikgLSAxICYgbyA+Pj4gMzIgLSBmIHwgaSA8PCBmLCBmID0gbyA8PCBmKSwgISh2ICYgZiB8IGkgJiB0KSkpKSB8fCAoZiA9IGVbVSArIDggPj4gMl0sICFmIHwgIWVbVSArIDEyID4+IDJdIHwgKGsgfCAwKSA9PSAoYSB8IDApKSB8fCAobiB8IDApID09IChPIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZVtBICsgNjggPj4gMl0sIGVbQSArIDQwID4+IDJdID0gcCwgaSA9IG0sIHIgPSByICsgYyB8IDAsIGkgPSByID4+PiAwIDwgYyA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIHIgPSAobjAociwgaSwgaCwgeSkgPj4+IGopIC0gKGsgPj4+IGopIHwgMCwgaSA9IEgsIGsgPSBzICsgcSB8IDAsIGkgPSBrID4+PiAwIDwgcyA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIHcyID0gQSwgYzIgPSBaKGYsIChuMChrLCBpLCBnLCBEKSA+Pj4gbjIpIC0gKG4gPj4+IG4yKSB8IDApICsgciB8IDAsIGVbdzIgKyAzNiA+PiAyXSA9IGMyLCBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsICsgMSB8IDAsIGVbQSArIDI4ID4+IDJdID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW0EgKyAyMjAgPj4gMl0sIHIgPSBlW0EgKyAyMjggPj4gMl0sIHggPSBpICsgciAtIChpID4+PiAwKSAlIChyID4+PiAwKSB8IDAsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgQTogZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gQyArIDEgfCAwLCBlW0EgKyA0MCA+PiAyXSA9IEM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMzIgPj4gMl0gPSBoLCBkW0EgKyA2MCA+PiAyXSA8PSBoID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBlW0EgKyAxMDggPj4gMl0sIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGw6IGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMjI0ID4+IDJdID0gcCwgZFtBICsgMTEyID4+IDJdIDw9IHAgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSBlW0EgKyAxMDAgPj4gMl0sIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRbQSArIDU2ID4+IDJdIDw9IEMgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0gZVtBICsgMjggPj4gMl0sIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAoKFooZVtBICsgMTYgPj4gMl0sIGVbQSArIDMyID4+IDJdKSArIFooZVtBICsgMTIgPj4gMl0sIEMpIHwgMCkgKyBaKGVbQSArIDIwID4+IDJdLCBlW0EgKyAyOCA+PiAyXSkgfCAwKSArIFooZVtBICsgMjQgPj4gMl0sIGVbQSArIDM2ID4+IDJdKSB8IDAsIGkgPj4+IDAgPj0gZFtBICsgOCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDQgPj4gMl0gKyAoaSA8PCAxKSB8IDAsIEcyW2kgPj4gMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlW0EgKyAzMiA+PiAyXSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMjIwID4+IDJdID0gRSwgZFtBICsgMTA0ID4+IDJdIDw9IEUgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAyOCA+PiAyXSA9IHMsIEIgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IEIgKyAxIHwgMCwgZVtBICsgMjggPj4gMl0gPSBCOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID4+PiAwIDwgaiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID0gZVtBICsgMzIgPj4gMl0sIGwgPSBlW0EgKyAyMDAgPj4gMl0gKyAoQiA8PCA0KSB8IDAsIGkgPSBlW2wgKyA4ID4+IDJdLCBjID4+PiAwID49IGkgPj4+IDAgfHwgKGYgPSBlW2wgPj4gMl0sIHUgPSBpICsgKGMgXiAtMSkgfCAwLCByID0gdSAmIDMxLCAodSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gZiA8PCByLCB0ID0gMCkgOiAoaSA9ICgxIDw8IHIpIC0gMSAmIGYgPj4+IDMyIC0gciwgdCA9IGYgPDwgciksIG8gPSBpLCBuID0gdCwgciA9IHUgJiAzMSwgKHUgJiA2MykgPj4+IDAgPj0gMzIgPyBpID0gaSA+Pj4gciB8IDAgOiBpID0gKCgxIDw8IHIpIC0gMSAmIGkpIDw8IDMyIC0gciB8IG4gPj4+IHIsIChpIHwgMCkgIT0gKGYgfCAwKSkgfHwgKGkgPSB1ICYgMzEsICh1ICYgNjMpID4+PiAwID49IDMyID8gaSA9IC0xID4+PiBpIHwgMCA6IGkgPSAoMSA8PCBpKSAtIDEgPDwgMzIgLSBpIHwgLTEgPj4+IGksIHIgPSBlW2wgKyA0ID4+IDJdLCAoaSAmIHIpICE9IChyIHwgMCkpIHx8IChuID0gdSAmIDMxLCAodSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gciA8PCBuLCB3ID0gMCkgOiAoaSA9ICgxIDw8IG4pIC0gMSAmIHIgPj4+IDMyIC0gbiwgdyA9IHIgPDwgbiksIHkgPSBpLCBIID0gaSAtICF3IHwgMCwgaSA9IEgsIFAgPSB3IC0gMSB8IDAsIGsgPSBlW0EgKyAyMTYgPj4gMl0sIG4gPSBQICsgayB8IDAsIHEgPSBuMChuLCBrID4+PiAwID4gbiA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIHcsIHkpLCB2ID0gZVtBICsgMjA4ID4+IDJdLCBuID0gdiArIFAgfCAwLCBpID0gdiA+Pj4gMCA+IG4gPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBuID0gbjAobiwgaSwgdywgeSksIG0gPSBvIC0gIXQgfCAwLCBpID0gbSwgRCA9IHQgLSAxIHwgMCwgTyA9IGVbQSArIDIxMiA+PiAyXSwgayA9IEQgKyBPIHwgMCwgTyA9IG4wKGssIGsgPj4+IDAgPCBPID4+PiAwID8gaSArIDEgfCAwIDogaSwgdCwgbyksIHggPSBlW0EgKyAyMDQgPj4gMl0sIGsgPSBEICsgeCB8IDAsIGkgPSB4ID4+PiAwID4gayA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGsgPSBuMChrLCBpLCB0LCBvKSwgSiA9IGVbbCArIDEyID4+IDJdICsgKGMgPDwgNCkgfCAwLCB6ID0gZVtKID4+IDJdLCBsID0geiArIHUgfCAwLCBpID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSAtMSA+Pj4gaSB8IDAgOiBpID0gKDEgPDwgaSkgLSAxIDw8IDMyIC0gaSB8IC0xID4+PiBpLCAoZiB8IDApICE9IChpICYgZikpIHx8IChhID0gciwgZjIgPSByLCBjID0gciwgVSA9IGVbSiArIDQgPj4gMl0sIHIgPSBVICsgdSB8IDAsIGcgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gKGkgPSBhIDw8IGcsIGcgPSAwKSA6IChpID0gKDEgPDwgZykgLSAxICYgYyA+Pj4gMzIgLSBnLCBnID0gYyA8PCBnKSwgYSA9IGcsIGMgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gYSA9IGkgPj4+IGMgfCAwIDogYSA9ICgoMSA8PCBjKSAtIDEgJiBpKSA8PCAzMiAtIGMgfCBhID4+PiBjLCAoZjIgfCAwKSAhPSAoYSB8IDApKSB8fCAoYyA9IGVbQSArIDIyNCA+PiAyXSwgVmUoYywgZywgaSkgfCBxMiAmJiAoKGMgfCAwKSAhPSAodiB8IDApIHx8IChhID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gLTEgPDwgYSwgciA9IDApIDogKHIgPSAtMSA8PCBhLCBpID0gciB8ICgxIDw8IGEpIC0gMSAmIC0xID4+PiAzMiAtIGEpLCByID0gciBeIC0xLCBnID0gaSBeIC0xLCB2ID0gciwgaSA9IDAsIGEgPSBuLCByID0gdSAmIDMxLCAodSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gbiA8PCByLCByID0gMCkgOiAoaSA9ICgxIDw8IHIpIC0gMSAmIGEgPj4+IDMyIC0gciB8IGkgPDwgciwgciA9IGEgPDwgciksICEodiAmIHIgfCBpICYgZykpKSkgfHwgKGEgPSBsICYgMzEsIHIgPSBlW0EgKyAyMjAgPj4gMl0sIChsICYgNjMpID4+PiAwID49IDMyID8gKGkgPSBmIDw8IGEsIGEgPSAwKSA6IChpID0gKDEgPDwgYSkgLSAxICYgZiA+Pj4gMzIgLSBhLCBhID0gZiA8PCBhKSwgVmUociwgYSwgaSkgfCBxMiAmJiAoKHIgfCAwKSAhPSAoeCB8IDApIHx8IChmID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gLTEgPDwgZiwgYSA9IDApIDogKGEgPSAtMSA8PCBmLCBpID0gYSB8ICgxIDw8IGYpIC0gMSAmIC0xID4+PiAzMiAtIGYpLCBmID0gYSBeIC0xLCBhID0gaSBeIC0xLCBnID0gZiwgaSA9IDAsIGwgPSBrLCBmID0gdSAmIDMxLCAodSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gayA8PCBmLCBmID0gMCkgOiAoaSA9ICgxIDw8IGYpIC0gMSAmIGwgPj4+IDMyIC0gZiB8IGkgPDwgZiwgZiA9IGwgPDwgZiksICEoZyAmIGYgfCBpICYgYSkpKSkgfHwgKGYgPSBlW0ogKyA4ID4+IDJdLCAhZiB8ICFlW0ogKyAxMiA+PiAyXSB8IChrIHwgMCkgPT0gKE8gfCAwKSkgfHwgKG4gfCAwKSA9PSAocSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gZVtBICsgNjggPj4gMl0sIGVbQSArIDQwID4+IDJdID0gQywgaSA9IG0sIHIgPSByICsgRCB8IDAsIGkgPSByID4+PiAwIDwgRCA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIHIgPSAobjAociwgaSwgdCwgbykgPj4+IHopIC0gKGsgPj4+IHopIHwgMCwgaSA9IEgsIGsgPSBjICsgUCB8IDAsIGkgPSBrID4+PiAwIDwgYyA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIHcyID0gQSwgYzIgPSBaKGYsIChuMChrLCBpLCB3LCB5KSA+Pj4gVSkgLSAobiA+Pj4gVSkgfCAwKSArIHIgfCAwLCBlW3cyICsgMzYgPj4gMl0gPSBjMiwgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtBICsgMjIwID4+IDJdLCByID0gZVtBICsgMjI4ID4+IDJdLCBFID0gaSArIHIgLSAoaSA+Pj4gMCkgJSAociA+Pj4gMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDIyNCA+PiAyXSwgciA9IGVbQSArIDIzMiA+PiAyXSwgcCA9IGkgKyByIC0gKGkgPj4+IDApICUgKHIgPj4+IDApIHwgMCwgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGY6IGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMzIgPj4gMl0gPSB1LCBkW0EgKyA2MCA+PiAyXSA8PSB1ID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVbQSArIDY4ID4+IDJdLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEE6IGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgNDAgPj4gMl0gPSB0LCBkW0EgKyA1NiA+PiAyXSA8PSB0ID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDI4ID4+IDJdID0gciwgaSA9IHIsIGggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDM2ID4+IDJdID0gbCwgZFtBICsgNzYgPj4gMl0gPD0gbCA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtBICsgMjggPj4gMl0sIGggPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAoKFooZVtBICsgMTYgPj4gMl0sIGVbQSArIDMyID4+IDJdKSArIFooZVtBICsgMTIgPj4gMl0sIGVbQSArIDQwID4+IDJdKSB8IDApICsgWihlW0EgKyAyMCA+PiAyXSwgZVtBICsgMjggPj4gMl0pIHwgMCkgKyBaKGVbQSArIDI0ID4+IDJdLCBsKSB8IDAsIGkgPj4+IDAgPj0gZFtBICsgOCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVtBICsgNCA+PiAyXSArIChpIDw8IDEpIHwgMCwgRzJbaSA+PiAxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW0EgKyAzMiA+PiAyXSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAwID49IGYgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyAzMiA+PiAyXSwgbiA9IGVbQSArIDIwMCA+PiAyXSArIChpIDw8IDQpIHwgMCwgayA+Pj4gMCA+PSBkW24gKyA4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElbQSB8IDBdIHx8IChpID0gZVtuICsgMTIgPj4gMl0gKyAoayA8PCA0KSB8IDAsIGVbQSArIDc2ID4+IDJdID0gWihlW2kgKyAxMiA+PiAyXSwgZVtpICsgOCA+PiAyXSkpLCBsID0gZVtBICsgNzIgPj4gMl0sIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxIHwgMCwgZVtBICsgMjggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVbQSArIDQwID4+IDJdICsgMSB8IDAsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIFEoZVtBICsgMjM2ID4+IDJdLCAxLCAyMTA1LCAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gdTJbaSA+PiAxXSA9IDEsIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gWjQoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMCwgeSA9IDAsIHAgPSAwLCBIID0gMCwgSiA9IDAsIEUgPSAwLCBEID0gMCwgVSA9IDAsIFAgPSAwLCB4ID0gMCwgeiA9IDAsIGogPSAwLCBPID0gMCwgcSA9IDAsIGYyID0gMCwgbjIgPSAwLCBnMiA9IDAsIHcyID0gMDsKICAgICAgICAgICAgICBxID0gWCAtIDE2IHwgMCwgWCA9IHE7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGRbQSArIDE2ID4+IDJdIDw9IDIpIHsKICAgICAgICAgICAgICAgICAgZVtBICsgMjAgPj4gMl0gPSAyOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAociA9IGVbQSArIDI0ID4+IDJdLCBlW3IgPj4gMl0gIT0gMSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICByOgogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZVtyICsgNTIgPj4gMl0gLSAxIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlW3IgKyAxMDQgPj4gMl0gIT0gMiB8IGVbciArIDQgPj4gMl0gIT0gMSB8IChlW3IgKyA1NiA+PiAyXSAhPSAyIHwgZVtyICsgMTA4ID4+IDJdICE9IDIpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBBLCByID0gZVtBICsgMjQgPj4gMl0sIGYgPSBlW3IgKyAyNCA+PiAyXSwgQiA9IGVbciArIDE0OCA+PiAyXSwgeSA9IGVbciArIDk2ID4+IDJdLCBzID0gZVtyICsgNDQgPj4gMl0sIGogPSBlW3IgKyA4ID4+IDJdLCByID0gZVtyICsgMTIgPj4gMl0sIGwgPSBaKGosIHIpIDw8IDIsIEogPSBQMChsKSwgRCA9IFAwKGwpLCBVID0gUDAobCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIVUgfCAoIUogfCAhRCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IC0xIDw8IGYgXiAtMSwgbSA9IDEgPDwgZiAtIDEsIGwgPSByLCByID0gZVtBICsgNCA+PiAyXSAmIDEsIGcyID0gbCAtIHIgfCAwLCBDID0gZVtBID4+IDJdLCAhciB8ICFqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICtXKDAgLSBtIHwgMCksIGkgPSBhICogMC4zNDQgKyBhICogMC43MTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGEgKiAxLjc3MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gYSAqIDEuNDAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQSA9IEosIGwgPSBELCByID0gVTsgcCA9IGVbcyA+PiAyXSwgdiA9IHAgKyBmIHwgMCwgZVtBID4+IDJdID0gKHYgfCAwKSA+PSAwID8gKG4gfCAwKSA+ICh2IHwgMCkgPyB2IDogbiA6IDAsIHYgPSBwIC0gayB8IDAsIGVbbCA+PiAyXSA9ICh2IHwgMCkgPj0gMCA/IChuIHwgMCkgPiAodiB8IDApID8gdiA6IG4gOiAwLCB2ID0gdSArIHAgfCAwLCBlW3IgPj4gMl0gPSAodiB8IDApID49IDAgPyAobiB8IDApID4gKHYgfCAwKSA/IHYgOiBuIDogMCwgciA9IHIgKyA0IHwgMCwgbCA9IGwgKyA0IHwgMCwgQSA9IEEgKyA0IHwgMCwgcyA9IHMgKyA0IHwgMCwgdyA9IHcgKyAxIHwgMCwgKGogfCAwKSAhPSAodyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIoSiksIFIoRCksIFIoVSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gVSwgbCA9IEQsIEEgPSBKOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4yID0gZzIgJiAtMiwgbjIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IEMgJiAxLCB3MiA9IGogLSBPIHwgMCwgYSA9ICtXKDAgLSBtIHwgMCksIGkgPSBhICogMC4zNDQgKyBhICogMC43MTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB3MiAmIC0yLCBmID0gYyAtIDEgfCAwLCBpID0gYSAqIDEuNzcyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbjIgLSAxIHwgMCwgZiA9IGYgJiAtMiwgaSA9IGEgKiAxLjQwMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmMiA9IHUgJiAtMiwgQyA9IGYgKyAyIHwgMCwgeiA9IGogPDwgMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IHIgKyB6IHwgMCwgZiA9IGwgKyB6IHwgMCwgdyA9IEEgKyB6IHwgMCwgUCA9IHMgKyB6IHwgMCwgTykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbcyA+PiAyXSwgayA9IG8gKyB2IHwgMCwgZVtBID4+IDJdID0gKGsgfCAwKSA+PSAwID8gKG4gfCAwKSA+IChrIHwgMCkgPyBrIDogbiA6IDAsIGsgPSBvIC0gZyB8IDAsIGVbbCA+PiAyXSA9IChrIHwgMCkgPj0gMCA/IChuIHwgMCkgPiAoayB8IDApID8gayA6IG4gOiAwLCBrID0gbyArIHAgfCAwLCBlW3IgPj4gMl0gPSAoayB8IDApID49IDAgPyAobiB8IDApID4gKGsgfCAwKSA/IGsgOiBuIDogMCwgbyA9IGVbeSA+PiAyXSwgaCA9ICtXKGVbQiA+PiAyXSAtIG0gfCAwKSwgaSA9IGggKiAxLjQwMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gZVtQID4+IDJdLCB0ID0gdCArIGsgfCAwLCBlW3cgPj4gMl0gPSAodCB8IDApID49IDAgPyAobiB8IDApID4gKHQgfCAwKSA/IHQgOiBuIDogMCwgYSA9ICtXKG8gLSBtIHwgMCksIGkgPSBhICogMC4zNDQgKyBoICogMC43MTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGsgLSB0IHwgMCwgZVtmID4+IDJdID0gKG8gfCAwKSA+PSAwID8gKG4gfCAwKSA+IChvIHwgMCkgPyBvIDogbiA6IDAsIGkgPSBhICogMS43NzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHQgKyBrIHwgMCwgZVt1ID4+IDJdID0gKGsgfCAwKSA+PSAwID8gKG4gfCAwKSA+IChrIHwgMCkgPyBrIDogbiA6IDAsIHUgPSB1ICsgNCB8IDAsIGYgPSBmICsgNCB8IDAsIHcgPSB3ICsgNCB8IDAsIFAgPSBQICsgNCB8IDAsIHIgPSByICsgNCB8IDAsIGwgPSBsICsgNCB8IDAsIHMgPSBzICsgNCB8IDAsIEEgPSBBICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIID0gMCwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlW3kgPj4gMl0sIGggPSArVyhlW0IgPj4gMl0gLSBtIHwgMCksIGkgPSBoICogMS40MDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBlW3MgPj4gMl0sIHQgPSB0ICsgayB8IDAsIGVbQSA+PiAyXSA9ICh0IHwgMCkgPj0gMCA/IChuIHwgMCkgPiAodCB8IDApID8gdCA6IG4gOiAwLCBhID0gK1cobyAtIG0gfCAwKSwgaSA9IGEgKiAwLjM0NCArIGggKiAwLjcxNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGsgLSB0IHwgMCwgZVtsID4+IDJdID0gKG8gfCAwKSA+PSAwID8gKG4gfCAwKSA+IChvIHwgMCkgPyBvIDogbiA6IDAsIGkgPSBhICogMS43NzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB0ICsgayB8IDAsIGVbciA+PiAyXSA9IChrIHwgMCkgPj0gMCA/IChuIHwgMCkgPiAoayB8IDApID8gayA6IG4gOiAwLCBvID0gZVt5ID4+IDJdLCBoID0gK1coZVtCID4+IDJdIC0gbSB8IDApLCBpID0gaCAqIDEuNDAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gZVtzICsgNCA+PiAyXSwgdCA9IHQgKyBrIHwgMCwgZVtBICsgNCA+PiAyXSA9ICh0IHwgMCkgPj0gMCA/IChuIHwgMCkgPiAodCB8IDApID8gdCA6IG4gOiAwLCBhID0gK1cobyAtIG0gfCAwKSwgaSA9IGEgKiAwLjM0NCArIGggKiAwLjcxNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGsgLSB0IHwgMCwgZVtsICsgNCA+PiAyXSA9IChvIHwgMCkgPj0gMCA/IChuIHwgMCkgPiAobyB8IDApID8gbyA6IG4gOiAwLCBpID0gYSAqIDEuNzcyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gdCArIGsgfCAwLCBlW3IgKyA0ID4+IDJdID0gKGsgfCAwKSA+PSAwID8gKG4gfCAwKSA+IChrIHwgMCkgPyBrIDogbiA6IDAsIG8gPSBlW3kgPj4gMl0sIGggPSArVyhlW0IgPj4gMl0gLSBtIHwgMCksIGkgPSBoICogMS40MDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBlW1AgPj4gMl0sIHQgPSB0ICsgayB8IDAsIGVbdyA+PiAyXSA9ICh0IHwgMCkgPj0gMCA/IChuIHwgMCkgPiAodCB8IDApID8gdCA6IG4gOiAwLCBhID0gK1cobyAtIG0gfCAwKSwgaSA9IGEgKiAwLjM0NCArIGggKiAwLjcxNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGsgLSB0IHwgMCwgZVtmID4+IDJdID0gKG8gfCAwKSA+PSAwID8gKG4gfCAwKSA+IChvIHwgMCkgPyBvIDogbiA6IDAsIGkgPSBhICogMS43NzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB0ICsgayB8IDAsIGVbdSA+PiAyXSA9IChrIHwgMCkgPj0gMCA/IChuIHwgMCkgPiAoayB8IDApID8gayA6IG4gOiAwLCBvID0gZVt5ID4+IDJdLCBoID0gK1coZVtCID4+IDJdIC0gbSB8IDApLCBpID0gaCAqIDEuNDAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gZVtQICsgNCA+PiAyXSwgdCA9IHQgKyBrIHwgMCwgZVt3ICsgNCA+PiAyXSA9ICh0IHwgMCkgPj0gMCA/IChuIHwgMCkgPiAodCB8IDApID8gdCA6IG4gOiAwLCBhID0gK1cobyAtIG0gfCAwKSwgaSA9IGEgKiAwLjM0NCArIGggKiAwLjcxNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGsgLSB0IHwgMCwgZVtmICsgNCA+PiAyXSA9IChvIHwgMCkgPj0gMCA/IChuIHwgMCkgPiAobyB8IDApID8gbyA6IG4gOiAwLCBpID0gYSAqIDEuNzcyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IHQgKyBrIHwgMCwgZVt1ICsgNCA+PiAyXSA9IChrIHwgMCkgPj0gMCA/IChuIHwgMCkgPiAoayB8IDApID8gayA6IG4gOiAwLCBCID0gQiArIDQgfCAwLCB5ID0geSArIDQgfCAwLCB1ID0gdSArIDggfCAwLCBmID0gZiArIDggfCAwLCB3ID0gdyArIDggfCAwLCBQID0gUCArIDggfCAwLCByID0gciArIDggfCAwLCBsID0gbCArIDggfCAwLCBBID0gQSArIDggfCAwLCBzID0gcyArIDggfCAwLCBIID0gSCArIDIgfCAwLCAhKGMgPj4+IDAgPiBIID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPCB3MiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbeSA+PiAyXSwgaCA9ICtXKGVbQiA+PiAyXSAtIG0gfCAwKSwgaSA9IGggKiAxLjQwMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gZVtzID4+IDJdLCB0ID0gdCArIGsgfCAwLCBlW0EgPj4gMl0gPSAodCB8IDApID49IDAgPyAobiB8IDApID4gKHQgfCAwKSA/IHQgOiBuIDogMCwgYSA9ICtXKG8gLSBtIHwgMCksIGkgPSBhICogMC4zNDQgKyBoICogMC43MTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGsgLSB0IHwgMCwgZVtsID4+IDJdID0gKG8gfCAwKSA+PSAwID8gKG4gfCAwKSA+IChvIHwgMCkgPyBvIDogbiA6IDAsIGkgPSBhICogMS43NzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHQgKyBrIHwgMCwgZVtyID4+IDJdID0gKGsgfCAwKSA+PSAwID8gKG4gfCAwKSA+IChrIHwgMCkgPyBrIDogbiA6IDAsIG8gPSBlW3kgPj4gMl0sIHQgPSB3LCBoID0gK1coZVtCID4+IDJdIC0gbSB8IDApLCBpID0gaCAqIDEuNDAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBlW1AgPj4gMl0sIHcgPSB3ICsgayB8IDAsIGVbdCA+PiAyXSA9ICh3IHwgMCkgPj0gMCA/IChuIHwgMCkgPiAodyB8IDApID8gdyA6IG4gOiAwLCB3ID0gZiwgYSA9ICtXKG8gLSBtIHwgMCksIGkgPSBhICogMC4zNDQgKyBoICogMC43MTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGsgLSBmIHwgMCwgZVt3ID4+IDJdID0gKGYgfCAwKSA+PSAwID8gKG4gfCAwKSA+IChmIHwgMCkgPyBmIDogbiA6IDAsIGkgPSBhICogMS43NzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgKyBrIHwgMCwgZVt1ID4+IDJdID0gKGYgfCAwKSA+PSAwID8gKG4gfCAwKSA+IChmIHwgMCkgPyBmIDogbiA6IDAsIEIgPSBCICsgNCB8IDAsIHkgPSB5ICsgNCB8IDAsIHIgPSByICsgNCB8IDAsIGwgPSBsICsgNCB8IDAsIHMgPSBzICsgNCB8IDAsIEEgPSBBICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciArIHogfCAwLCBsID0gbCArIHogfCAwLCBBID0gQSArIHogfCAwLCBzID0gcyArIHogfCAwLCBFID0gRSArIDIgfCAwLCAhKG4yID4+PiAwID4gRSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZjIgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPj4+IDAgPj0gZzIgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPSBqICYgLTIsIHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGsgPSB2IC0gMSAmIC0yLCB3ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW3kgPj4gMl0sIGggPSArVyhlW0IgPj4gMl0gLSBtIHwgMCksIGkgPSBoICogMS40MDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbcyA+PiAyXSwgQyA9IEMgKyBmIHwgMCwgZVtBID4+IDJdID0gKEMgfCAwKSA+PSAwID8gKG4gfCAwKSA+IChDIHwgMCkgPyBDIDogbiA6IDAsIGEgPSArVyh1IC0gbSB8IDApLCBpID0gYSAqIDAuMzQ0ICsgaCAqIDAuNzE0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBmIC0gdSB8IDAsIGVbbCA+PiAyXSA9ICh1IHwgMCkgPj0gMCA/IChuIHwgMCkgPiAodSB8IDApID8gdSA6IG4gOiAwLCBpID0gYSAqIDEuNzcyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB1ICsgZiB8IDAsIGVbciA+PiAyXSA9IChmIHwgMCkgPj0gMCA/IChuIHwgMCkgPiAoZiB8IDApID8gZiA6IG4gOiAwLCB1ID0gZVt5ID4+IDJdLCBoID0gK1coZVtCID4+IDJdIC0gbSB8IDApLCBpID0gaCAqIDEuNDAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3MgKyA0ID4+IDJdLCBDID0gQyArIGYgfCAwLCBlW0EgKyA0ID4+IDJdID0gKEMgfCAwKSA+PSAwID8gKG4gfCAwKSA+IChDIHwgMCkgPyBDIDogbiA6IDAsIGEgPSArVyh1IC0gbSB8IDApLCBpID0gYSAqIDAuMzQ0ICsgaCAqIDAuNzE0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBmIC0gdSB8IDAsIGVbbCArIDQgPj4gMl0gPSAodSB8IDApID49IDAgPyAobiB8IDApID4gKHUgfCAwKSA/IHUgOiBuIDogMCwgaSA9IGEgKiAxLjc3MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IHUgKyBmIHwgMCwgZVtyICsgNCA+PiAyXSA9IChmIHwgMCkgPj0gMCA/IChuIHwgMCkgPiAoZiB8IDApID8gZiA6IG4gOiAwLCBCID0gQiArIDQgfCAwLCB5ID0geSArIDQgfCAwLCByID0gciArIDggfCAwLCBsID0gbCArIDggfCAwLCBBID0gQSArIDggfCAwLCBzID0gcyArIDggfCAwLCB3ID0gdyArIDIgfCAwLCAhKHYgPj4+IDAgPiB3ID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBrICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA+Pj4gMCA+PSBqID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3kgPj4gMl0sIGsgPSBBLCBoID0gK1coZVtCID4+IDJdIC0gbSB8IDApLCBpID0gaCAqIDEuNDAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gZVtzID4+IDJdLCB1ID0gdSArIEEgfCAwLCBlW2sgPj4gMl0gPSAodSB8IDApID49IDAgPyAobiB8IDApID4gKHUgfCAwKSA/IHUgOiBuIDogMCwgayA9IGwsIGEgPSArVyhmIC0gbSB8IDApLCBpID0gYSAqIDAuMzQ0ICsgaCAqIDAuNzE0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gQSAtIGwgfCAwLCBlW2sgPj4gMl0gPSAobCB8IDApID49IDAgPyAobiB8IDApID4gKGwgfCAwKSA/IGwgOiBuIDogMCwgaSA9IGEgKiAxLjc3MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGwgKyBBIHwgMCwgZVtyID4+IDJdID0gKEEgfCAwKSA+PSAwID8gKEEgfCAwKSA8IChuIHwgMCkgPyBBIDogbiA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGVbZVt4ICsgMjQgPj4gMl0gKyA0NCA+PiAyXSksIEEgPSBlW3ggKyAyNCA+PiAyXSwgZVtBICsgNDQgPj4gMl0gPSBKLCBSKGVbQSArIDk2ID4+IDJdKSwgQSA9IGVbeCArIDI0ID4+IDJdLCBlW0EgKyA5NiA+PiAyXSA9IEQsIFIoZVtBICsgMTQ4ID4+IDJdKSwgciA9IGVbeCArIDI0ID4+IDJdLCBlW3IgKyAxNDggPj4gMl0gPSBVLCBBID0gZVtyICsgOCA+PiAyXSwgZVtyICsgMTEyID4+IDJdID0gQSwgZVtyICsgNjAgPj4gMl0gPSBBLCBBID0gZVtyICsgMTIgPj4gMl0sIGVbciArIDExNiA+PiAyXSA9IEEsIGVbciArIDY0ID4+IDJdID0gQSwgQSA9IGVbciA+PiAyXSwgZVtyICsgMTA0ID4+IDJdID0gQSwgZVtyICsgNTIgPj4gMl0gPSBBLCBBID0gZVtyICsgNCA+PiAyXSwgZVtyICsgMTA4ID4+IDJdID0gQSwgZVtyICsgNTYgPj4gMl0gPSBBLCBlW3ggKyAyMCA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDEwNCA+PiAyXSAhPSAyIHwgZVtyICsgNCA+PiAyXSAhPSAxIHwgKGVbciArIDU2ID4+IDJdICE9IDEgfCBlW3IgKyAxMDggPj4gMl0gIT0gMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IEEsIGwgPSBlW0EgKyAyNCA+PiAyXSwgZiA9IGVbbCArIDI0ID4+IDJdLCBzID0gZVtsICsgMTQ4ID4+IDJdLCBCID0gZVtsICsgOTYgPj4gMl0sIEggPSBlW2wgKyA0NCA+PiAyXSwgciA9IGVbbCArIDggPj4gMl0sIE8gPSBlW2wgKyAxMiA+PiAyXSwgbCA9IFoociwgTykgPDwgMiwgdiA9IFAwKGwpLCBDID0gUDAobCksIGsgPSBQMChsKTsKICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCFrIHwgKCF2IHwgIUMpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGVbQSA+PiAyXSAmIDEsIGYyID0gciAtIHggfCAwLCB0ID0gMSA8PCBmIC0gMSwgYSA9ICtXKDAgLSB0IHwgMCksIGkgPSBhICogMC4zNDQgKyBhICogMC43MTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSiA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmMiAmIC0yLCBBID0gbyAtIDEgfCAwLCBpID0gYSAqIDEuNzcyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gLTEgPDwgZiwgQSA9IEEgJiAtMiwgaSA9IGEgKiAxLjQwMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gciBeIC0xLCB1ID0gQSArIDIgfCAwLCBBID0gdiwgbCA9IEMsIHIgPSBrOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ICYmIChnID0gZVtIID4+IDJdLCBmID0gZyArIFUgfCAwLCBlW0EgPj4gMl0gPSAoZiB8IDApID49IDAgPyAoZiB8IDApIDwgKGMgfCAwKSA/IGYgOiBjIDogMCwgZiA9IGcgLSBKIHwgMCwgZVtsID4+IDJdID0gKGYgfCAwKSA+PSAwID8gKGYgfCAwKSA8IChjIHwgMCkgPyBmIDogYyA6IDAsIGYgPSBnICsgRCB8IDAsIGVbciA+PiAyXSA9IChmIHwgMCkgPj0gMCA/IChmIHwgMCkgPCAoYyB8IDApID8gZiA6IGMgOiAwLCBsID0gbCArIDQgfCAwLCBIID0gSCArIDQgfCAwLCByID0gciArIDQgfCAwLCBBID0gQSArIDQgfCAwKSwgUCA9IDAsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZVtCID4+IDJdLCBoID0gK1coZVtzID4+IDJdIC0gdCB8IDApLCBpID0gaCAqIDEuNDAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVtIID4+IDJdLCBFID0gbiArIGYgfCAwLCBlW0EgPj4gMl0gPSAoRSB8IDApID49IDAgPyAoYyB8IDApID4gKEUgfCAwKSA/IEUgOiBjIDogMCwgYSA9ICtXKGcgLSB0IHwgMCksIGkgPSBhICogMC4zNDQgKyBoICogMC43MTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBmIC0gZyB8IDAsIGVbbCA+PiAyXSA9IChnIHwgMCkgPj0gMCA/IChjIHwgMCkgPiAoZyB8IDApID8gZyA6IGMgOiAwLCBpID0gYSAqIDEuNzcyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFIyKGkpIDwgMjE0NzQ4MzY0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZyArIGYgfCAwLCBlW3IgPj4gMl0gPSAoZiB8IDApID49IDAgPyAoZiB8IDApIDwgKGMgfCAwKSA/IGYgOiBjIDogMCwgZyA9IGVbQiA+PiAyXSwgaCA9ICtXKGVbcyA+PiAyXSAtIHQgfCAwKSwgaSA9IGggKiAxLjQwMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbSCArIDQgPj4gMl0sIEUgPSBuICsgZiB8IDAsIGVbQSArIDQgPj4gMl0gPSAoRSB8IDApID49IDAgPyAoYyB8IDApID4gKEUgfCAwKSA/IEUgOiBjIDogMCwgYSA9ICtXKGcgLSB0IHwgMCksIGkgPSBhICogMC4zNDQgKyBoICogMC43MTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBmIC0gZyB8IDAsIGVbbCArIDQgPj4gMl0gPSAoZyB8IDApID49IDAgPyAoYyB8IDApID4gKGcgfCAwKSA/IGcgOiBjIDogMCwgaSA9IGEgKiAxLjc3MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBnICsgZiB8IDAsIGVbciArIDQgPj4gMl0gPSAoZiB8IDApID49IDAgPyAoZiB8IDApIDwgKGMgfCAwKSA/IGYgOiBjIDogMCwgcyA9IHMgKyA0IHwgMCwgQiA9IEIgKyA0IHwgMCwgciA9IHIgKyA4IHwgMCwgbCA9IGwgKyA4IHwgMCwgQSA9IEEgKyA4IHwgMCwgSCA9IEggKyA4IHwgMCwgUCA9IFAgKyAyIHwgMCwgIShvID4+PiAwID4gUCA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID4+PiAwIDwgZjIgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBlW0IgPj4gMl0sIGggPSArVyhlW3MgPj4gMl0gLSB0IHwgMCksIGkgPSBoICogMS40MDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gfn5pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbSCA+PiAyXSwgRSA9IG4gKyBmIHwgMCwgZVtBID4+IDJdID0gKEUgfCAwKSA+PSAwID8gKGMgfCAwKSA+IChFIHwgMCkgPyBFIDogYyA6IDAsIGEgPSArVyhnIC0gdCB8IDApLCBpID0gYSAqIDAuMzQ0ICsgaCAqIDAuNzE0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBmIC0gZyB8IDAsIGVbbCA+PiAyXSA9IChnIHwgMCkgPj0gMCA/IChjIHwgMCkgPiAoZyB8IDApID8gZyA6IGMgOiAwLCBpID0gYSAqIDEuNzcyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBnICsgZiB8IDAsIGVbciA+PiAyXSA9IChmIHwgMCkgPj0gMCA/IChmIHwgMCkgPCAoYyB8IDApID8gZiA6IGMgOiAwLCBzID0gcyArIDQgfCAwLCBCID0gQiArIDQgfCAwLCBsID0gbCArIDQgfCAwLCBIID0gSCArIDQgfCAwLCByID0gciArIDQgfCAwLCBBID0gQSArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IHcgKyAxIHwgMCwgKE8gfCAwKSA9PSAodyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIoZVtlW3AgKyAyNCA+PiAyXSArIDQ0ID4+IDJdKSwgQSA9IGVbcCArIDI0ID4+IDJdLCBlW0EgKyA0NCA+PiAyXSA9IHYsIFIoZVtBICsgOTYgPj4gMl0pLCBBID0gZVtwICsgMjQgPj4gMl0sIGVbQSArIDk2ID4+IDJdID0gQywgUihlW0EgKyAxNDggPj4gMl0pLCByID0gZVtwICsgMjQgPj4gMl0sIGVbciArIDE0OCA+PiAyXSA9IGssIEEgPSBlW3IgKyA4ID4+IDJdLCBlW3IgKyAxMTIgPj4gMl0gPSBBLCBlW3IgKyA2MCA+PiAyXSA9IEEsIEEgPSBlW3IgKyAxMiA+PiAyXSwgZVtyICsgMTE2ID4+IDJdID0gQSwgZVtyICsgNjQgPj4gMl0gPSBBLCBBID0gZVtyID4+IDJdLCBlW3IgKyAxMDQgPj4gMl0gPSBBLCBlW3IgKyA1MiA+PiAyXSA9IEEsIEEgPSBlW3IgKyA0ID4+IDJdLCBlW3IgKyAxMDggPj4gMl0gPSBBLCBlW3IgKyA1NiA+PiAyXSA9IEEsIGVbcCArIDIwID4+IDJdID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIFIodiksIFIoQyksIFIoayk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZVtyICsgMTA0ID4+IDJdICE9IDEgfCBlW3IgKyA0ID4+IDJdICE9IDEgfCAoZVtyICsgNTYgPj4gMl0gIT0gMSB8IGVbciArIDEwOCA+PiAyXSAhPSAxKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICByID0gZVtBICsgMjQgPj4gMl0sIGwgPSBlW3IgKyAyNCA+PiAyXSwgSCA9IGVbciArIDE0OCA+PiAyXSwgcyA9IGVbciArIDk2ID4+IDJdLCBCID0gZVtyICsgNDQgPj4gMl0sIHYgPSBaKGVbciArIDEyID4+IDJdLCBlW3IgKyA4ID4+IDJdKSwgciA9IHYgPDwgMiwgRCA9IFAwKHIpLCBVID0gUDAociksIHcgPSBQMChyKTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmICghKCF3IHwgKCFEIHwgIVUpKSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKHYpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9IC0xIDw8IGwgXiAtMSwgQyA9IDEgPDwgbCAtIDEsIGYgPSBELCBsID0gVSwgciA9IHc7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgSiA9IGVbcyA+PiAyXSwgaCA9ICtXKGVbSCA+PiAyXSAtIEMgfCAwKSwgaSA9IGggKiAxLjQwMjsKICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW0IgPj4gMl0sIGsgPSBrICsgdSB8IDAsIGVbZiA+PiAyXSA9IChrIHwgMCkgPj0gMCA/IChrIHwgMCkgPCAocCB8IDApID8gayA6IHAgOiAwLCBhID0gK1coSiAtIEMgfCAwKSwgaSA9IGEgKiAwLjM0NCArIGggKiAwLjcxNDsKICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaSkgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB+fmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIEogPSB1IC0gayB8IDAsIGVbbCA+PiAyXSA9IChKIHwgMCkgPj0gMCA/IChwIHwgMCkgPiAoSiB8IDApID8gSiA6IHAgOiAwLCBpID0gYSAqIDEuNzcyOwogICAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSMihpKSA8IDIxNDc0ODM2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IH5+aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBrICsgdSB8IDAsIGVbciA+PiAyXSA9ICh1IHwgMCkgPj0gMCA/ICh1IHwgMCkgPCAocCB8IDApID8gdSA6IHAgOiAwLCByID0gciArIDQgfCAwLCBsID0gbCArIDQgfCAwLCBmID0gZiArIDQgfCAwLCBIID0gSCArIDQgfCAwLCBzID0gcyArIDQgfCAwLCBCID0gQiArIDQgfCAwLCB5ID0geSArIDEgfCAwLCAodiB8IDApID09ICh5IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgUihlW2VbQSArIDI0ID4+IDJdICsgNDQgPj4gMl0pLCByID0gZVtBICsgMjQgPj4gMl0sIGVbciArIDQ0ID4+IDJdID0gRCwgUihlW3IgKyA5NiA+PiAyXSksIHIgPSBlW0EgKyAyNCA+PiAyXSwgZVtyICsgOTYgPj4gMl0gPSBVLCBSKGVbciArIDE0OCA+PiAyXSksIGVbZVtBICsgMjQgPj4gMl0gKyAxNDggPj4gMl0gPSB3LCBlW0EgKyAyMCA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBSKEQpLCBSKFUpLCBSKHcpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW3EgKyA0ID4+IDJdID0gMjYyLCBlW3EgPj4gMl0gPSAxNjQ2LCBJMChlWzExODQ2XSwgMTg1MzIsIHEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBYID0gcSArIDE2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB2MShBKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwOwogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMDsKICAgICAgICAgICAgICBvID0gWCAtIDE2IHwgMCwgWCA9IG87CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPj4+IDAgPD0gMjQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVsxMjk1OF0sIG4gPSBBID4+PiAwIDwgMTEgPyAxNiA6IEEgKyAxMSAmIDUwNCwgQSA9IG4gPj4+IDMgfCAwLCBpID0gayA+Pj4gQSB8IDAsIGkgJiAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IEEgKyAoKGkgXiAtMSkgJiAxKSB8IDAsIGkgPSByIDw8IDMsIEEgPSBpICsgNTE4NzIgfCAwLCBpID0gZVtpICsgNTE4ODAgPj4gMl0sIGYgPSBlW2kgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoQSB8IDApID09IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDUxODMyLCBzID0gaDEocikgJiBrLCBlW2ggPj4gMl0gPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTIgPj4gMl0gPSBBLCBlW0EgKyA4ID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGkgKyA4IHwgMCwgciA9IHIgPDwgMywgZVtpICsgNCA+PiAyXSA9IHIgfCAzLCBpID0gaSArIHIgfCAwLCBlW2kgKyA0ID4+IDJdID0gZVtpICsgNCA+PiAyXSB8IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbMTI5NjBdLCBhID4+PiAwID49IG4gPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMiA8PCBBLCBBID0gamUoKDAgLSByIHwgcikgJiBpIDw8IEEpLCByID0gQSA8PCAzLCBpID0gciArIDUxODcyIHwgMCwgciA9IGVbciArIDUxODgwID4+IDJdLCBmID0gZVtyICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA9PSAoZiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBoMShBKSAmIGssIGVbMTI5NThdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDEyID4+IDJdID0gaSwgZVtpICsgOCA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA0ID4+IDJdID0gbiB8IDMsIGwgPSByICsgbiB8IDAsIEEgPSBBIDw8IDMsIHQgPSBBIC0gbiB8IDAsIGVbbCArIDQgPj4gMl0gPSB0IHwgMSwgZVtBICsgciA+PiAyXSA9IHQsIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAoYSAmIC04KSArIDUxODcyIHwgMCwgZiA9IGVbMTI5NjNdLCBpID0gMSA8PCAoYSA+Pj4gMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGkgJiBrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbMTI5NThdID0gaSB8IGssIGkgPSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyA4ID4+IDJdID0gZiwgZVtpICsgMTIgPj4gMl0gPSBmLCBlW2YgKyAxMiA+PiAyXSA9IEEsIGVbZiArIDggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gciArIDggfCAwLCBlWzEyOTYzXSA9IGwsIGVbMTI5NjBdID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZVsxMjk1OV0sICFnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IGVbKGplKGcpIDw8IDIpICsgNTIxMzYgPj4gMl0sIHQgPSAoZVtyICsgNCA+PiAyXSAmIC04KSAtIG4gfCAwLCBpID0gcjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IGVbaSArIDE2ID4+IDJdLCAhQSAmJiAoQSA9IGVbaSArIDIwID4+IDJdLCAhQSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gKGVbQSArIDQgPj4gMl0gJiAtOCkgLSBuIHwgMCwgaSA9IGYgPj4+IDAgPCB0ID4+PiAwLCB0ID0gaSA/IGYgOiB0LCByID0gaSA/IEEgOiByLCBpID0gQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbciArIDI0ID4+IDJdLCBBID0gZVtyICsgMTIgPj4gMl0sIChyIHwgMCkgIT0gKEEgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW3IgKyA4ID4+IDJdLCBlW2kgKyAxMiA+PiAyXSA9IEEsIGVbQSArIDggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW3IgKyAyMCA+PiAyXSwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gciArIDIwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW3IgKyAxNiA+PiAyXSwgIWkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSByICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gZiwgQSA9IGksIGYgPSBBICsgMjAgfCAwLCBpID0gZVtBICsgMjAgPj4gMl0sICEoIWkgJiYgKGYgPSBBICsgMTYgfCAwLCBpID0gZVtBICsgMTYgPj4gMl0sICFpKSk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IC0xLCBBID4+PiAwID4gNDI5NDk2NzIzMSB8fCAoaSA9IEEgKyAxMSB8IDAsIG4gPSBpICYgLTgsIGwgPSBlWzEyOTU5XSwgIWwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDMxLCB0ID0gMCAtIG4gfCAwLCBBID4+PiAwIDw9IDE2Nzc3MjA0ICYmIChBID0gTzAoaSA+Pj4gOCB8IDApLCBhID0gKChuID4+PiAzOCAtIEEgJiAxKSAtIChBIDw8IDEpIHwgMCkgKyA2MiB8IDApLCBpID0gZVsoYSA8PCAyKSArIDUyMTM2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChBID0gMCwgciA9IG4gPDwgKChhIHwgMCkgIT0gMzEgPyAyNSAtIChhID4+PiAxIHwgMCkgfCAwIDogMCk7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChlW2kgKyA0ID4+IDJdICYgLTgpIC0gbiB8IDAsIGsgPj4+IDAgPj0gdCA+Pj4gMCB8fCAoZiA9IGksIHQgPSBrLCB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IDAsIEEgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW2kgKyAyMCA+PiAyXSwgaSA9IGVbKChyID4+PiAyOSAmIDQpICsgaSB8IDApICsgMTYgPj4gMl0sIEEgPSBrID8gKGsgfCAwKSA9PSAoaSB8IDApID8gQSA6IGsgOiBBLCByID0gciA8PCAxLCAhaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoQSB8IGYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsIEEgPSAyIDw8IGEsIEEgPSAoMCAtIEEgfCBBKSAmIGwsICFBKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGVbKGplKEEpIDw8IDIpICsgNTIxMzYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHIgPSAoZVtBICsgNCA+PiAyXSAmIC04KSAtIG4gfCAwLCBpID0gciA+Pj4gMCA8IHQgPj4+IDAsIHQgPSBpID8gciA6IHQsIGYgPSBpID8gQSA6IGYsIGkgPSBlW0EgKyAxNiA+PiAyXSwgaSA/IEEgPSBpIDogQSA9IGVbQSArIDIwID4+IDJdLCAhIUE7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWYgfCBlWzEyOTYwXSAtIG4gPj4+IDAgPD0gdCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtmICsgMjQgPj4gMl0sIEEgPSBlW2YgKyAxMiA+PiAyXSwgKGYgfCAwKSAhPSAoQSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2YgKyA4ID4+IDJdLCBlW2kgKyAxMiA+PiAyXSA9IEEsIGVbQSArIDggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2YgKyAyMCA+PiAyXSwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGYgKyAyMCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2YgKyAxNiA+PiAyXSwgIWkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGYgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgayA9IHIsIEEgPSBpLCByID0gQSArIDIwIHwgMCwgaSA9IGVbQSArIDIwID4+IDJdLCAhKCFpICYmIChyID0gQSArIDE2IHwgMCwgaSA9IGVbQSArIDE2ID4+IDJdLCAhaSkpOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbMTI5NjBdLCBmID4+PiAwID49IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBlWzEyOTYzXSwgaSA9IGYgLSBuIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPj0gMTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gQSArIG4gfCAwLCBlW3IgKyA0ID4+IDJdID0gaSB8IDEsIGVbQSArIGYgPj4gMl0gPSBpLCBlW0EgKyA0ID4+IDJdID0gbiB8IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyA0ID4+IDJdID0gZiB8IDMsIGkgPSBBICsgZiB8IDAsIGVbaSArIDQgPj4gMl0gPSBlW2kgKyA0ID4+IDJdIHwgMSwgciA9IDAsIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVsxMjk2MF0gPSBpLCBlWzEyOTYzXSA9IHIsIEEgPSBBICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbMTI5NjFdLCByID4+PiAwID4gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHIgLSBuIHwgMCwgZVsxMjk2MV0gPSBpLCBBID0gZVsxMjk2NF0sIHIgPSBBICsgbiB8IDAsIGVbMTI5NjRdID0gciwgZVtyICsgNCA+PiAyXSA9IGkgfCAxLCBlW0EgKyA0ID4+IDJdID0gbiB8IDMsIEEgPSBBICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IDAsIHQgPSBuICsgNDcgfCAwLCBlWzEzMDc2XSA/IGkgPSBlWzEzMDc4XSA6IChlWzEzMDc5XSA9IC0xLCBlWzEzMDgwXSA9IC0xLCBlWzEzMDc3XSA9IDQwOTYsIGVbMTMwNzhdID0gNDA5NiwgZVsxMzA3Nl0gPSBvICsgMTIgJiAtMTYgXiAxNDMxNjU1NzY4LCBlWzEzMDgxXSA9IDAsIGVbMTMwNjldID0gMCwgaSA9IDQwOTYpLCBrID0gdCArIGkgfCAwLCBsID0gMCAtIGkgfCAwLCBpID0gayAmIGwsIGkgPj4+IDAgPD0gbiA+Pj4gMCB8fCAoYSA9IGVbMTMwNjhdLCBhICYmICh1ID0gZVsxMzA2Nl0sIGYgPSB1ICsgaSB8IDAsIGYgPj4+IDAgPD0gdSA+Pj4gMCB8IGYgPj4+IDAgPiBhID4+PiAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKElbNTIyNzZdICYgNCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVsxMjk2NF0sIGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEEgPSA1MjI4MDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBlW0EgPj4gMl0sIGEgPj4+IDAgPD0gZiA+Pj4gMCAmIGYgPj4+IDAgPCBhICsgZVtBICsgNCA+PiAyXSA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IGVbQSArIDggPj4gMl0sICFBKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0geWUoMCksIChyIHwgMCkgPT0gLTEgfHwgKGsgPSBpLCBBID0gZVsxMzA3N10sIGYgPSBBIC0gMSB8IDAsIGYgJiByICYmIChrID0gKGkgLSByIHwgMCkgKyAociArIGYgJiAwIC0gQSkgfCAwKSwgayA+Pj4gMCA8PSBuID4+PiAwKSB8fCAoZiA9IGVbMTMwNjhdLCBmICYmIChsID0gZVsxMzA2Nl0sIEEgPSBsICsgayB8IDAsIEEgPj4+IDAgPD0gbCA+Pj4gMCB8IEEgPj4+IDAgPiBmID4+PiAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0geWUoayksIChyIHwgMCkgIT0gKEEgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGwgJiBrIC0gciwgciA9IHllKGspLCAociB8IDApID09IChlW0EgPj4gMl0gKyBlW0EgKyA0ID4+IDJdIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKEEgfCAwKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuICsgNDggPj4+IDAgPD0gayA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVsxMzA3OF0sIHIgPSByICsgKHQgLSBrIHwgMCkgJiAwIC0gciwgKHllKHIpIHwgMCkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gciArIGsgfCAwLCByID0gQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgociB8IDApICE9IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlWzEzMDY5XSA9IGVbMTMwNjldIHwgNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0geWUoaSksIEEgPSB5ZSgwKSwgKHIgfCAwKSA9PSAtMSB8IChBIHwgMCkgPT0gLTEgfCBBID4+PiAwIDw9IHIgPj4+IDAgfHwgKGsgPSBBIC0gciB8IDAsIGsgPj4+IDAgPD0gbiArIDQwID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGVbMTMwNjZdICsgayB8IDAsIGVbMTMwNjZdID0gQSwgQSA+Pj4gMCA+IGRbMTMwNjddICYmIChlWzEzMDY3XSA9IEEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVsxMjk2NF0sIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChBID0gNTIyODA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgPj4gMl0sIGYgPSBlW0EgKyA0ID4+IDJdLCAoaSArIGYgfCAwKSA9PSAociB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IGVbQSArIDggPj4gMl0sICFBKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQSA9IGVbMTI5NjJdLCBBID4+PiAwIDw9IHIgPj4+IDAgJiYgQSB8fCAoZVsxMjk2Ml0gPSByKSwgQSA9IDAsIGVbMTMwNzFdID0gaywgZVsxMzA3MF0gPSByLCBlWzEyOTY2XSA9IC0xLCBlWzEyOTY3XSA9IGVbMTMwNzZdLCBlWzEzMDczXSA9IDA7IGkgPSBBIDw8IDMsIGYgPSBpICsgNTE4NzIgfCAwLCBlW2kgKyA1MTg4MCA+PiAyXSA9IGYsIGVbaSArIDUxODg0ID4+IDJdID0gZiwgQSA9IEEgKyAxIHwgMCwgKEEgfCAwKSAhPSAzMjsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gayAtIDQwIHwgMCwgaSA9IC04IC0gciAmIDcsIGYgPSBBIC0gaSB8IDAsIGVbMTI5NjFdID0gZiwgaSA9IGkgKyByIHwgMCwgZVsxMjk2NF0gPSBpLCBlW2kgKyA0ID4+IDJdID0gZiB8IDEsIGVbKEEgKyByIHwgMCkgKyA0ID4+IDJdID0gNDAsIGVbMTI5NjVdID0gZVsxMzA4MF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMTIgPj4gMl0gJiA4IHwgKHIgPj4+IDAgPD0gdCA+Pj4gMCB8IGkgPj4+IDAgPiB0ID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgNCA+PiAyXSA9IGYgKyBrLCBBID0gLTggLSB0ICYgNywgaSA9IEEgKyB0IHwgMCwgZVsxMjk2NF0gPSBpLCByID0gZVsxMjk2MV0gKyBrIHwgMCwgQSA9IHIgLSBBIHwgMCwgZVsxMjk2MV0gPSBBLCBlW2kgKyA0ID4+IDJdID0gQSB8IDEsIGVbKHIgKyB0IHwgMCkgKyA0ID4+IDJdID0gNDAsIGVbMTI5NjVdID0gZVsxMzA4MF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZFsxMjk2Ml0gPiByID4+PiAwICYmIChlWzEyOTYyXSA9IHIpLCBmID0gciArIGsgfCAwLCBBID0gNTIyODA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVtBID4+IDJdLCAoaSB8IDApICE9IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IGVbQSArIDggPj4gMl0sIEEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoSVtBICsgMTIgfCAwXSAmIDgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEEgPSA1MjI4MDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgPj4gMl0sIGkgPj4+IDAgPD0gdCA+Pj4gMCAmJiAoZiA9IGkgKyBlW0EgKyA0ID4+IDJdIHwgMCwgZiA+Pj4gMCA+IHQgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBlW0EgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEEgPSBrIC0gNDAgfCAwLCBpID0gLTggLSByICYgNywgbCA9IEEgLSBpIHwgMCwgZVsxMjk2MV0gPSBsLCBpID0gaSArIHIgfCAwLCBlWzEyOTY0XSA9IGksIGVbaSArIDQgPj4gMl0gPSBsIHwgMSwgZVsoQSArIHIgfCAwKSArIDQgPj4gMl0gPSA0MCwgZVsxMjk2NV0gPSBlWzEzMDgwXSwgQSA9IChmICsgKDM5IC0gZiAmIDcpIHwgMCkgLSA0NyB8IDAsIGkgPSBBID4+PiAwIDwgdCArIDE2ID4+PiAwID8gdCA6IEEsIGVbaSArIDQgPj4gMl0gPSAyNywgQSA9IGVbMTMwNzNdLCBlW2kgKyAxNiA+PiAyXSA9IGVbMTMwNzJdLCBlW2kgKyAyMCA+PiAyXSA9IEEsIEEgPSBlWzEzMDcxXSwgZVtpICsgOCA+PiAyXSA9IGVbMTMwNzBdLCBlW2kgKyAxMiA+PiAyXSA9IEEsIGVbMTMwNzJdID0gaSArIDgsIGVbMTMwNzFdID0gaywgZVsxMzA3MF0gPSByLCBlWzEzMDczXSA9IDAsIEEgPSBpICsgMjQgfCAwOyBlW0EgKyA0ID4+IDJdID0gNywgciA9IEEgKyA4IHwgMCwgQSA9IEEgKyA0IHwgMCwgciA+Pj4gMCA8IGYgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA9PSAodCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA0ID4+IDJdID0gZVtpICsgNCA+PiAyXSAmIC0yLCByID0gaSAtIHQgfCAwLCBlW3QgKyA0ID4+IDJdID0gciB8IDEsIGVbaSA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPD0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAociAmIC04KSArIDUxODcyIHwgMCwgaSA9IGVbMTI5NThdLCByID0gMSA8PCAociA+Pj4gMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShpICYgcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbMTI5NThdID0gaSB8IHIsIGkgPSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgOCA+PiAyXSA9IHQsIGVbaSArIDEyID4+IDJdID0gdCwgZiA9IDgsIHIgPSAxMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAzMSwgciA+Pj4gMCA8PSAxNjc3NzIxNSAmJiAoQSA9IE8wKHIgPj4+IDggfCAwKSwgQSA9ICgociA+Pj4gMzggLSBBICYgMSkgLSAoQSA8PCAxKSB8IDApICsgNjIgfCAwKSwgZVt0ICsgMjggPj4gMl0gPSBBLCBlW3QgKyAxNiA+PiAyXSA9IDAsIGVbdCArIDIwID4+IDJdID0gMCwgaSA9IChBIDw8IDIpICsgNTIxMzYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZVsxMjk1OV0sIGsgPSAxIDw8IEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShmICYgaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbMTI5NTldID0gZiB8IGssIGVbaSA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEEgPSByIDw8ICgoQSB8IDApICE9IDMxID8gMjUgLSAoQSA+Pj4gMSB8IDApIHwgMCA6IDApLCBmID0gZVtpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBmLCAociB8IDApID09IChlW2kgKyA0ID4+IDJdICYgLTgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBBID4+PiAyOSB8IDAsIEEgPSBBIDw8IDEsIGsgPSAoZiAmIDQpICsgaSB8IDAsIGYgPSBlW2sgKyAxNiA+PiAyXSwgIWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxNiA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0ICsgMjQgPj4gMl0gPSBpLCBpID0gdCwgQSA9IGksIGYgPSAxMiwgciA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gZVtpICsgOCA+PiAyXSwgZVtBICsgMTIgPj4gMl0gPSB0LCBlW2kgKyA4ID4+IDJdID0gdCwgZVt0ICsgOCA+PiAyXSA9IEEsIEEgPSAwLCBmID0gMTIsIHIgPSAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgdCA+PiAyXSA9IGksIGVbciArIHQgPj4gMl0gPSBBOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gZVsxMjk2MV0sIEEgPj4+IDAgPD0gbiA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gQSAtIG4gfCAwLCBlWzEyOTYxXSA9IGksIEEgPSBlWzEyOTY0XSwgciA9IEEgKyBuIHwgMCwgZVsxMjk2NF0gPSByLCBlW3IgKyA0ID4+IDJdID0gaSB8IDEsIGVbQSArIDQgPj4gMl0gPSBuIHwgMywgQSA9IEEgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbMTI0ODVdID0gNDgsIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVtBID4+IDJdID0gciwgZVtBICsgNCA+PiAyXSA9IGVbQSArIDQgPj4gMl0gKyBrLCBhID0gKC04IC0gciAmIDcpICsgciB8IDAsIGVbYSArIDQgPj4gMl0gPSBuIHwgMywgayA9IGkgKyAoLTggLSBpICYgNykgfCAwLCB0ID0gbiArIGEgfCAwLCBsID0gayAtIHQgfCAwOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlWzEyOTY0XSA9PSAoayB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVbMTI5NjRdID0gdCwgQSA9IGVbMTI5NjFdICsgbCB8IDAsIGVbMTI5NjFdID0gQSwgZVt0ICsgNCA+PiAyXSA9IEEgfCAxOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbMTI5NjNdID09IChrIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZVsxMjk2M10gPSB0LCBBID0gZVsxMjk2MF0gKyBsIHwgMCwgZVsxMjk2MF0gPSBBLCBlW3QgKyA0ID4+IDJdID0gQSB8IDEsIGVbQSArIHQgPj4gMl0gPSBBOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBlW2sgKyA0ID4+IDJdLCAoQSAmIDMpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IEEgJiAtOCwgciA9IGVbayArIDEyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPj4+IDAgPD0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbayArIDggPj4gMl0sIChpIHwgMCkgPT0gKHIgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gNTE4MzIsIHMgPSBlWzEyOTU4XSAmIGgxKEEgPj4+IDMgfCAwKSwgZVtoID4+IDJdID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbaSArIDEyID4+IDJdID0gciwgZVtyICsgOCA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVtrICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgIT0gKGsgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gZVtrICsgOCA+PiAyXSwgZVtBICsgMTIgPj4gMl0gPSByLCBlW3IgKyA4ID4+IDJdID0gQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBlW2sgKyAyMCA+PiAyXSwgQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gayArIDIwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBlW2sgKyAxNiA+PiAyXSwgIUEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBrICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBmID0gaSwgciA9IEEsIGkgPSBBICsgMjAgfCAwLCBBID0gZVtBICsgMjAgPj4gMl0sICEoIUEgJiYgKGkgPSByICsgMTYgfCAwLCBBID0gZVtyICsgMTYgPj4gMl0sICFBKSk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gZVtrICsgMjggPj4gMl0sIGkgPSAoQSA8PCAyKSArIDUyMTM2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtpID4+IDJdID09IChrIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSA+PiAyXSA9IHIsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDUxODM2LCBzID0gZVsxMjk1OV0gJiBoMShBKSwgZVtoID4+IDJdID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbiArIDE2ID4+IDJdID09IChrIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW24gKyAxNiA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW24gKyAyMCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyAyNCA+PiAyXSA9IG4sIEEgPSBlW2sgKyAxNiA+PiAyXSwgQSAmJiAoZVtyICsgMTYgPj4gMl0gPSBBLCBlW0EgKyAyNCA+PiAyXSA9IHIpLCBBID0gZVtrICsgMjAgPj4gMl0sICFBKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW3IgKyAyMCA+PiAyXSA9IEEsIGVbQSArIDI0ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBsID0gbCArIHUgfCAwLCBrID0gayArIHUgfCAwLCBBID0gZVtrICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2sgKyA0ID4+IDJdID0gQSAmIC0yLCBlW3QgKyA0ID4+IDJdID0gbCB8IDEsIGVbdCArIGwgPj4gMl0gPSBsLCBsID4+PiAwIDw9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICBBID0gKGwgJiAtOCkgKyA1MTg3MiB8IDAsIGkgPSBlWzEyOTU4XSwgciA9IDEgPDwgKGwgPj4+IDMpOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmIHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlWzEyOTU4XSA9IGkgfCByLCBpID0gQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW0EgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSB0LCBlW2kgKyAxMiA+PiAyXSA9IHQsIGVbdCArIDEyID4+IDJdID0gQSwgZVt0ICsgOCA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICByID0gMzEsIGwgPj4+IDAgPD0gMTY3NzcyMTUgJiYgKEEgPSBPMChsID4+PiA4IHwgMCksIHIgPSAoKGwgPj4+IDM4IC0gQSAmIDEpIC0gKEEgPDwgMSkgfCAwKSArIDYyIHwgMCksIGVbdCArIDI4ID4+IDJdID0gciwgZVt0ICsgMTYgPj4gMl0gPSAwLCBlW3QgKyAyMCA+PiAyXSA9IDAsIEEgPSAociA8PCAyKSArIDUyMTM2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbMTI5NTldLCBmID0gMSA8PCByOwogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmIGYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlWzEyOTU5XSA9IGkgfCBmLCBlW0EgPj4gMl0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gbCA8PCAoKHIgfCAwKSAhPSAzMSA/IDI1IC0gKHIgPj4+IDEgfCAwKSB8IDAgOiAwKSwgaSA9IGVbQSA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gaSwgKGVbQSArIDQgPj4gMl0gJiAtOCkgPT0gKGwgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gciA+Pj4gMjkgfCAwLCByID0gciA8PCAxLCBmID0gKGkgJiA0KSArIEEgfCAwLCBpID0gZVtmICsgMTYgPj4gMl0sICFpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtmICsgMTYgPj4gMl0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbdCArIDI0ID4+IDJdID0gQSwgZVt0ICsgMTIgPj4gMl0gPSB0LCBlW3QgKyA4ID4+IDJdID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW0EgKyA4ID4+IDJdLCBlW2kgKyAxMiA+PiAyXSA9IHQsIGVbQSArIDggPj4gMl0gPSB0LCBlW3QgKyAyNCA+PiAyXSA9IDAsIGVbdCArIDEyID4+IDJdID0gQSwgZVt0ICsgOCA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEEgPSBhICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICBpID0gZVtmICsgMjggPj4gMl0sIHIgPSAoaSA8PCAyKSArIDUyMTM2IHwgMDsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyID4+IDJdID09IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciA+PiAyXSA9IEEsIEEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGgxKGkpICYgbCwgZVsxMjk1OV0gPSBsOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVthICsgMTYgPj4gMl0gPT0gKGYgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGVbYSArIDE2ID4+IDJdID0gQTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbYSArIDIwID4+IDJdID0gQTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghQSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDI0ID4+IDJdID0gYSwgaSA9IGVbZiArIDE2ID4+IDJdLCBpICYmIChlW0EgKyAxNiA+PiAyXSA9IGksIGVbaSArIDI0ID4+IDJdID0gQSksIGkgPSBlW2YgKyAyMCA+PiAyXSwgIWkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIGVbQSArIDIwID4+IDJdID0gaSwgZVtpICsgMjQgPj4gMl0gPSBBOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA8PSAxNSkgewogICAgICAgICAgICAgICAgICAgICAgQSA9IHQgKyBuIHwgMCwgZVtmICsgNCA+PiAyXSA9IEEgfCAzLCBBID0gQSArIGYgfCAwLCBlW0EgKyA0ID4+IDJdID0gZVtBICsgNCA+PiAyXSB8IDE7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVtmICsgNCA+PiAyXSA9IG4gfCAzLCBrID0gZiArIG4gfCAwLCBlW2sgKyA0ID4+IDJdID0gdCB8IDEsIGVbdCArIGsgPj4gMl0gPSB0LCB0ID4+PiAwIDw9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgQSA9ICh0ICYgLTgpICsgNTE4NzIgfCAwLCBpID0gZVsxMjk1OF0sIHIgPSAxIDw8ICh0ID4+PiAzKTsKICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmIHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVsxMjk1OF0gPSBpIHwgciwgaSA9IEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtBICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSBrLCBlW2kgKyAxMiA+PiAyXSA9IGssIGVbayArIDEyID4+IDJdID0gQSwgZVtrICsgOCA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBBID0gMzEsIHQgPj4+IDAgPD0gMTY3NzcyMTUgJiYgKEEgPSBPMCh0ID4+PiA4IHwgMCksIEEgPSAoKHQgPj4+IDM4IC0gQSAmIDEpIC0gKEEgPDwgMSkgfCAwKSArIDYyIHwgMCksIGVbayArIDI4ID4+IDJdID0gQSwgZVtrICsgMTYgPj4gMl0gPSAwLCBlW2sgKyAyMCA+PiAyXSA9IDAsIGkgPSAoQSA8PCAyKSArIDUyMTM2IHwgMDsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICByID0gMSA8PCBBOwogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShyICYgbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlWzEyOTU5XSA9IHIgfCBsLCBlW2kgPj4gMl0gPSBrLCBlW2sgKyAyNCA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEEgPSB0IDw8ICgoQSB8IDApICE9IDMxID8gMjUgLSAoQSA+Pj4gMSB8IDApIHwgMCA6IDApLCBpID0gZVtpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gaSwgKGVbaSArIDQgPj4gMl0gJiAtOCkgPT0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBBID4+PiAyOSB8IDAsIEEgPSBBIDw8IDEsIGwgPSBpICsgKGwgJiA0KSB8IDAsIGkgPSBlW2wgKyAxNiA+PiAyXSwgIWkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW2wgKyAxNiA+PiAyXSA9IGssIGVbayArIDI0ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gaywgZVtrICsgOCA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBBID0gZVtyICsgOCA+PiAyXSwgZVtBICsgMTIgPj4gMl0gPSBrLCBlW3IgKyA4ID4+IDJdID0gaywgZVtrICsgMjQgPj4gMl0gPSAwLCBlW2sgKyAxMiA+PiAyXSA9IHIsIGVbayArIDggPj4gMl0gPSBBOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIEEgPSBmICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghdSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpID0gZVtyICsgMjggPj4gMl0sIGYgPSAoaSA8PCAyKSArIDUyMTM2IHwgMDsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmIChlW2YgPj4gMl0gPT0gKHIgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbZiA+PiAyXSA9IEEsIEEpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBoID0gNTE4MzYsIHMgPSBoMShpKSAmIGcsIGVbaCA+PiAyXSA9IHM7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt1ICsgMTYgPj4gMl0gPT0gKHIgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBlW3UgKyAxNiA+PiAyXSA9IEE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlW3UgKyAyMCA+PiAyXSA9IEE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghQSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDI0ID4+IDJdID0gdSwgaSA9IGVbciArIDE2ID4+IDJdLCBpICYmIChlW0EgKyAxNiA+PiAyXSA9IGksIGVbaSArIDI0ID4+IDJdID0gQSksIGkgPSBlW3IgKyAyMCA+PiAyXSwgIWkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZVtBICsgMjAgPj4gMl0gPSBpLCBlW2kgKyAyNCA+PiAyXSA9IEE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAwIDw9IDE1KSB7CiAgICAgICAgICAgICAgICAgICAgQSA9IHQgKyBuIHwgMCwgZVtyICsgNCA+PiAyXSA9IEEgfCAzLCBBID0gQSArIHIgfCAwLCBlW0EgKyA0ID4+IDJdID0gZVtBICsgNCA+PiAyXSB8IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNCA+PiAyXSA9IG4gfCAzLCBsID0gciArIG4gfCAwLCBlW2wgKyA0ID4+IDJdID0gdCB8IDEsIGVbdCArIGwgPj4gMl0gPSB0LCBhKSB7CiAgICAgICAgICAgICAgICAgICAgQSA9IChhICYgLTgpICsgNTE4NzIgfCAwLCBmID0gZVsxMjk2M10sIGkgPSAxIDw8IChhID4+PiAzKTsKICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIShpICYgaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZVsxMjk1OF0gPSBpIHwgaywgaSA9IEE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpID0gZVtBICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVtBICsgOCA+PiAyXSA9IGYsIGVbaSArIDEyID4+IDJdID0gZiwgZVtmICsgMTIgPj4gMl0gPSBBLCBlW2YgKyA4ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlWzEyOTYzXSA9IGwsIGVbMTI5NjBdID0gdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEEgPSByICsgOCB8IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gbyArIDE2IHwgMCwgQSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gQXIoQSwgaSwgciwgZiwgaykgewogICAgICAgICAgICAgIHZhciB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gMCwgQyA9IDAsIG0gPSAwLCB5ID0gMCwgcCA9IDAsIEggPSAwLCBKID0gMCwgRSA9IDAsIEQgPSAwLCBVID0gMCwgUCA9IDAsIHggPSAwLCB6ID0gMCwgaiA9IDAsIE8gPSAwLCBxID0gMCwgZjIgPSAwLCBuMiA9IDAsIGcyID0gMCwgdzIgPSAwLCBjMiA9IDAsIG0yID0gMCwgcDIgPSAwLCBZMiA9IDAsIFgyID0gMCwgRDIgPSAwLCBTMiA9IDAsIFAyID0gMCwgeDIgPSAwLCB6MiA9IDAsIEwyID0gMCwgZTAgPSAwLCBpMCA9IDAsIHIwID0gMCwgazAgPSAwLCB0MCA9IDAsIGgwID0gMCwgQzAgPSBXKDApOwogICAgICAgICAgICAgIHggPSBlW0EgKyAyOCA+PiAyXSwgRCA9IGVbKGVbeCArIDc2ID4+IDJdICsgWihpLCA1NjQ0KSB8IDApICsgNTU4NCA+PiAyXSwgZyA9IGVbQSArIDI0ID4+IDJdLCBPID0gZVtnICsgMjQgPj4gMl0sIG8gPSBlW3ggKyAyNCA+PiAyXSwgbiA9IChpID4+PiAwKSAvIChvID4+PiAwKSB8IDAsIFUgPSBlW2VbQSArIDIwID4+IDJdID4+IDJdLCBBID0gaSAtIFoobiwgbykgfCAwLCBvID0gZVt4ICsgMTIgPj4gMl0sIEEgPSBlW3ggKyA0ID4+IDJdICsgWihBLCBvKSB8IDAsIGkgPSBlW2cgPj4gMl0sIGkgPSBBID4+PiAwID4gaSA+Pj4gMCA/IEEgOiBpLCBlW1UgPj4gMl0gPSBpLCBvID0gQSArIG8gfCAwLCBBID0gQSA+Pj4gMCA+IG8gPj4+IDAgPyAtMSA6IG8sIG8gPSBlW2cgKyA4ID4+IDJdLCBBID0gQSA+Pj4gMCA8IG8gPj4+IDAgPyBBIDogbywgZVtVICsgOCA+PiAyXSA9IEE7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCEoKEEgfCAwKSA+IChpIHwgMCkgJiAoaSB8IDApID49IDApKSB7CiAgICAgICAgICAgICAgICAgIFEoaywgMSwgMTA2NzksIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG8gPSBlW1UgKyAyMCA+PiAyXSwgQSA9IG4sIG4gPSBlW3ggKyAxNiA+PiAyXSwgQSA9IGVbeCArIDggPj4gMl0gKyBaKEEsIG4pIHwgMCwgaSA9IGVbZyArIDQgPj4gMl0sIGkgPSBBID4+PiAwID4gaSA+Pj4gMCA/IEEgOiBpLCBlW1UgKyA0ID4+IDJdID0gaSwgbiA9IEEgKyBuIHwgMCwgQSA9IEEgPj4+IDAgPiBuID4+PiAwID8gLTEgOiBuLCBnID0gZVtnICsgMTIgPj4gMl0sIEEgPSBBID4+PiAwIDwgZyA+Pj4gMCA/IEEgOiBnLCBlW1UgKyAxMiA+PiAyXSA9IEEsICEoKEEgfCAwKSA+IChpIHwgMCkgJiAoaSB8IDApID49IDApKSB7CiAgICAgICAgICAgICAgICAgIFEoaywgMSwgMTA2NDEsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoZVtEICsgNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgIGlmIChlW1UgKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgUShrLCAxLCA4ODU5LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtPICsgMzYgPj4gMl0gPSAwLCBBID0gZVtPID4+IDJdLCBuID0gQSA+PiAzMSwgbSA9IEEgLSAxIHwgMCwgaSA9IGVbVSA+PiAyXSwgYSA9IGksIGcgPSBtICsgaSB8IDAsIGwgPSBuIC0gIUEgfCAwLCBpID0gbCArIChpID4+IDMxKSB8IDAsIGkgPSB6MChnLCBhID4+PiAwID4gZyA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIEEsIG4pLCB0ID0gaSwgZVtvID4+IDJdID0gaSwgZyA9IGVbTyArIDQgPj4gMl0sIEIgPSBnID4+IDMxLCBhID0gZyAtIDEgfCAwLCBpID0gZVtVICsgNCA+PiAyXSwgcyA9IGksIEogPSBhICsgaSB8IDAsIHkgPSBCIC0gIWcgfCAwLCBpID0geSArIChpID4+IDMxKSB8IDAsIEogPSB6MChKLCBzID4+PiAwID4gSiA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGcsIEIpLCBlW28gKyA0ID4+IDJdID0gSiwgaSA9IGVbVSArIDggPj4gMl0sIHMgPSBpLCBtID0gaSArIG0gfCAwLCBpID0gKGkgPj4gMzEpICsgbCB8IDAsIEEgPSB6MChtLCBzID4+PiAwID4gbSA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIEEsIG4pLCBlW28gKyA4ID4+IDJdID0gQSwgbiA9IGVbVSArIDEyID4+IDJdLCBlW28gKyAxNiA+PiAyXSA9IFgyLCBpID0geSArIChuID4+IDMxKSB8IDAsIG4gPSBuICsgYSB8IDAsIGkgPSBuID4+PiAwIDwgYSA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGkgPSB6MChuLCBpLCBnLCBCKSwgZVtvICsgMTIgPj4gMl0gPSBpLCBnID0gZVtEICsgNCA+PiAyXSwgZVtvICsgMjAgPj4gMl0gPSBnLCBuID0gZVt4ICsgODAgPj4gMl0sIGVbbyArIDI0ID4+IDJdID0gbiA+Pj4gMCA+IGcgPj4+IDAgPyAxIDogZyAtIG4gfCAwLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGkgLSBKIHwgMCwgQSA9IEEgLSB0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA9PSAoSiB8IDApIHx8IChkMChuLCAwLCBBLCAwKSwgIXEyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gWihBLCBuKSwgQSA+Pj4gMCA+PSAxMDczNzQxODI0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW28gKyA0NCA+PiAyXSA9IEEgPDwgMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBSKGVbbyArIDUyID4+IDJdKSwgZVtvICsgNjggPj4gMl0gPSAwLCBlW28gKyA2MCA+PiAyXSA9IDAsIGVbbyArIDY0ID4+IDJdID0gMCwgZVtvICsgNTIgPj4gMl0gPSAwLCBlW28gKyA1NiA+PiAyXSA9IDAsIEEgPSBaKGcsIDE1MiksIGkgPSBlW28gKyAyOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBVMihBKSwgZVtvICsgMjggPj4gMl0gPSBpLCAhaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbbyArIDMyID4+IDJdID0gQSwgZDIoaSwgMCwgQSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA+Pj4gMCA8PSBkW28gKyAzMiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBvMChpLCBBKSwgIWkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEoaywgMSwgNTM1NSwgMCksIFIoZVtvICsgMjggPj4gMl0pLCBlW28gKyAyOCA+PiAyXSA9IDAsIGVbbyArIDMyID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVbbyArIDI4ID4+IDJdID0gaSwgdCA9IGksIGkgPSBlW28gKyAzMiA+PiAyXSwgZDIodCArIGkgfCAwLCAwLCBBIC0gaSB8IDApLCBlW28gKyAzMiA+PiAyXSA9IEE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBlW28gKyAyMCA+PiAyXSwgQSkKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFMyID0gRCArIDk0NCB8IDAsIFAyID0gRCArIDgxMiB8IDAsIHAyID0gRCArIDI4IHwgMCwgZyA9IGVbbyArIDI4ID4+IDJdLCBxID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQSAtIDEgfCAwLCBuID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gLTEgPDwgbiwgdCA9IDApIDogKHQgPSAtMSA8PCBuLCBpID0gdCB8ICgxIDw8IG4pIC0gMSAmIC0xID4+PiAzMiAtIG4pLCB6ID0gdCBeIC0xLCBhID0gZVtvID4+IDJdLCBuID0geiArIGEgfCAwLCBKID0gaSBeIC0xLCBpID0gSiArIChhID4+IDMxKSB8IDAsIGkgPSBuID4+PiAwIDwgYSA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGEgPSBuLCBuID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IG0gPSBpID4+IG4gOiBtID0gKCgxIDw8IG4pIC0gMSAmIGkpIDw8IDMyIC0gbiB8IGEgPj4+IG4sIGVbZyA+PiAyXSA9IG0sIGkgPSBlW28gKyA0ID4+IDJdLCBhID0gaSwgbiA9IGkgKyB6IHwgMCwgaSA9IChpID4+IDMxKSArIEogfCAwLCBpID0gbiA+Pj4gMCA8IGEgPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBhID0gbiwgbiA9IEIgJiAzMSwgKEIgJiA2MykgPj4+IDAgPj0gMzIgPyB0ID0gaSA+PiBuIDogdCA9ICgoMSA8PCBuKSAtIDEgJiBpKSA8PCAzMiAtIG4gfCBhID4+PiBuLCBlW2cgKyA0ID4+IDJdID0gdCwgaSA9IGVbbyArIDggPj4gMl0sIGEgPSBpLCBuID0gaSArIHogfCAwLCBpID0gKGkgPj4gMzEpICsgSiB8IDAsIGkgPSBuID4+PiAwIDwgYSA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGEgPSBuLCBuID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IGwgPSBpID4+IG4gOiBsID0gKCgxIDw8IG4pIC0gMSAmIGkpIDw8IDMyIC0gbiB8IGEgPj4+IG4sIGVbZyArIDggPj4gMl0gPSBsLCBpID0gZVtvICsgMTIgPj4gMl0sIGEgPSBpLCBuID0gaSArIHogfCAwLCBpID0gKGkgPj4gMzEpICsgSiB8IDAsIGkgPSBuID4+PiAwIDwgYSA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGEgPSBuLCBuID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IGEgPSBpID4+IG4gOiBhID0gKCgxIDw8IG4pIC0gMSAmIGkpIDw8IDMyIC0gbiB8IGEgPj4+IG4sIGVbZyArIDEyID4+IDJdID0gYSwgcyA9IGwgPj4gMzEsIHAgPSBxIDw8IDIsIHkgPSBlW3AgKyBQMiA+PiAyXSwgbiA9IHkgJiAzMSwgKHkgJiA2MykgPj4+IDAgPj0gMzIgPyAoaSA9IDEgPDwgbiwgdSA9IDApIDogKHUgPSAxIDw8IG4sIGkgPSB1IC0gMSAmIDEgPj4+IDMyIC0gbiksIHYgPSB1LCBuID0gdiArIGwgfCAwLCBpID0gaSArIHMgfCAwLCBzID0gbiAtIDEgfCAwLCBuID0gKG4gPj4+IDAgPCB2ID4+PiAwID8gaSArIDEgfCAwIDogaSkgLSAhbiB8IDAsIGkgPSB5ICYgMzEsICh5ICYgNjMpID4+PiAwID49IDMyID8gaSA9IG4gPj4gaSA6IGkgPSAoKDEgPDwgaSkgLSAxICYgbikgPDwgMzIgLSBpIHwgcyA+Pj4gaSwgcyA9IGkgPDwgeSwgKHMgfCAwKSA8IDAgfHwgKHYgPSBhID4+IDMxLCBwID0gZVtwICsgUzIgPj4gMl0sIG4gPSBwICYgMzEsIChwICYgNjMpID4+PiAwID49IDMyID8gKGkgPSAtMSA8PCBuLCBuID0gMCkgOiAoaSA9ICgxIDw8IG4pIC0gMSAmIC0xID4+PiAzMiAtIG4sIG4gPSAtMSA8PCBuLCBpID0gaSB8IG4pLCBFID0gbiBeIC0xLCBuID0gRSArIGEgfCAwLCBpID0gKGkgXiAtMSkgKyB2IHwgMCwgaSA9IG4gPj4+IDAgPCBFID4+PiAwID8gaSArIDEgfCAwIDogaSwgdiA9IG4sIG4gPSBwICYgMzEsIChwICYgNjMpID4+PiAwID49IDMyID8gaSA9IGkgPj4gbiA6IGkgPSAoKDEgPDwgbikgLSAxICYgaSkgPDwgMzIgLSBuIHwgdiA+Pj4gbiwgaSA9IGkgPDwgcCwgKGkgfCAwKSA8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZjIgPSB0ICYgLTEgPDwgcCwgYSA9ICh0IHwgMCkgIT0gKGEgfCAwKSA/IGkgLSBmMiA+PiBwIDogMCwgZVtnICsgMjAgPj4gMl0gPSBhLCBuMiA9IG0gJiAtMSA8PCB5LCBuID0gKGwgfCAwKSAhPSAobSB8IDApID8gcyAtIG4yID4+IHkgOiAwLCBlW2cgKyAxNiA+PiAyXSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbiB8fCAoZDAobiwgMCwgYSwgMCksICFxMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjMiA9IFoobiwgYSksIGMyID4+PiAwID49IDEwNzM3NDE4MykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IFooYzIsIDQwKSwgcSA/IChwID0gcCAtIDEgfCAwLCB5ID0geSAtIDEgfCAwLCBpID0gZjIgPj4gMzEsIG4gPSBmMiArIDEgfCAwLCBmMiA9ICgobiA/IGkgOiBpICsgMSB8IDApICYgMSkgPDwgMzEgfCBuID4+PiAxLCBpID0gbjIgPj4gMzEsIG4gPSBuMiArIDEgfCAwLCBuMiA9ICgobiA/IGkgOiBpICsgMSB8IDApICYgMSkgPDwgMzEgfCBuID4+PiAxLCBpID0gMykgOiBpID0gMSwgZVtnICsgMjQgPj4gMl0gPSBpLCBhID0gZyArIDI4IHwgMCwgeDIgPSAoMSA8PCBwKSArIGYyIHwgMCwgejIgPSAoMSA8PCB5KSArIG4yIHwgMCwgbSA9IEEsIG4gPSBBICYgMzEsIChBICYgNjMpID4+PiAwID49IDMyID8gKGkgPSAxIDw8IG4sIEEgPSAwKSA6IChBID0gMSA8PCBuLCBpID0gQSAtIDEgJiAxID4+PiAzMiAtIG4pLCBEMiA9IEEsIG4gPSBpLCBBID0gZVtEICsgMTIgPj4gMl0sIHYgPSBBID4+PiAwIDwgcCA+Pj4gMCA/IEEgOiBwLCBBID0gdiAmIDMxLCAodiAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gLTEgPDwgQSwgQSA9IDApIDogKGkgPSAoMSA8PCBBKSAtIDEgJiAtMSA+Pj4gMzIgLSBBLCBBID0gLTEgPDwgQSwgaSA9IGkgfCBBKSwgTDIgPSBBIF4gLTEsIGUwID0gaSBeIC0xLCBBID0gZVtEICsgOCA+PiAyXSwgRSA9IEEgPj4+IDAgPCB5ID4+PiAwID8gQSA6IHksIEEgPSBFICYgMzEsIChFICYgNjMpID4+PiAwID49IDMyID8gKGkgPSAtMSA8PCBBLCBBID0gMCkgOiAoaSA9ICgxIDw8IEEpIC0gMSAmIC0xID4+PiAzMiAtIEEsIEEgPSAtMSA8PCBBLCBpID0gaSB8IEEpLCBpMCA9IEEgXiAtMSwgcjAgPSBpIF4gLTEsIFkyID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbbyArIDQgPj4gMl0sIHQgPSBpLCBBID0gaSArIHogfCAwLCBpID0gKGkgPj4gMzEpICsgSiB8IDAsIGkgPSBBID4+PiAwIDwgdCA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIHQgPSBBLCBBID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IEggPSBpID4+IEEgOiBIID0gKCgxIDw8IEEpIC0gMSAmIGkpIDw8IDMyIC0gQSB8IHQgPj4+IEEsIGkgPSBlW28gPj4gMl0sIHQgPSBpLCBBID0gaSArIHogfCAwLCBpID0gKGkgPj4gMzEpICsgSiB8IDAsIGkgPSBBID4+PiAwIDwgdCA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIHQgPSBBLCBBID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IHUgPSBpID4+IEEgOiB1ID0gKCgxIDw8IEEpIC0gMSAmIGkpIDw8IDMyIC0gQSB8IHQgPj4+IEEsIEEgPSAwLCBsID0geiwgaCA9IGwsIHQgPSBKLCBzID0gdCwgaSA9IEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gWTIgKyAxIHwgMCwgdCA9IEEgPj4+IDEgfCAwLCBsID0gQiAmIDMxLCAoQiAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gdCA8PCBsLCB0ID0gMCkgOiAoaSA9ICgxIDw8IGwpIC0gMSAmIHQgPj4+IDMyIC0gbCwgdCA9IHQgPDwgbCksIGwgPSB0IF4gLTEsIHQgPSBsICsgRDIgfCAwLCBpID0gKGkgXiAtMSkgKyBuIHwgMCwgaSA9IHQgPj4+IDAgPCBsID4+PiAwID8gaSArIDEgfCAwIDogaSwgaCA9IHQsIGwgPSBlW28gKyA0ID4+IDJdLCB0ID0gbCArIHQgfCAwLCBzID0gaSwgaSA9IGkgKyAobCA+PiAzMSkgfCAwLCBpID0gdCA+Pj4gMCA8IGwgPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBsID0gdCwgdCA9IG0gJiAzMSwgKG0gJiA2MykgPj4+IDAgPj0gMzIgPyBIID0gaSA+PiB0IDogSCA9ICgoMSA8PCB0KSAtIDEgJiBpKSA8PCAzMiAtIHQgfCBsID4+PiB0LCB0ID0gQSAmIDEsIGwgPSBCICYgMzEsIChCICYgNjMpID4+PiAwID49IDMyID8gKGkgPSB0IDw8IGwsIHQgPSAwKSA6IChpID0gKDEgPDwgbCkgLSAxICYgdCA+Pj4gMzIgLSBsLCB0ID0gdCA8PCBsKSwgdCA9IHQgXiAtMSwgbCA9IHQgKyBEMiB8IDAsIGkgPSAoaSBeIC0xKSArIG4gfCAwLCB1ID0gZVtvID4+IDJdLCBjID0gdSArIGwgfCAwLCB0ID0gdCA+Pj4gMCA+IGwgPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBpID0gdCArICh1ID4+IDMxKSB8IDAsIGkgPSB1ID4+PiAwID4gYyA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIHUgPSBjLCBjID0gbSAmIDMxLCAobSAmIDYzKSA+Pj4gMCA+PSAzMiA/IHUgPSBpID4+IGMgOiB1ID0gKCgxIDw8IGMpIC0gMSAmIGkpIDw8IDMyIC0gYyB8IHUgPj4+IGMsIGkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpLCBnMiA9IGVbbyArIDggPj4gMl0sIHcgPSBnMiA+PiAzMSwgdzIgPSBlW28gKyAxMiA+PiAyXSwgZVthICsgNCA+PiAyXSA9IEgsIGVbYSA+PiAyXSA9IHUsIGVbYSArIDE2ID4+IDJdID0gQSwgaSA9ICh3MiA+PiAzMSkgKyBzIHwgMCwgcyA9IGggKyB3MiB8IDAsIGkgPSBzID4+PiAwIDwgdzIgPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBoID0gcywgcyA9IGMgJiAzMSwgKGMgJiA2MykgPj4+IDAgPj0gMzIgPyBzID0gaSA+PiBzIDogcyA9ICgoMSA8PCBzKSAtIDEgJiBpKSA8PCAzMiAtIHMgfCBoID4+PiBzLCBlW2EgKyAxMiA+PiAyXSA9IHMsIGkgPSB0ICsgdyB8IDAsIHQgPSBsICsgZzIgfCAwLCBpID0gdCA+Pj4gMCA8IGcyID4+PiAwID8gaSArIDEgfCAwIDogaSwgbCA9IHQsIHQgPSBjICYgMzEsIChjICYgNjMpID4+PiAwID49IDMyID8gaSA9IGkgPj4gdCA6IGkgPSAoKDEgPDwgdCkgLSAxICYgaSkgPDwgMzIgLSB0IHwgbCA+Pj4gdCwgZVthICsgOCA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPT0gKHUgfCAwKSB8IChzIHwgMCkgPT0gKEggfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAwLCAhZVtEICsgMjAgPj4gMl0gfCAhQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IChBIHwgMCkgPT0gMyA/IDIgOiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMiA9IDEsIHQgPSBlW3AyID4+IDJdLCBBID0gKGVbTyArIDI0ID4+IDJdICsgaSB8IDApIC0gdCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChBIHwgMCkgPj0gMTAyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobTIgPSA4OTg4NDY1Njc0MzExNThlMjkzLCBBID4+PiAwIDwgMjA0NykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBBIC0gMTAyMyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMiA9IDEgLyAwLCBBID0gKEEgPj4+IDAgPj0gMzA2OSA/IDMwNjkgOiBBKSAtIDIwNDYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChBIHwgMCkgPiAtMTAyMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtMiA9IDIwMDQxNjgzNjAwMDg5NzNlLTMwNywgQSA+Pj4gMCA+IDQyOTQ5NjUzMDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IEEgKyA5NjkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTIgPSAwLCBBID0gKEEgPj4+IDAgPD0gNDI5NDk2NDMzNiA/IC0yOTYwIDogQSkgKyAxOTM4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgazAgPSArZVtwMiArIDQgPj4gMl0gKiA0ODgyODEyNWUtMTEgKyAxLCBBMCgwLCAwKSwgQTAoMSwgQSArIDEwMjMgPDwgMjApLCBoMCA9IGEsIEMwID0gVyhrMCAqIChtMiAqICtOMCgpKSksIEdbaDAgKyAzMiA+PiAyXSA9IEMwLCBlW2EgKyAyOCA+PiAyXSA9ICh0ICsgZVtEICsgODA0ID4+IDJdIHwgMCkgLSAxLCBBID0gZVthICsgMjAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoQSB8ICFjMikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBVMihqKSwgZVthICsgMjAgPj4gMl0gPSBBLCAhQSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEoaywgMSwgNDgyMywgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMihBLCAwLCBqKSwgZVthICsgMjQgPj4gMl0gPSBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPj4+IDAgPiBkW2EgKyAyNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IG8wKEEsIGopLCAhQSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEoaywgMSwgNDgyMywgMCksIFIoZVthICsgMjAgPj4gMl0pLCBlW2EgKyAyMCA+PiAyXSA9IDAsIGVbYSArIDI0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbYSArIDIwID4+IDJdID0gQSwgaSA9IEEsIEEgPSBlW2EgKyAyNCA+PiAyXSwgZDIoaSArIEEgfCAwLCAwLCBqIC0gQSB8IDApLCBlW2EgKyAyNCA+PiAyXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEEgPSBlW2EgKyAyMCA+PiAyXSwgcyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbZyArIDE2ID4+IDJdLCBpID0gKHMgPj4+IDApIC8gKHQgPj4+IDApIHwgMCwgdCA9IHMgLSBaKGksIHQpIDw8IHksIGwgPSB0ICsgbjIgfCAwLCBjID0gZVthID4+IDJdLCBjID0gKGwgfCAwKSA+IChjIHwgMCkgPyBsIDogYywgZVtBID4+IDJdID0gYywgaSA9IGkgPDwgcCwgbCA9IGkgKyBmMiB8IDAsIEggPSBlW2EgKyA0ID4+IDJdLCBIID0gKGwgfCAwKSA+IChIIHwgMCkgPyBsIDogSCwgZVtBICsgNCA+PiAyXSA9IEgsIHQgPSB0ICsgejIgfCAwLCBsID0gZVthICsgOCA+PiAyXSwgdCA9ICh0IHwgMCkgPCAobCB8IDApID8gdCA6IGwsIGVbQSArIDggPj4gMl0gPSB0LCBpID0gaSArIHgyIHwgMCwgbCA9IGVbYSArIDEyID4+IDJdLCBsID0gKGkgfCAwKSA8IChsIHwgMCkgPyBpIDogbCwgZVtBICsgMTIgPj4gMl0gPSBsLCBpID0gKHQgPj4gMzEpICsgcjAgfCAwLCB1ID0gdCwgdCA9IHQgKyBpMCB8IDAsIGkgPSB1ID4+PiAwID4gdCA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGMgPSBjID4+IEUsIHUgPSB0LCB0ID0gRSAmIDMxLCAoRSAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSBpID4+IHQgOiBpID0gKCgxIDw8IHQpIC0gMSAmIGkpIDw8IDMyIC0gdCB8IHUgPj4+IHQsIHUgPSBpIC0gYyA8PCBFID4+IEUsIGVbQSArIDE2ID4+IDJdID0gdSwgaSA9IChsID4+IDMxKSArIGUwIHwgMCwgdCA9IGwgKyBMMiB8IDAsIGkgPSB0ID4+PiAwIDwgbCA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIEggPSBIID4+IHYsIGwgPSB0LCB0ID0gdiAmIDMxLCAodiAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSBpID4+IHQgOiBpID0gKCgxIDw8IHQpIC0gMSAmIGkpIDw8IDMyIC0gdCB8IGwgPj4+IHQsIGkgPSBpIC0gSCA8PCB2ID4+IHYsIGVbQSArIDIwID4+IDJdID0gaSwgbCA9IFooaSwgdSksIGQwKGYsIDAsIGwsIDApLCBxMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKGssIDEsIDQ5MDQsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFooZiwgbCksIHQgPSBlW0EgKyAyNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHQgfCAhbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gVTIoaSksIGVbQSArIDI0ID4+IDJdID0gdCwgIXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMih0LCAwLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAwIDw9IGRbQSArIDI4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IG8wKHQsIGkpLCAhdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUihlW0EgKyAyNCA+PiAyXSksIGVbQSArIDI0ID4+IDJdID0gMCwgZVtBICsgMjggPj4gMl0gPSAwLCBRKGssIDEsIDQ0MjksIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMjQgPj4gMl0gPSB0LCB1ID0gdCwgdCA9IGVbQSArIDI4ID4+IDJdLCBkMih1ICsgdCB8IDAsIDAsIGkgLSB0IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMjggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDIwID4+IDJdLCB0ID0gZVtBICsgMTYgPj4gMl0sIHUgPSBlW0EgKyAzMiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFQ0KHQsIGksIGspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFM0KHUsIHQsIGksIGspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMzIgPj4gMl0gPSBpLCBpID0gZVtBICsgMjAgPj4gMl0sIHQgPSBlW0EgKyAxNiA+PiAyXSwgdSA9IGVbQSArIDM2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gVDQodCwgaSwgayk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gUzQodSwgdCwgaSwgayk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAzNiA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZzIgPSBIICsgMSB8IDAsIHcyID0gYyArIDEgfCAwLCB0ID0gMCwgIXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gZVtBICsgMTYgPj4gMl0sIHUgPSAodCA+Pj4gMCkgLyAoQyA+Pj4gMCkgfCAwLCBpID0gZVtBICsgMjQgPj4gMl0gKyAodCA8PCA2KSB8IDAsIHcgPSBlW2kgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCA9IGVbaSArIDU2ID4+IDJdLCBoID0gZVtpICsgNDggPj4gMl0sIHQwID0gZVtpICsgNCA+PiAyXSwgUihlW2kgKyA2MCA+PiAyXSksIGVbaSArIDQ4ID4+IDJdID0gMCwgZVtpICsgNTIgPj4gMl0gPSAwLCBlW2kgKyA1NiA+PiAyXSA9IDAsIGVbaSArIDYwID4+IDJdID0gMCwgZVtpICsgNDAgPj4gMl0gPSAwLCBlW2kgKyA0NCA+PiAyXSA9IDAsIGVbaSArIDMyID4+IDJdID0gMCwgZVtpICsgMzYgPj4gMl0gPSAwLCBlW2kgKyAyNCA+PiAyXSA9IDAsIGVbaSArIDI4ID4+IDJdID0gMCwgZVtpICsgMTYgPj4gMl0gPSAwLCBlW2kgKyAyMCA+PiAyXSA9IDAsIGVbaSArIDggPj4gMl0gPSAwLCBlW2kgKyAxMiA+PiAyXSA9IDAsIGVbaSA+PiAyXSA9IHcsIGVbaSArIDQ4ID4+IDJdID0gaCwgaCAmJiBkMih3LCAwLCBaKGgsIDI0KSksIGVbaSArIDU2ID4+IDJdID0gUCwgZVtpICsgNCA+PiAyXSA9IHQwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBFMigxMCwgMjQpLCBlW2kgPj4gMl0gPSBoLCAhaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA0OCA+PiAyXSA9IDEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSB0IC0gWih1LCBDKSB8IDAsIHcgPSBoICsgYyA8PCBFLCBDID0gZVtBID4+IDJdLCBlW2kgKyA4ID4+IDJdID0gKHcgfCAwKSA+IChDIHwgMCkgPyB3IDogQywgdyA9IHUgKyBIIDw8IHYsIEMgPSBlW0EgKyA0ID4+IDJdLCBlW2kgKyAxMiA+PiAyXSA9ICh3IHwgMCkgPiAoQyB8IDApID8gdyA6IEMsIGggPSBoICsgdzIgPDwgRSwgdyA9IGVbQSArIDggPj4gMl0sIGVbaSArIDE2ID4+IDJdID0gKGggfCAwKSA8ICh3IHwgMCkgPyBoIDogdywgaCA9IGksIGkgPSB1ICsgZzIgPDwgdiwgdSA9IGVbQSArIDEyID4+IDJdLCBlW2ggKyAyMCA+PiAyXSA9IChpIHwgMCkgPCAodSB8IDApID8gaSA6IHUsIHQgPSB0ICsgMSB8IDAsIChsIHwgMCkgPT0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlW0EgKyAxNiA+PiAyXSwgdSA9ICh0ID4+PiAwKSAvIChoID4+PiAwKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyAyNCA+PiAyXSArIFoodCwgNTIpIHwgMCwgZVtpICsgNCA+PiAyXSB8fCAodyA9IEUyKDEwMCwgMjQpLCBlW2kgKyA0ID4+IDJdID0gdywgdykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgOCA+PiAyXSB8fCAodyA9IEUyKDEwMCwgMjQpLCBlW2kgKyA4ID4+IDJdID0gdywgdykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IHQgLSBaKHUsIGgpIHwgMCwgdyA9IGggKyBjIDw8IEUsIEMgPSBlW0EgPj4gMl0sIHcgPSAodyB8IDApID4gKEMgfCAwKSA/IHcgOiBDLCBlW2kgKyAxMiA+PiAyXSA9IHcsIEMgPSB1ICsgSCA8PCB2LCBQID0gZVtBICsgNCA+PiAyXSwgQyA9IChDIHwgMCkgPiAoUCB8IDApID8gQyA6IFAsIGVbaSArIDE2ID4+IDJdID0gQywgaCA9IGggKyB3MiA8PCBFLCBQID0gZVtBICsgOCA+PiAyXSwgaCA9IChoIHwgMCkgPCAoUCB8IDApID8gaCA6IFAsIGVbaSArIDIwID4+IDJdID0gaCwgdSA9IHUgKyBnMiA8PCB2LCBQID0gZVtBICsgMTIgPj4gMl0sIHUgPSAodSB8IDApIDwgKFAgfCAwKSA/IHUgOiBQLCBlW2kgKyAyNCA+PiAyXSA9IHUsIHUgPSBaKGggLSB3IHwgMCwgdSAtIEMgfCAwKSA8PCAyLCBoID0gdSArIDc0IHwgMCwgaCA+Pj4gMCA+IGRbaSArIDM2ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IGVbaSA+PiAyXSwgdyAmJiBSKHcgLSAxIHwgMCksIHUgPSBVMih1ICsgNzUgfCAwKSwgZVtpID4+IDJdID0gdSwgIXUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyAzNiA+PiAyXSA9IGgsIEZbdSB8IDBdID0gMCwgZVtpID4+IDJdID0gZVtpID4+IDJdICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0ICsgMSB8IDAsIChsIHwgMCkgPT0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IEEgKyA0MCB8IDAsIHMgPSBzICsgMSB8IDAsIChjMiB8IDApID09IChzIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocDIgPSBwMiArIDggfCAwLCBhID0gYSArIDM2IHwgMCwgWTIgPSBZMiArIDEgfCAwLCAhKFkyID4+PiAwIDwgZFtnICsgMjQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBnICsgMTUyIHwgMCwgQSA9IEIsIHEgPSBxICsgMSB8IDAsICEocSA+Pj4gMCA8IGRbbyArIDIwID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTyA9IE8gKyA1MiB8IDAsIG8gPSBvICsgNzYgfCAwLCBEID0gRCArIDEwODAgfCAwLCBYMiA9IFgyICsgMSB8IDAsICEoWDIgPj4+IDAgPCBkW1UgKyAxNiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbaSArIDM2ID4+IDJdID0gMCwgMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBRKGssIDEsIDQ5NTEsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgUShrLCAxLCA0MjU0LCAwKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZEEoQSwgaSwgciwgZiwgaywgdCkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMCwgayA9IGsgfCAwLCB0ID0gdCB8IDA7CiAgICAgICAgICAgICAgdmFyIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMCwgeSA9IDAsIHAgPSAwLCBIID0gMCwgSiA9IDAsIEUgPSAwLCBEID0gMCwgVSA9IDA7CiAgICAgICAgICAgICAgbSA9ICgoZiB8IDApICE9IDApICsgciB8IDAsIEIgPSBtID4+PiAxIHwgMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICgodCB8IDApICE9IDgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGlmICghdCkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gNyAtIHQgfCAwLCBjID0gKChuID4+PiAwIDw9IDcgPyBuIDogMCkgPDwgMikgKyA0IHwgMCwgdiA9IHQgJiAtNCwgaCA9IHQgJiAzLCBDID0gKHQgPDwgMikgKyBpIHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gbyA8PCA1LCBuID0gdyArIGkgfCAwLCB1ID0gKFooaywgbykgPDwgMikgKyBBIHwgMCwgbCA9IDAsIGcgPSAwLCB0ID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBhID0gbCA8PCAyLCBlW2EgKyBuID4+IDJdID0gZVthICsgdSA+PiAyXSwgcyA9IGEgfCA0LCBlW3MgKyBuID4+IDJdID0gZVt1ICsgcyA+PiAyXSwgYSA9IGEgfCA4LCBlW2EgKyBuID4+IDJdID0gZVthICsgdSA+PiAyXSwgYSA9IGwgfCAzLCBzID0gYSA8PCAyLCBlW3MgKyBuID4+IDJdID0gZVt1ICsgcyA+PiAyXSwgbCA9IGwgKyA0IHwgMCwgZyA9IGcgKyA0IHwgMCwgKHYgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSAwLCBoKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgYSA9IGwgPDwgMiwgZVthICsgbiA+PiAyXSA9IGVbYSArIHUgPj4gMl0sIGEgPSBsLCBsID0gbCArIDEgfCAwLCBnID0gZyArIDEgfCAwLCAoaCB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA8PSA2ICYmIGQyKEMgKyB3IHwgMCwgMCwgYyksIG8gPSBvICsgMSB8IDAsIChvIHwgMCkgPT0gKHIgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGlmICgociB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gciAmIC0yOyB1ID0gKFooaywgbCkgPDwgMikgKyBBIHwgMCwgbyA9IGVbdSArIDQgPj4gMl0sIG4gPSAobCA8PCA1KSArIGkgfCAwLCBlW24gPj4gMl0gPSBlW3UgPj4gMl0sIGVbbiArIDQgPj4gMl0gPSBvLCBvID0gZVt1ICsgMjggPj4gMl0sIGVbbiArIDI0ID4+IDJdID0gZVt1ICsgMjQgPj4gMl0sIGVbbiArIDI4ID4+IDJdID0gbywgbyA9IGVbdSArIDIwID4+IDJdLCBlW24gKyAxNiA+PiAyXSA9IGVbdSArIDE2ID4+IDJdLCBlW24gKyAyMCA+PiAyXSA9IG8sIG8gPSBlW3UgKyAxMiA+PiAyXSwgZVtuICsgOCA+PiAyXSA9IGVbdSArIDggPj4gMl0sIGVbbiArIDEyID4+IDJdID0gbywgdSA9IGwgfCAxLCBuID0gKHUgPDwgNSkgKyBpIHwgMCwgdSA9IChaKGssIHUpIDw8IDIpICsgQSB8IDAsIG8gPSBlW3UgKyAyOCA+PiAyXSwgZVtuICsgMjQgPj4gMl0gPSBlW3UgKyAyNCA+PiAyXSwgZVtuICsgMjggPj4gMl0gPSBvLCBvID0gZVt1ICsgMjAgPj4gMl0sIGVbbiArIDE2ID4+IDJdID0gZVt1ICsgMTYgPj4gMl0sIGVbbiArIDIwID4+IDJdID0gbywgbyA9IGVbdSArIDEyID4+IDJdLCBlW24gKyA4ID4+IDJdID0gZVt1ICsgOCA+PiAyXSwgZVtuICsgMTIgPj4gMl0gPSBvLCBvID0gZVt1ICsgNCA+PiAyXSwgZVtuID4+IDJdID0gZVt1ID4+IDJdLCBlW24gKyA0ID4+IDJdID0gbywgbCA9IGwgKyAyIHwgMCwgYSA9IGEgKyAyIHwgMCwgKGcgfCAwKSAhPSAoYSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAxKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBuID0gKGwgPDwgNSkgKyBpIHwgMCwgbCA9IChaKGssIGwpIDw8IDIpICsgQSB8IDAsIGEgPSBlW2wgKyA0ID4+IDJdLCBlW24gPj4gMl0gPSBlW2wgPj4gMl0sIGVbbiArIDQgPj4gMl0gPSBhLCBhID0gZVtsICsgMjggPj4gMl0sIGVbbiArIDI0ID4+IDJdID0gZVtsICsgMjQgPj4gMl0sIGVbbiArIDI4ID4+IDJdID0gYSwgYSA9IGVbbCArIDIwID4+IDJdLCBlW24gKyAxNiA+PiAyXSA9IGVbbCArIDE2ID4+IDJdLCBlW24gKyAyMCA+PiAyXSA9IGEsIGEgPSBlW2wgKyAxMiA+PiAyXSwgZVtuICsgOCA+PiAyXSA9IGVbbCArIDggPj4gMl0sIGVbbiArIDEyID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGQyKGksIDAsIHIgPDwgNSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHUgPSByIC0gQiB8IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPCAyKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGlmIChsID0gMCwgbSA+Pj4gMCA+PSA0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gQiA+Pj4gMCA8PSAyID8gMiA6IEIsIG8gPSBpICsgMjggfCAwLCBoID0gaSArIDI0IHwgMCwgYyA9IGkgKyAyMCB8IDAsIHYgPSBpICsgMTYgfCAwLCBDID0gaSArIDEyIHwgMCwgdyA9IGkgKyA4IHwgMCwgcyA9IGkgKyA0IHwgMCwgbiA9IDE7IGwgPSAobCA8PCA2KSArIGkgfCAwLCBhID0gbiA8PCA2LCBlW2wgKyAzMiA+PiAyXSA9IGVbbCArIDMyID4+IDJdIC0gKGVbYSArIGkgPj4gMl0gKyBlW2wgPj4gMl0gPj4gMSksIGVbbCArIDM2ID4+IDJdID0gZVtsICsgMzYgPj4gMl0gLSAoZVthICsgcyA+PiAyXSArIGVbbCArIDQgPj4gMl0gPj4gMSksIGVbbCArIDQwID4+IDJdID0gZVtsICsgNDAgPj4gMl0gLSAoZVthICsgdyA+PiAyXSArIGVbbCArIDggPj4gMl0gPj4gMSksIGVbbCArIDQ0ID4+IDJdID0gZVtsICsgNDQgPj4gMl0gLSAoZVthICsgQyA+PiAyXSArIGVbbCArIDEyID4+IDJdID4+IDEpLCBlW2wgKyA0OCA+PiAyXSA9IGVbbCArIDQ4ID4+IDJdIC0gKGVbYSArIHYgPj4gMl0gKyBlW2wgKyAxNiA+PiAyXSA+PiAxKSwgZVtsICsgNTIgPj4gMl0gPSBlW2wgKyA1MiA+PiAyXSAtIChlW2EgKyBjID4+IDJdICsgZVtsICsgMjAgPj4gMl0gPj4gMSksIGVbbCArIDU2ID4+IDJdID0gZVtsICsgNTYgPj4gMl0gLSAoZVthICsgaCA+PiAyXSArIGVbbCArIDI0ID4+IDJdID4+IDEpLCBlW2wgKyA2MCA+PiAyXSA9IGVbbCArIDYwID4+IDJdIC0gKGVbYSArIG8gPj4gMl0gKyBlW2wgKyAyOCA+PiAyXSA+PiAxKSwgbCA9IG4sIG4gPSBsICsgMSB8IDAsIChnIHwgMCkgIT0gKG4gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIGwgPSBsIDw8IDQ7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHMgPSByICYgMSwgcyB8fCAobiA9IChsIDw8IDIpICsgaSB8IDAsIGVbbiArIDMyID4+IDJdID0gZVtuICsgMzIgPj4gMl0gLSBlW24gPj4gMl0sIGVbbiArIDM2ID4+IDJdID0gZVtuICsgMzYgPj4gMl0gLSBlW24gKyA0ID4+IDJdLCBlW24gKyA0MCA+PiAyXSA9IGVbbiArIDQwID4+IDJdIC0gZVtuICsgOCA+PiAyXSwgZVtuICsgNDQgPj4gMl0gPSBlW24gKyA0NCA+PiAyXSAtIGVbbiArIDEyID4+IDJdLCBlW24gKyA0OCA+PiAyXSA9IGVbbiArIDQ4ID4+IDJdIC0gZVtuICsgMTYgPj4gMl0sIGVbbiArIDUyID4+IDJdID0gZVtuICsgNTIgPj4gMl0gLSBlW24gKyAyMCA+PiAyXSwgZVtuICsgNTYgPj4gMl0gPSBlW24gKyA1NiA+PiAyXSAtIGVbbiArIDI0ID4+IDJdLCBlW24gKyA2MCA+PiAyXSA9IGVbbiArIDYwID4+IDJdIC0gZVtuICsgMjggPj4gMl0pLCBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gKyAoKGVbaSArIDMyID4+IDJdIDw8IDEpICsgMiA+PiAyKSwgZyA9IGkgKyA0IHwgMCwgZVtnID4+IDJdID0gZVtnID4+IDJdICsgKChlW2kgKyAzNiA+PiAyXSA8PCAxKSArIDIgPj4gMiksIG8gPSBpICsgOCB8IDAsIGVbbyA+PiAyXSA9IGVbbyA+PiAyXSArICgoZVtpICsgNDAgPj4gMl0gPDwgMSkgKyAyID4+IDIpLCBoID0gaSArIDEyIHwgMCwgZVtoID4+IDJdID0gZVtoID4+IDJdICsgKChlW2kgKyA0NCA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGwgPSAxNiwgYyA9IGkgKyAxNiB8IDAsIGVbYyA+PiAyXSA9IGVbYyA+PiAyXSArICgoZVtpICsgNDggPj4gMl0gPDwgMSkgKyAyID4+IDIpLCB2ID0gaSArIDIwIHwgMCwgZVt2ID4+IDJdID0gZVt2ID4+IDJdICsgKChlW2kgKyA1MiA+PiAyXSA8PCAxKSArIDIgPj4gMiksIEMgPSBpICsgMjQgfCAwLCBlW0MgPj4gMl0gPSBlW0MgPj4gMl0gKyAoKGVbaSArIDU2ID4+IDJdIDw8IDEpICsgMiA+PiAyKSwgdyA9IGkgKyAyOCB8IDAsIGVbdyA+PiAyXSA9IGVbdyA+PiAyXSArICgoZVtpICsgNjAgPj4gMl0gPDwgMSkgKyAyID4+IDIpLCB1ID4+PiAwID49IDIpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHkgPSBpIC0gNCB8IDAsIHAgPSBpIC0gOCB8IDAsIEggPSBpIC0gMTIgfCAwLCBKID0gaSAtIDE2IHwgMCwgRSA9IGkgLSAyMCB8IDAsIEQgPSBpIC0gMjQgfCAwLCBVID0gaSAtIDI4IHwgMCwgYSA9IDE7IGwgPSBhIDw8IDYsIG4gPSBsICsgaSB8IDAsIGVbbiA+PiAyXSA9IGVbbiA+PiAyXSArICgoZVtuIC0gMzIgPj4gMl0gKyBlW24gKyAzMiA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVtuICsgNCA+PiAyXSA9IGVbbiArIDQgPj4gMl0gKyAoKGVbbCArIFUgPj4gMl0gKyBlW24gKyAzNiA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVtuICsgOCA+PiAyXSA9IGVbbiArIDggPj4gMl0gKyAoKGVbbCArIEQgPj4gMl0gKyBlW24gKyA0MCA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVtuICsgMTIgPj4gMl0gPSBlW24gKyAxMiA+PiAyXSArICgoZVtsICsgRSA+PiAyXSArIGVbbiArIDQ0ID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW24gKyAxNiA+PiAyXSA9IGVbbiArIDE2ID4+IDJdICsgKChlW2wgKyBKID4+IDJdICsgZVtuICsgNDggPj4gMl0gfCAwKSArIDIgPj4gMiksIGVbbiArIDIwID4+IDJdID0gZVtuICsgMjAgPj4gMl0gKyAoKGVbbCArIEggPj4gMl0gKyBlW24gKyA1MiA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVtuICsgMjQgPj4gMl0gPSBlW24gKyAyNCA+PiAyXSArICgoZVtsICsgcCA+PiAyXSArIGVbbiArIDU2ID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW24gKyAyOCA+PiAyXSA9IGVbbiArIDI4ID4+IDJdICsgKChlW2wgKyB5ID4+IDJdICsgZVtuICsgNjAgPj4gMl0gfCAwKSArIDIgPj4gMiksIGEgPSBhICsgMSB8IDAsICh1IHwgMCkgIT0gKGEgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIGwgPSB1IDw8IDQ7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCFzKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGwgPSBsIDw8IDIsIG4gPSBsICsgaSB8IDAsIGVbbiA+PiAyXSA9IGVbbiA+PiAyXSArICgoZVtuIC0gMzIgPj4gMl0gPDwgMSkgKyAyID4+IDIpLCBlW24gKyA0ID4+IDJdID0gZVtuICsgNCA+PiAyXSArICgoZVsobCArIGcgfCAwKSAtIDMyID4+IDJdIDw8IDEpICsgMiA+PiAyKSwgZVtuICsgOCA+PiAyXSA9IGVbbiArIDggPj4gMl0gKyAoKGVbKGwgKyBvIHwgMCkgLSAzMiA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGVbbiArIDEyID4+IDJdID0gZVtuICsgMTIgPj4gMl0gKyAoKGVbKGwgKyBoIHwgMCkgLSAzMiA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGVbbiArIDE2ID4+IDJdID0gZVtuICsgMTYgPj4gMl0gKyAoKGVbKGwgKyBjIHwgMCkgLSAzMiA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGVbbiArIDIwID4+IDJdID0gZVtuICsgMjAgPj4gMl0gKyAoKGVbKGwgKyB2IHwgMCkgLSAzMiA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGVbbiArIDI0ID4+IDJdID0gZVtuICsgMjQgPj4gMl0gKyAoKGVbKGwgKyBDIHwgMCkgLSAzMiA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGVbbiArIDI4ID4+IDJdID0gZVtuICsgMjggPj4gMl0gKyAoKGVbKGwgKyB3IHwgMCkgLSAzMiA+PiAyXSA8PCAxKSArIDIgPj4gMik7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgIGlmIChlW2kgPj4gMl0gPSBlW2kgPj4gMl0gLSBlW2kgKyAzMiA+PiAyXSwgZyA9IGkgKyA0IHwgMCwgZVtnID4+IDJdID0gZVtnID4+IDJdIC0gZVtpICsgMzYgPj4gMl0sIG8gPSBpICsgOCB8IDAsIGVbbyA+PiAyXSA9IGVbbyA+PiAyXSAtIGVbaSArIDQwID4+IDJdLCBoID0gaSArIDEyIHwgMCwgZVtoID4+IDJdID0gZVtoID4+IDJdIC0gZVtpICsgNDQgPj4gMl0sIGwgPSAxNiwgYyA9IGkgKyAxNiB8IDAsIGVbYyA+PiAyXSA9IGVbYyA+PiAyXSAtIGVbaSArIDQ4ID4+IDJdLCB2ID0gaSArIDIwIHwgMCwgZVt2ID4+IDJdID0gZVt2ID4+IDJdIC0gZVtpICsgNTIgPj4gMl0sIEMgPSBpICsgMjQgfCAwLCBlW0MgPj4gMl0gPSBlW0MgPj4gMl0gLSBlW2kgKyA1NiA+PiAyXSwgdyA9IGkgKyAyOCB8IDAsIGVbdyA+PiAyXSA9IGVbdyA+PiAyXSAtIGVbaSArIDYwID4+IDJdLCBtID4+PiAwID4gMykgewogICAgICAgICAgICAgICAgICAgIGZvciAocyA9IEIgPj4+IDAgPD0gMiA/IDIgOiBCLCB5ID0gaSAtIDQgfCAwLCBwID0gaSAtIDggfCAwLCBIID0gaSAtIDEyIHwgMCwgSiA9IGkgLSAxNiB8IDAsIEUgPSBpIC0gMjAgfCAwLCBEID0gaSAtIDI0IHwgMCwgVSA9IGkgLSAyOCB8IDAsIGEgPSAxOyBsID0gYSA8PCA2LCBuID0gbCArIGkgfCAwLCBlW24gPj4gMl0gPSBlW24gPj4gMl0gLSAoZVtuIC0gMzIgPj4gMl0gKyBlW24gKyAzMiA+PiAyXSA+PiAxKSwgZVtuICsgNCA+PiAyXSA9IGVbbiArIDQgPj4gMl0gLSAoZVtsICsgVSA+PiAyXSArIGVbbiArIDM2ID4+IDJdID4+IDEpLCBlW24gKyA4ID4+IDJdID0gZVtuICsgOCA+PiAyXSAtIChlW2wgKyBEID4+IDJdICsgZVtuICsgNDAgPj4gMl0gPj4gMSksIGVbbiArIDEyID4+IDJdID0gZVtuICsgMTIgPj4gMl0gLSAoZVtsICsgRSA+PiAyXSArIGVbbiArIDQ0ID4+IDJdID4+IDEpLCBlW24gKyAxNiA+PiAyXSA9IGVbbiArIDE2ID4+IDJdIC0gKGVbbCArIEogPj4gMl0gKyBlW24gKyA0OCA+PiAyXSA+PiAxKSwgZVtuICsgMjAgPj4gMl0gPSBlW24gKyAyMCA+PiAyXSAtIChlW2wgKyBIID4+IDJdICsgZVtuICsgNTIgPj4gMl0gPj4gMSksIGVbbiArIDI0ID4+IDJdID0gZVtuICsgMjQgPj4gMl0gLSAoZVtsICsgcCA+PiAyXSArIGVbbiArIDU2ID4+IDJdID4+IDEpLCBlW24gKyAyOCA+PiAyXSA9IGVbbiArIDI4ID4+IDJdIC0gKGVbbCArIHkgPj4gMl0gKyBlW24gKyA2MCA+PiAyXSA+PiAxKSwgYSA9IGEgKyAxIHwgMCwgKHMgfCAwKSAhPSAoYSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgbCA9IHMgPDwgNDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAobiA9IDEsIHMgPSByICYgMSwgcyAmJiAoYSA9IGwgPDwgMiwgbCA9IGEgKyBpIHwgMCwgZVtsID4+IDJdID0gZVtsID4+IDJdIC0gZVtsIC0gMzIgPj4gMl0sIGVbbCArIDQgPj4gMl0gPSBlW2wgKyA0ID4+IDJdIC0gZVsoYSArIGcgfCAwKSAtIDMyID4+IDJdLCBlW2wgKyA4ID4+IDJdID0gZVtsICsgOCA+PiAyXSAtIGVbKGEgKyBvIHwgMCkgLSAzMiA+PiAyXSwgZVtsICsgMTIgPj4gMl0gPSBlW2wgKyAxMiA+PiAyXSAtIGVbKGEgKyBoIHwgMCkgLSAzMiA+PiAyXSwgZVtsICsgMTYgPj4gMl0gPSBlW2wgKyAxNiA+PiAyXSAtIGVbKGEgKyBjIHwgMCkgLSAzMiA+PiAyXSwgZVtsICsgMjAgPj4gMl0gPSBlW2wgKyAyMCA+PiAyXSAtIGVbKGEgKyB2IHwgMCkgLSAzMiA+PiAyXSwgZVtsICsgMjQgPj4gMl0gPSBlW2wgKyAyNCA+PiAyXSAtIGVbKGEgKyBDIHwgMCkgLSAzMiA+PiAyXSwgZVtsICsgMjggPj4gMl0gPSBlW2wgKyAyOCA+PiAyXSAtIGVbKGEgKyB3IHwgMCkgLSAzMiA+PiAyXSksIGwgPSAwLCB1ID4+PiAwID49IDIpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbCA9IChsIDw8IDYpICsgaSB8IDAsIGEgPSBuIDw8IDYsIGVbbCArIDMyID4+IDJdID0gZVtsICsgMzIgPj4gMl0gKyAoKGVbbCA+PiAyXSArIGVbYSArIGkgPj4gMl0gfCAwKSArIDIgPj4gMiksIGVbbCArIDM2ID4+IDJdID0gZVtsICsgMzYgPj4gMl0gKyAoKGVbbCArIDQgPj4gMl0gKyBlW2EgKyBnID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW2wgKyA0MCA+PiAyXSA9IGVbbCArIDQwID4+IDJdICsgKChlW2wgKyA4ID4+IDJdICsgZVthICsgbyA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVtsICsgNDQgPj4gMl0gPSBlW2wgKyA0NCA+PiAyXSArICgoZVtsICsgMTIgPj4gMl0gKyBlW2EgKyBoID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW2wgKyA0OCA+PiAyXSA9IGVbbCArIDQ4ID4+IDJdICsgKChlW2wgKyAxNiA+PiAyXSArIGVbYSArIGMgPj4gMl0gfCAwKSArIDIgPj4gMiksIGVbbCArIDUyID4+IDJdID0gZVtsICsgNTIgPj4gMl0gKyAoKGVbbCArIDIwID4+IDJdICsgZVthICsgdiA+PiAyXSB8IDApICsgMiA+PiAyKSwgZVtsICsgNTYgPj4gMl0gPSBlW2wgKyA1NiA+PiAyXSArICgoZVtsICsgMjQgPj4gMl0gKyBlW2EgKyBDID4+IDJdIHwgMCkgKyAyID4+IDIpLCBlW2wgKyA2MCA+PiAyXSA9IGVbbCArIDYwID4+IDJdICsgKChlW2wgKyAyOCA+PiAyXSArIGVbYSArIHcgPj4gMl0gfCAwKSArIDIgPj4gMiksIGwgPSBuLCBuID0gbCArIDEgfCAwLCAodSB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBsID0gbCA8PCA0OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChzKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIG4gPSAobCA8PCAyKSArIGkgfCAwLCBlW24gKyAzMiA+PiAyXSA9IGVbbiArIDMyID4+IDJdICsgKChlW24gPj4gMl0gPDwgMSkgKyAyID4+IDIpLCBlW24gKyAzNiA+PiAyXSA9IGVbbiArIDM2ID4+IDJdICsgKChlW24gKyA0ID4+IDJdIDw8IDEpICsgMiA+PiAyKSwgZVtuICsgNDAgPj4gMl0gPSBlW24gKyA0MCA+PiAyXSArICgoZVtuICsgOCA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGVbbiArIDQ0ID4+IDJdID0gZVtuICsgNDQgPj4gMl0gKyAoKGVbbiArIDEyID4+IDJdIDw8IDEpICsgMiA+PiAyKSwgZVtuICsgNDggPj4gMl0gPSBlW24gKyA0OCA+PiAyXSArICgoZVtuICsgMTYgPj4gMl0gPDwgMSkgKyAyID4+IDIpLCBlW24gKyA1MiA+PiAyXSA9IGVbbiArIDUyID4+IDJdICsgKChlW24gKyAyMCA+PiAyXSA8PCAxKSArIDIgPj4gMiksIGVbbiArIDU2ID4+IDJdID0gZVtuICsgNTYgPj4gMl0gKyAoKGVbbiArIDI0ID4+IDJdIDw8IDEpICsgMiA+PiAyKSwgZVtuICsgNjAgPj4gMl0gPSBlW24gKyA2MCA+PiAyXSArICgoZVtuICsgMjggPj4gMl0gPDwgMSkgKyAyID4+IDIpOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVtpID4+IDJdID0gZVtpID4+IDJdIDw8IDEsIGVbaSArIDQgPj4gMl0gPSBlW2kgKyA0ID4+IDJdIDw8IDEsIGVbaSArIDggPj4gMl0gPSBlW2kgKyA4ID4+IDJdIDw8IDEsIGVbaSArIDEyID4+IDJdID0gZVtpICsgMTIgPj4gMl0gPDwgMSwgZVtpICsgMTYgPj4gMl0gPSBlW2kgKyAxNiA+PiAyXSA8PCAxLCBlW2kgKyAyMCA+PiAyXSA9IGVbaSArIDIwID4+IDJdIDw8IDEsIGVbaSArIDI0ID4+IDJdID0gZVtpICsgMjQgPj4gMl0gPDwgMSwgZVtpICsgMjggPj4gMl0gPSBlW2kgKyAyOCA+PiAyXSA8PCAxOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSA9PSA4KSB7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAobSA+Pj4gMCA8IDIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIHQgPSBCIC0gMSB8IDAsIGwgPSAoIWYgPDwgNSkgKyBpIHwgMCwgbSA9IEIgJiAzOwogICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICghbSkgewogICAgICAgICAgICAgICAgICAgICAgICBhID0gQiwgbiA9IEE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBrIDw8IDIsIGEgPSBCLCBuID0gQSwgZyA9IDA7IGggPSBlW2wgKyA0ID4+IDJdLCBlW24gPj4gMl0gPSBlW2wgPj4gMl0sIGVbbiArIDQgPj4gMl0gPSBoLCBoID0gZVtsICsgMjggPj4gMl0sIGVbbiArIDI0ID4+IDJdID0gZVtsICsgMjQgPj4gMl0sIGVbbiArIDI4ID4+IDJdID0gaCwgaCA9IGVbbCArIDIwID4+IDJdLCBlW24gKyAxNiA+PiAyXSA9IGVbbCArIDE2ID4+IDJdLCBlW24gKyAyMCA+PiAyXSA9IGgsIGggPSBlW2wgKyAxMiA+PiAyXSwgZVtuICsgOCA+PiAyXSA9IGVbbCArIDggPj4gMl0sIGVbbiArIDEyID4+IDJdID0gaCwgbCA9IGwgLSAtNjQgfCAwLCBhID0gYSAtIDEgfCAwLCBuID0gbiArIG8gfCAwLCBnID0gZyArIDEgfCAwLCAobSB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA8IDMpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGsgPDwgMjsgdCA9IGVbbCArIDQgPj4gMl0sIGVbbiA+PiAyXSA9IGVbbCA+PiAyXSwgZVtuICsgNCA+PiAyXSA9IHQsIHQgPSBlW2wgKyAyOCA+PiAyXSwgZVtuICsgMjQgPj4gMl0gPSBlW2wgKyAyNCA+PiAyXSwgZVtuICsgMjggPj4gMl0gPSB0LCB0ID0gZVtsICsgMjAgPj4gMl0sIGVbbiArIDE2ID4+IDJdID0gZVtsICsgMTYgPj4gMl0sIGVbbiArIDIwID4+IDJdID0gdCwgdCA9IGVbbCArIDEyID4+IDJdLCBlW24gKyA4ID4+IDJdID0gZVtsICsgOCA+PiAyXSwgZVtuICsgMTIgPj4gMl0gPSB0LCB0ID0gbiArIGcgfCAwLCBuID0gZVtsICsgOTIgPj4gMl0sIGVbdCArIDI0ID4+IDJdID0gZVtsICsgODggPj4gMl0sIGVbdCArIDI4ID4+IDJdID0gbiwgbiA9IGVbbCArIDg0ID4+IDJdLCBlW3QgKyAxNiA+PiAyXSA9IGVbbCArIDgwID4+IDJdLCBlW3QgKyAyMCA+PiAyXSA9IG4sIG4gPSBlW2wgKyA3NiA+PiAyXSwgZVt0ICsgOCA+PiAyXSA9IGVbbCArIDcyID4+IDJdLCBlW3QgKyAxMiA+PiAyXSA9IG4sIG4gPSBlW2wgKyA2OCA+PiAyXSwgZVt0ID4+IDJdID0gZVtsICsgNjQgPj4gMl0sIGVbdCArIDQgPj4gMl0gPSBuLCBuID0gZVtsICsgMTU2ID4+IDJdLCB0ID0gdCArIGcgfCAwLCBlW3QgKyAyNCA+PiAyXSA9IGVbbCArIDE1MiA+PiAyXSwgZVt0ICsgMjggPj4gMl0gPSBuLCBuID0gZVtsICsgMTQ4ID4+IDJdLCBlW3QgKyAxNiA+PiAyXSA9IGVbbCArIDE0NCA+PiAyXSwgZVt0ICsgMjAgPj4gMl0gPSBuLCBuID0gZVtsICsgMTQwID4+IDJdLCBlW3QgKyA4ID4+IDJdID0gZVtsICsgMTM2ID4+IDJdLCBlW3QgKyAxMiA+PiAyXSA9IG4sIG4gPSBlW2wgKyAxMzIgPj4gMl0sIGVbdCA+PiAyXSA9IGVbbCArIDEyOCA+PiAyXSwgZVt0ICsgNCA+PiAyXSA9IG4sIG4gPSBlW2wgKyAyMjAgPj4gMl0sIHQgPSB0ICsgZyB8IDAsIGVbdCArIDI0ID4+IDJdID0gZVtsICsgMjE2ID4+IDJdLCBlW3QgKyAyOCA+PiAyXSA9IG4sIG4gPSBlW2wgKyAyMTIgPj4gMl0sIGVbdCArIDE2ID4+IDJdID0gZVtsICsgMjA4ID4+IDJdLCBlW3QgKyAyMCA+PiAyXSA9IG4sIG4gPSBlW2wgKyAyMDQgPj4gMl0sIGVbdCArIDggPj4gMl0gPSBlW2wgKyAyMDAgPj4gMl0sIGVbdCArIDEyID4+IDJdID0gbiwgbiA9IGVbbCArIDE5NiA+PiAyXSwgZVt0ID4+IDJdID0gZVtsICsgMTkyID4+IDJdLCBlW3QgKyA0ID4+IDJdID0gbiwgbiA9IHQgKyBnIHwgMCwgbCA9IGwgKyAyNTYgfCAwLCBhID0gYSAtIDQgfCAwLCAhIWE7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoIXUpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgaWYgKGwgPSAoKChmIHwgMCkgIT0gMCkgPDwgNSkgKyBpIHwgMCwgbiA9IChaKGssIEIpIDw8IDIpICsgQSB8IDAsIEEgPSB1ICYgMywgQSkKICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAwLCBpID0gayA8PCAyOyBmID0gZVtsICsgNCA+PiAyXSwgZVtuID4+IDJdID0gZVtsID4+IDJdLCBlW24gKyA0ID4+IDJdID0gZiwgZiA9IGVbbCArIDI4ID4+IDJdLCBlW24gKyAyNCA+PiAyXSA9IGVbbCArIDI0ID4+IDJdLCBlW24gKyAyOCA+PiAyXSA9IGYsIGYgPSBlW2wgKyAyMCA+PiAyXSwgZVtuICsgMTYgPj4gMl0gPSBlW2wgKyAxNiA+PiAyXSwgZVtuICsgMjAgPj4gMl0gPSBmLCBmID0gZVtsICsgMTIgPj4gMl0sIGVbbiArIDggPj4gMl0gPSBlW2wgKyA4ID4+IDJdLCBlW24gKyAxMiA+PiAyXSA9IGYsIGwgPSBsIC0gLTY0IHwgMCwgdSA9IHUgLSAxIHwgMCwgbiA9IGkgKyBuIHwgMCwgYSA9IGEgKyAxIHwgMCwgKEEgfCAwKSAhPSAoYSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmIChCIC0gciA+Pj4gMCA+IDQyOTQ5NjcyOTIpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZm9yIChpID0gayA8PCAyOyBBID0gZVtsICsgNCA+PiAyXSwgZVtuID4+IDJdID0gZVtsID4+IDJdLCBlW24gKyA0ID4+IDJdID0gQSwgQSA9IGVbbCArIDI4ID4+IDJdLCBlW24gKyAyNCA+PiAyXSA9IGVbbCArIDI0ID4+IDJdLCBlW24gKyAyOCA+PiAyXSA9IEEsIEEgPSBlW2wgKyAyMCA+PiAyXSwgZVtuICsgMTYgPj4gMl0gPSBlW2wgKyAxNiA+PiAyXSwgZVtuICsgMjAgPj4gMl0gPSBBLCBBID0gZVtsICsgMTIgPj4gMl0sIGVbbiArIDggPj4gMl0gPSBlW2wgKyA4ID4+IDJdLCBlW24gKyAxMiA+PiAyXSA9IEEsIHIgPSBlW2wgKyA5MiA+PiAyXSwgQSA9IGkgKyBuIHwgMCwgZVtBICsgMjQgPj4gMl0gPSBlW2wgKyA4OCA+PiAyXSwgZVtBICsgMjggPj4gMl0gPSByLCByID0gZVtsICsgODQgPj4gMl0sIGVbQSArIDE2ID4+IDJdID0gZVtsICsgODAgPj4gMl0sIGVbQSArIDIwID4+IDJdID0gciwgciA9IGVbbCArIDc2ID4+IDJdLCBlW0EgKyA4ID4+IDJdID0gZVtsICsgNzIgPj4gMl0sIGVbQSArIDEyID4+IDJdID0gciwgciA9IGVbbCArIDY4ID4+IDJdLCBlW0EgPj4gMl0gPSBlW2wgKyA2NCA+PiAyXSwgZVtBICsgNCA+PiAyXSA9IHIsIHIgPSBlW2wgKyAxNTYgPj4gMl0sIEEgPSBBICsgaSB8IDAsIGVbQSArIDI0ID4+IDJdID0gZVtsICsgMTUyID4+IDJdLCBlW0EgKyAyOCA+PiAyXSA9IHIsIHIgPSBlW2wgKyAxNDggPj4gMl0sIGVbQSArIDE2ID4+IDJdID0gZVtsICsgMTQ0ID4+IDJdLCBlW0EgKyAyMCA+PiAyXSA9IHIsIHIgPSBlW2wgKyAxNDAgPj4gMl0sIGVbQSArIDggPj4gMl0gPSBlW2wgKyAxMzYgPj4gMl0sIGVbQSArIDEyID4+IDJdID0gciwgciA9IGVbbCArIDEzMiA+PiAyXSwgZVtBID4+IDJdID0gZVtsICsgMTI4ID4+IDJdLCBlW0EgKyA0ID4+IDJdID0gciwgciA9IGVbbCArIDIyMCA+PiAyXSwgQSA9IEEgKyBpIHwgMCwgZVtBICsgMjQgPj4gMl0gPSBlW2wgKyAyMTYgPj4gMl0sIGVbQSArIDI4ID4+IDJdID0gciwgciA9IGVbbCArIDIxMiA+PiAyXSwgZVtBICsgMTYgPj4gMl0gPSBlW2wgKyAyMDggPj4gMl0sIGVbQSArIDIwID4+IDJdID0gciwgciA9IGVbbCArIDIwNCA+PiAyXSwgZVtBICsgOCA+PiAyXSA9IGVbbCArIDIwMCA+PiAyXSwgZVtBICsgMTIgPj4gMl0gPSByLCByID0gZVtsICsgMTk2ID4+IDJdLCBlW0EgPj4gMl0gPSBlW2wgKyAxOTIgPj4gMl0sIGVbQSArIDQgPj4gMl0gPSByLCBuID0gQSArIGkgfCAwLCBsID0gbCArIDI1NiB8IDAsIHUgPSB1IC0gNCB8IDAsICEhdTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF80KGksIEEsIHUsIEIsIGssICFmLCB0KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gQzQoQSwgaSkgewogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IFcoMCksIGMgPSAwLCB2ID0gMCwgQyA9IFcoMCksIG0gPSAwLCB5ID0gMCwgcCA9IDAsIEggPSBXKDApLCBKID0gVygwKSwgRSA9IFcoMCksIEQgPSAwLCBVID0gVygwKTsKICAgICAgICAgICAgICBvID0gWCAtIDgyNzIgfCAwLCBYID0gbywgZVtvICsgMTYgPj4gMl0gPSAwLCBsID0gZVtlW0EgPj4gMl0gPj4gMl0sIHIgPSBFMigxLCA5NiksIGsgPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGVbciArIDc2ID4+IDJdID0gMTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6CiAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKCgobCB8IDApICE9IDEzNzU2ODY2NTUpIDw8IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA4OCA+PiAyXSA9IDIwNSwgZVtyICsgODQgPj4gMl0gPSAyMDYsIGVbciArIDgwID4+IDJdID0gMjA3LCBlW3IgKyAxNiA+PiAyXSA9IDIwOCwgZVtyICsgNCA+PiAyXSA9IDIwOSwgZVtyICsgMjggPj4gMl0gPSAyMTAsIGVbciArIDI0ID4+IDJdID0gMjExLCBlW3IgKyAyMCA+PiAyXSA9IDIxMiwgZVtyID4+IDJdID0gMjEzLCBlW3IgKyA5MiA+PiAyXSA9IDIxNCwgZVtyICsgNDQgPj4gMl0gPSAyMTUsIGVbciArIDQwID4+IDJdID0gMjE2LCBlW3IgKyAzNiA+PiAyXSA9IDIxNywgZVtyICsgMzIgPj4gMl0gPSAyMTgsIGVbciArIDEyID4+IDJdID0gMjE5LCBlW3IgKyA4ID4+IDJdID0gMjIwLCB0ID0gZzYoKSwgZVtyICsgNDggPj4gMl0gPSB0LCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVbciArIDg4ID4+IDJdID0gMjIxLCBlW3IgKyA4NCA+PiAyXSA9IDIyMiwgZVtyICsgODAgPj4gMl0gPSAyMjMsIGVbciArIDE2ID4+IDJdID0gMjI0LCBlW3IgKyA0ID4+IDJdID0gMjI1LCBlW3IgKyA5MiA+PiAyXSA9IDIyNiwgZVtyICsgNDQgPj4gMl0gPSAyMjcsIGVbciArIDQwID4+IDJdID0gMjI4LCBlW3IgKyAzNiA+PiAyXSA9IDIyOSwgZVtyICsgMzIgPj4gMl0gPSAyMzAsIGVbciArIDI4ID4+IDJdID0gMjMxLCBlW3IgKyAyNCA+PiAyXSA9IDIzMiwgZVtyICsgMjAgPj4gMl0gPSAyMzMsIGVbciArIDEyID4+IDJdID0gMjM0LCBlW3IgKyA4ID4+IDJdID0gMjM1LCBlW3IgPj4gMl0gPSAyMzYsIHQgPSBFMigxLCAxMzYpOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBnNigpLCBlW3QgPj4gMl0gPSBsOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsIHx8IChlW3QgKyAxMDggPj4gMl0gPSAwLCBlW3QgKyAxMTIgPj4gMl0gPSAwLCBGW3QgKyAxMjQgfCAwXSA9IDAsIGVbdCArIDExNiA+PiAyXSA9IDAsIGVbdCArIDEyMCA+PiAyXSA9IDAsIGwgPSBwZSgpLCBlW3QgKyA0ID4+IDJdID0gbCwgIWwpIHx8IChsID0gcGUoKSwgZVt0ICsgOCA+PiAyXSA9IGwsICFsKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBCNih0KTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHQgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNDggPj4gMl0gPSB0LCAhdCkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVtyICsgNzIgPj4gMl0gPSAxMDcsIGVbciArIDY0ID4+IDJdID0gMTA3LCBlW3IgKyA2MCA+PiAyXSA9IDAsIGVbciArIDUyID4+IDJdID0gMCwgZVtyICsgNTYgPj4gMl0gPSAwLCBlW3IgKyA2OCA+PiAyXSA9IDEwNywgayA9IHI7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBSKHIpLCBrID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHQgPSBrLCB0ICYmIChlW3QgKyA2MCA+PiAyXSA9IDAsIGVbdCArIDcyID4+IDJdID0gNTYpLCB0ICYmIChlW3QgKyA1NiA+PiAyXSA9IDAsIGVbdCArIDY4ID4+IDJdID0gNTcpLCB0ICYmIChlW3QgKyA1MiA+PiAyXSA9IDAsIGVbdCArIDY0ID4+IDJdID0gNTgpLCByID0gbyArIDIwIHwgMCwgciAmJiAociA9IGQyKHIsIDAsIDgyNDgpLCBlW3IgKyA4MjQ4ID4+IDJdID0gMCwgZVtyICsgODIwMCA+PiAyXSA9IC0xLCBlW3IgKyA4MjA0ID4+IDJdID0gLTEpLCBlW28gKyAyMCA+PiAyXSA9IGksIGVbbyArIDI0ID4+IDJdID0gZVtBICsgODQgPj4gMl0sIHIgPSBlW0EgPj4gMl0sIGVbbyArIDggPj4gMl0gPSByLCBlW28gKyA0ID4+IDJdID0gciwgZVtvICsgMTIgPj4gMl0gPSBlW0EgKyA0ID4+IDJdIC0gciwgZyA9IEY2KDEpLCBnICYmIChnICYmIChlW2cgKyA0ID4+IDJdID0gMCwgZVtnID4+IDJdID0gbyArIDQpLCByID0gZVtvICsgMTIgPj4gMl0sIGcgJiYgKGVbZyArIDggPj4gMl0gPSByLCBlW2cgKyAxMiA+PiAyXSA9IDApLCAhZyB8ICEoSVtnICsgNjggfCAwXSAmIDIpIHx8IChlW2cgKyAxNiA+PiAyXSA9IDU5KSwgZyAmJiAoZVtnICsgMjQgPj4gMl0gPSA2MCksIGcgJiYgKGVbZyArIDI4ID4+IDJdID0gNjEpKSwgciA9IG8gKyAyMCB8IDAsICEoIXQgfCAhcikpCiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgIGlmICghZVt0ICsgNzYgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICBRKHQgKyA1MiB8IDAsIDEsIDIwNDM4LCAwKSwgZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBvMltlW3QgKyAyNCA+PiAyXV0oZVt0ICsgNDggPj4gMl0sIHIpLCBmID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIWYpIHsKICAgICAgICAgICAgICAgICAgSXIoMTUwOCksIG1pKGcpLCBLZSh0KTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSBvICsgMTYgfCAwLCByID0gMDsKICAgICAgICAgICAgICAgIGk6CiAgICAgICAgICAgICAgICAgIGlmICghZyB8ICF0KQogICAgICAgICAgICAgICAgICAgIGsgPSByOwogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWVbdCArIDc2ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICBRKHQgKyA1MiB8IDAsIDEsIDIwNTE5LCAwKSwgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBrID0gbzJbZVt0ID4+IDJdXShnLCBlW3QgKyA0OCA+PiAyXSwgZiwgdCArIDUyIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWspIHsKICAgICAgICAgICAgICAgICAgSXIoMTU3MSksIG1pKGcpLCBLZSh0KSwgeTEoZVtvICsgMTYgPj4gMl0pOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGYgPSBlW28gKyAxNiA+PiAyXSwgIWVbdCArIDc2ID4+IDJdIHwgKCF0IHwgIWcpIHx8IChyID0gbzJbZVt0ICsgNCA+PiAyXV0oZVt0ICsgNDggPj4gMl0sIGcsIGYsIHQgKyA1MiB8IDApIHwgMCksICFyKSB7CiAgICAgICAgICAgICAgICAgIElyKDM0NjApLCBLZSh0KSwgbWkoZyksIHkxKGVbbyArIDE2ID4+IDJdKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGggPSBlW28gKyAxNiA+PiAyXSwgciA9IGVbaCArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW2ggKyAyMCA+PiAyXSwgKGYgfCAwKSAhPSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgociB8IDApID09IDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbaCArIDI0ID4+IDJdLCBlW3IgPj4gMl0gIT0gZVtyICsgNCA+PiAyXSB8IGVbciArIDUyID4+IDJdID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVbaCArIDIwID4+IDJdID0gMywgWjQoaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA+IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDwgMykKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIFo0KGgpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoZVtvICsgODIyNCA+PiAyXSA9PSAxNCB8IChmIHwgMCkgIT0gNSkpIHsKICAgICAgICAgICAgICAgICAgICAgIGsgPSBYIC0gMTYgfCAwLCBYID0gazsKICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2ggKyAxNiA+PiAyXSA8IDQgfHwgKHIgPSBlW2ggKyAyNCA+PiAyXSwgZiA9IGVbciA+PiAyXSwgKGYgfCAwKSAhPSBlW3IgKyA1MiA+PiAyXSB8IChmIHwgMCkgIT0gZVtyICsgMTA0ID4+IDJdIHwgKGYgfCAwKSAhPSBlW3IgKyAxNTYgPj4gMl0pIHx8IChmID0gZVtyICsgNCA+PiAyXSwgKGYgfCAwKSAhPSBlW3IgKyA1NiA+PiAyXSB8IChmIHwgMCkgIT0gZVtyICsgMTA4ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID09IGVbciArIDE2MCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgNCA+PiAyXSA9IDYxOSwgZVtrID4+IDJdID0gMTY0NiwgSTAoZVsxMTg0Nl0sIDE4NDQ3LCBrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBaKGVbciArIDEyID4+IDJdLCBlW3IgKyA4ID4+IDJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGVbciArIDIwMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoSCA9IFcoVygxKSAvIFcoKC0xIDw8IGVbciArIDE4MCA+PiAyXSBeIC0xKSA+Pj4gMCkpLCBKID0gVyhXKDEpIC8gVygoLTEgPDwgZVtyICsgMTI4ID4+IDJdIF4gLTEpID4+PiAwKSksIEMgPSBXKFcoMSkgLyBXKCgtMSA8PCBlW3IgKyA3NiA+PiAyXSBeIC0xKSA+Pj4gMCkpLCBVID0gVyhXKDEpIC8gVygoLTEgPDwgZVtyICsgMjQgPj4gMl0gXiAtMSkgPj4+IDApKSwgbCA9IGVbciArIDIwMCA+PiAyXSwgbSA9IGVbciArIDE0OCA+PiAyXSwgbiA9IGVbciArIDk2ID4+IDJdLCBwID0gZVtyICsgNDQgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYSA8PCAyLCBzID0gZiArIHAgfCAwLCBCID0gVyhXKDEpIC0gVyhIICogVyhlW2YgKyBsID4+IDJdKSkpLCBFID0gVyhXKFcoVygxKSAtIFcoVSAqIFcoZVtzID4+IDJdKSkpICogVygyNTUpKSAqIEIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMihFKSkgPCBXKDIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IH5+RTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBmICsgbSB8IDAsIHkgPSBlW3IgPj4gMl0sIGYgPSBmICsgbiB8IDAsIHYgPSBlW2YgPj4gMl0sIGVbcyA+PiAyXSA9IHcsIEUgPSBXKFcoVyhXKDEpIC0gVyhDICogVyh2IHwgMCkpKSAqIFcoMjU1KSkgKiBCKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIoRSkpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB+fkU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2YgPj4gMl0gPSB3LCBCID0gVyhXKFcoVygxKSAtIFcoSiAqIFcoeSB8IDApKSkgKiBXKDI1NSkpICogQik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXKFIyKEIpKSA8IFcoMjE0NzQ4MzY0OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gfn5COwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciA+PiAyXSA9IGYsIGEgPSBhICsgMSB8IDAsIChjIHwgMCkgPT0gKGEgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSKGwpLCByID0gZVtoICsgMjQgPj4gMl0sIGVbciArIDEyOCA+PiAyXSA9IDgsIGVbciArIDc2ID4+IDJdID0gOCwgZVtyICsgMjQgPj4gMl0gPSA4LCBlW3IgKyAyMDAgPj4gMl0gPSAwLCBlW2ggKyAyMCA+PiAyXSA9IDEsIHIgPSBlW2ggKyAxNiA+PiAyXSAtIDEgfCAwLCBlW2ggKyAxNiA+PiAyXSA9IHIsIHIgPj4+IDAgPCA0KQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IDM7IHIgPSBlW2ggKyAyNCA+PiAyXSArIFooYSwgNTIpIHwgMCwgZVtyICsgNDggPj4gMl0gPSBlW3IgKyAxMDAgPj4gMl0sIGYgPSBlW3IgKyA5NiA+PiAyXSwgZVtyICsgNDAgPj4gMl0gPSBlW3IgKyA5MiA+PiAyXSwgZVtyICsgNDQgPj4gMl0gPSBmLCBmID0gZVtyICsgODggPj4gMl0sIGVbciArIDMyID4+IDJdID0gZVtyICsgODQgPj4gMl0sIGVbciArIDM2ID4+IDJdID0gZiwgZiA9IGVbciArIDgwID4+IDJdLCBlW3IgKyAyNCA+PiAyXSA9IGVbciArIDc2ID4+IDJdLCBlW3IgKyAyOCA+PiAyXSA9IGYsIGYgPSBlW3IgKyA3MiA+PiAyXSwgZVtyICsgMTYgPj4gMl0gPSBlW3IgKyA2OCA+PiAyXSwgZVtyICsgMjAgPj4gMl0gPSBmLCBmID0gZVtyICsgNjQgPj4gMl0sIGVbciArIDggPj4gMl0gPSBlW3IgKyA2MCA+PiAyXSwgZVtyICsgMTIgPj4gMl0gPSBmLCBmID0gZVtyICsgNTYgPj4gMl0sIGVbciA+PiAyXSA9IGVbciArIDUyID4+IDJdLCBlW3IgKyA0ID4+IDJdID0gZiwgYSA9IGEgKyAxIHwgMCwgYSA+Pj4gMCA8IGRbaCArIDE2ID4+IDJdOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgWCA9IGsgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKGYgfCAwKSAhPSA0KQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB3ID0gWCAtIDE2IHwgMCwgWCA9IHc7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRbaCArIDE2ID4+IDJdIDwgMyB8fCAoZiA9IGVbaCArIDI0ID4+IDJdLCByID0gZVtmID4+IDJdLCAociB8IDApICE9IGVbZiArIDUyID4+IDJdIHwgKHIgfCAwKSAhPSBlW2YgKyAxMDQgPj4gMl0pIHx8IChyID0gZVtmICsgNCA+PiAyXSwgKHIgfCAwKSAhPSBlW2YgKyA1NiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgociB8IDApID09IGVbZiArIDEwOCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZVt3ICsgNCA+PiAyXSA9IDY4MCwgZVt3ID4+IDJdID0gMTY0NiwgSTAoZVsxMTg0Nl0sIDE4NDg5LCB3KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChjID0gWihlW2YgKyAxMiA+PiAyXSwgZVtmICsgOCA+PiAyXSksIGMpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGVbZiArIDI0ID4+IDJdLCByID0gLTEgPDwgbCBeIC0xLCBsID0gMSA8PCBsIC0gMSwgbSA9IGVbZiArIDEzNiA+PiAyXSA/IDAgOiBsLCBuID0gZVtmICsgODQgPj4gMl0gPyAwIDogbCwgcCA9IGVbZiArIDE0OCA+PiAyXSwgcyA9IGVbZiArIDk2ID4+IDJdLCB5ID0gZVtmICsgNDQgPj4gMl0sIGYgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmIDw8IDIsIGEgPSBsICsgcCB8IDAsIEIgPSBXKGVbYSA+PiAyXSAtIG0gfCAwKSwgayA9IGwgKyBzIHwgMCwgSCA9IFcoZVtrID4+IDJdIC0gbiB8IDApLCB2ID0gbCArIHkgfCAwLCBKID0gVyhlW3YgPj4gMl0pLCBDID0gVyhXKFcoQiAqIFcoMS40MDE5OTAwNTYwMzc5MDI4KSkgKyBXKFcoSCAqIFcoLTM2ODAwMDAwMDg4OTg3ODdlLTIwKSkgKyBKKSkgKyBXKDAuNSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXKFIyKEMpKSA8IFcoMjE0NzQ4MzY0OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IH5+QzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVt2ID4+IDJdID0gKHIgfCAwKSA8IChsIHwgMCkgPyByIDogKGwgfCAwKSA+IDAgPyBsIDogMCwgQyA9IFcoVyhXKEIgKiBXKC0wLjcxNDExMjgxODI0MTExOTQpKSArIFcoVyhKICogVygxLjAwMDMwMDA0OTc4MTc5OTMpKSArIFcoSCAqIFcoLTAuMzQ0MTI1MDAyNjIyNjA0MzcpKSkpICsgVygwLjUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVyhSMihDKSkgPCBXKDIxNDc0ODM2NDgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB+fkM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gLTIxNDc0ODM2NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVbayA+PiAyXSA9IChyIHwgMCkgPCAobCB8IDApID8gciA6IChsIHwgMCkgPiAwID8gbCA6IDAsIEIgPSBXKFcoVyhCICogVygtNzk5OTk5OTk3OTgwMTk0MmUtMjEpKSArIFcoVyhKICogVygwLjk5OTgyMjk3NDIwNTAxNzEpKSArIFcoSCAqIFcoMS43NzIwNDAwMDk0OTg1OTYyKSkpKSArIFcoMC41KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIoQikpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gfn5COwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVthID4+IDJdID0gKHIgfCAwKSA8IChsIHwgMCkgPyByIDogKGwgfCAwKSA+IDAgPyBsIDogMCwgZiA9IGYgKyAxIHwgMCwgKGMgfCAwKSA9PSAoZiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbaCArIDIwID4+IDJdID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgWCA9IHcgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW2ggKyAyMCA+PiAyXSA9IDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByID0gZVtvICsgMTYgPj4gMl0sIHUyW0EgKyAyNCA+PiAxXSA9IGVbciArIDggPj4gMl0sIHUyW0EgKyAyNiA+PiAxXSA9IGVbciArIDEyID4+IDJdLCBGW0EgKyAyOSB8IDBdID0gZVtyICsgMTYgPj4gMl0sIGEgPSAwLCBmID0gZVtyICsgMjQgPj4gMl0sIEZbQSArIDMwIHwgMF0gPSBlW2YgKyAzMiA+PiAyXSAhPSAwLCBGW0EgKyAyOCB8IDBdID0gZVtmICsgMjQgPj4gMl0sIGVbQSArIDgwID4+IDJdID0gZVtyICsgMjAgPj4gMl0sIGVbQSArIDQ0ID4+IDJdID0gZVtyID4+IDJdLCBlW0EgKyA0OCA+PiAyXSA9IGVbciArIDQgPj4gMl0sIHQgPyByID0gbzJbZVt0ICsgODQgPj4gMl1dKGVbdCArIDQ4ID4+IDJdKSB8IDAgOiByID0gMCwgZVtBICsgNzYgPj4gMl0gPSBlW3IgKyA0MCA+PiAyXSwgZVtBICsgNDAgPj4gMl0gPSBlW3IgKyAzNiA+PiAyXSwgZiA9IGVbciArIDQ4ID4+IDJdLCBGW0EgKyAzNiB8IDBdID0gZVtmICsgMjQgPj4gMl0gPT0gMSwgZVtBICsgNjggPj4gMl0gPSAxIDw8IGVbZiArIDEyID4+IDJdLCBlW0EgKyA3MiA+PiAyXSA9IDEgPDwgZVtmICsgMTYgPj4gMl0sIGVbQSArIDYwID4+IDJdID0gZVtyID4+IDJdLCBlW0EgKyA2NCA+PiAyXSA9IGVbciArIDQgPj4gMl0sIGVbQSArIDUyID4+IDJdID0gZVtyICsgOCA+PiAyXSwgZVtBICsgNTYgPj4gMl0gPSBlW3IgKyAxMiA+PiAyXSwgZVtBICsgMzIgPj4gMl0gPSBlW2YgKyA4ID4+IDJdIC0gMSwgbCA9IEcyW0EgKyAyNiA+PiAxXSwgZiA9IEcyW0EgKyAyNCA+PiAxXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGsgPSBpICYgMzsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmICghaykgewogICAgICAgICAgICAgICAgICAgICAgciA9IGk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBpOyByID0gciAtIDEgfCAwLCBsID0gbCArIDEgPj4+IDEgfCAwLCBmID0gZiArIDEgPj4+IDEgfCAwLCBhID0gYSArIDEgfCAwLCAoayB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8IDQpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZm9yICg7IGwgPSAoKChsICsgMSA+Pj4gMSB8IDApICsgMSA+Pj4gMSB8IDApICsgMSA+Pj4gMSB8IDApICsgMSA+Pj4gMSB8IDAsIGYgPSAoKChmICsgMSA+Pj4gMSB8IDApICsgMSA+Pj4gMSB8IDApICsgMSA+Pj4gMSB8IDApICsgMSA+Pj4gMSB8IDAsIHIgPSByIC0gNCB8IDAsICEhcjsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGggPSBBICsgMTIgfCAwLCBwID0gSVtBICsgMjggfCAwXSArIDcgPj4+IDMgfCAwLCBpID0gWihwLCBaKElbQSArIDI5IHwgMF0sIFooZiwgbCkpKSwgYSA9IGVbQSArIDEyID4+IDJdLCByID0gZVtBICsgMTYgPj4gMl0gLSBhIHwgMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPiByID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgVGUoaCwgaSAtIHIgfCAwKTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAwID49IHIgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSBpICsgYTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICBmb3IgKHcgPSBmICYgLTIsIGMgPSBmICYgMSwgbSA9IGYgLSAxIHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICBhID0gSVtBICsgMjkgfCAwXSwgaSA9IFooZiwgRCksIHIgPSBaKGEsIFooaSwgcCkpOwogICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBlW2VbZVtvICsgMTYgPj4gMl0gKyAyNCA+PiAyXSArIDQ0ID4+IDJdICsgKGkgPDwgMikgfCAwLCBJW0EgKyAyOCB8IDBdIDw9IDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gciArIGVbaCA+PiAyXSB8IDAsIHIgPSAwLCBpID0gMCwgbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBuID0gZVthICsgKHIgPDwgMikgPj4gMl0sIG4gPSAobiB8IDApID49IDI1NSA/IDI1NSA6IG4sIEZbciArIGsgfCAwXSA9IChuIHwgMCkgPiAwID8gbiA6IDAsIHMgPSByIHwgMSwgbiA9IGVbYSArIChzIDw8IDIpID4+IDJdLCBuID0gKG4gfCAwKSA+PSAyNTUgPyAyNTUgOiBuLCBGW2sgKyBzIHwgMF0gPSAobiB8IDApID4gMCA/IG4gOiAwLCByID0gciArIDIgfCAwLCBpID0gaSArIDIgfCAwLCAodyB8IDApICE9IChpIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbYSArIChyIDw8IDIpID4+IDJdLCBpID0gKGkgfCAwKSA+PSAyNTUgPyAyNTUgOiBpLCBGW3IgKyBrIHwgMF0gPSAoaSB8IDApID4gMCA/IGkgOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSByICsgZVtBICsgMTIgPj4gMl0gfCAwLCBJW0EgKyAzMCB8IDBdID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gMCwgaSA9IDAsIG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbiA9IGVbYSArIChyIDw8IDIpID4+IDJdLCBuID0gKG4gfCAwKSA+PSAzMjc2NyA/IDMyNzY3IDogbiwgdTJbayArIChyIDw8IDEpID4+IDFdID0gKG4gfCAwKSA8PSAtMzI3NjggPyAtMzI3NjggOiBuLCBzID0gciB8IDEsIG4gPSBlW2EgKyAocyA8PCAyKSA+PiAyXSwgbiA9IChuIHwgMCkgPj0gMzI3NjcgPyAzMjc2NyA6IG4sIHUyW2sgKyAocyA8PCAxKSA+PiAxXSA9IChuIHwgMCkgPD0gLTMyNzY4ID8gLTMyNzY4IDogbiwgciA9IHIgKyAyIHwgMCwgaSA9IGkgKyAyIHwgMCwgKHcgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2EgKyAociA8PCAyKSA+PiAyXSwgaSA9IChpIHwgMCkgPj0gMzI3NjcgPyAzMjc2NyA6IGksIHUyW2sgKyAociA8PCAxKSA+PiAxXSA9IChpIHwgMCkgPD0gLTMyNzY4ID8gLTMyNzY4IDogaTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IDAsIGkgPSAwLCBtKQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBuID0gZVthICsgKHIgPDwgMikgPj4gMl0sIG4gPSAobiB8IDApID49IDY1NTM1ID8gNjU1MzUgOiBuLCB1MltrICsgKHIgPDwgMSkgPj4gMV0gPSAobiB8IDApID4gMCA/IG4gOiAwLCBzID0gciB8IDEsIG4gPSBlW2EgKyAocyA8PCAyKSA+PiAyXSwgbiA9IChuIHwgMCkgPj0gNjU1MzUgPyA2NTUzNSA6IG4sIHUyW2sgKyAocyA8PCAxKSA+PiAxXSA9IChuIHwgMCkgPiAwID8gbiA6IDAsIHIgPSByICsgMiB8IDAsIGkgPSBpICsgMiB8IDAsICh3IHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbYSArIChyIDw8IDIpID4+IDJdLCBpID0gKGkgfCAwKSA+PSA2NTUzNSA/IDY1NTM1IDogaSwgdTJbayArIChyIDw8IDEpID4+IDFdID0gKGkgfCAwKSA+IDAgPyBpIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChJW0EgKyAyOCB8IDBdIDw9IDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IHIgKyBlW2ggPj4gMl0gfCAwLCByID0gMDsgYSA9IG4gKyBaKHIsIDMpIHwgMCwgayA9IGkgKyByIDw8IDIsIEZbYSB8IDBdID0gZVtrICsgZVtlW2VbbyArIDE2ID4+IDJdICsgMjQgPj4gMl0gKyA0NCA+PiAyXSA+PiAyXSwgRlthICsgMSB8IDBdID0gZVtrICsgZVtlW2VbbyArIDE2ID4+IDJdICsgMjQgPj4gMl0gKyA5NiA+PiAyXSA+PiAyXSwgRlthICsgMiB8IDBdID0gZVtrICsgZVtlW2VbbyArIDE2ID4+IDJdICsgMjQgPj4gMl0gKyAxNDggPj4gMl0gPj4gMl0sIHIgPSByICsgMSB8IDAsIChmIHwgMCkgIT0gKHIgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gciArIGVbQSArIDEyID4+IDJdIHwgMCwgSVtBICsgMzAgfCAwXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBlW2VbbyArIDE2ID4+IDJdICsgMjQgPj4gMl0sIHMgPSBlW3IgKyAxNDggPj4gMl0sIHkgPSBlW3IgKyA5NiA+PiAyXSwgdiA9IGVbciArIDQ0ID4+IDJdLCByID0gMDsgayA9IGEgKyBaKHIsIDYpIHwgMCwgbiA9IGkgKyByIDw8IDIsIHUgPSBlW24gKyB2ID4+IDJdLCB1ID0gKHUgfCAwKSA+PSAzMjc2NyA/IDMyNzY3IDogdSwgdTJbayA+PiAxXSA9ICh1IHwgMCkgPD0gLTMyNzY4ID8gLTMyNzY4IDogdSwgdSA9IGVbbiArIHkgPj4gMl0sIHUgPSAodSB8IDApID49IDMyNzY3ID8gMzI3NjcgOiB1LCB1MltrICsgMiA+PiAxXSA9ICh1IHwgMCkgPD0gLTMyNzY4ID8gLTMyNzY4IDogdSwgdSA9IGssIGsgPSBlW24gKyBzID4+IDJdLCBrID0gKGsgfCAwKSA+PSAzMjc2NyA/IDMyNzY3IDogaywgdTJbdSArIDQgPj4gMV0gPSAoayB8IDApIDw9IC0zMjc2OCA/IC0zMjc2OCA6IGssIHIgPSByICsgMSB8IDAsIChmIHwgMCkgIT0gKHIgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IGVbZVtvICsgMTYgPj4gMl0gKyAyNCA+PiAyXSwgcyA9IGVbciArIDE0OCA+PiAyXSwgeSA9IGVbciArIDk2ID4+IDJdLCB2ID0gZVtyICsgNDQgPj4gMl0sIHIgPSAwOyBrID0gYSArIFoociwgNikgfCAwLCBuID0gaSArIHIgPDwgMiwgdSA9IGVbbiArIHYgPj4gMl0sIHUgPSAodSB8IDApID49IDY1NTM1ID8gNjU1MzUgOiB1LCB1MltrID4+IDFdID0gKHUgfCAwKSA+IDAgPyB1IDogMCwgdSA9IGVbbiArIHkgPj4gMl0sIHUgPSAodSB8IDApID49IDY1NTM1ID8gNjU1MzUgOiB1LCB1MltrICsgMiA+PiAxXSA9ICh1IHwgMCkgPiAwID8gdSA6IDAsIHUgPSBrLCBrID0gZVtuICsgcyA+PiAyXSwgayA9IChrIHwgMCkgPj0gNjU1MzUgPyA2NTUzNSA6IGssIHUyW3UgKyA0ID4+IDFdID0gKGsgfCAwKSA+IDAgPyBrIDogMCwgciA9IHIgKyAxIHwgMCwgKGYgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKEQgPSBEICsgMSB8IDAsIChEIHwgMCkgPT0gKGwgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtaShnKSwgS2UodCksIHkxKGVbbyArIDE2ID4+IDJdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgWCA9IG8gKyA4MjcyIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBDZShBLCBpLCByLCBmLCBrLCB0LCBuLCBsLCBhLCB1LCBvKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBrID0gayB8IDAsIHQgPSB0IHwgMCwgbiA9IG4gfCAwLCBsID0gbCB8IDAsIGEgPSBhIHwgMCwgdSA9IHUgfCAwLCBvID0gbyB8IDA7CiAgICAgICAgICAgICAgdmFyIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSBXKDApLCBFID0gMCwgRCA9IDAsIFUgPSAwLCBQID0gMCwgeCA9IDAsIHogPSAwLCBqID0gMDsKICAgICAgICAgICAgICBCID0gWCAtIDgwIHwgMCwgWCA9IEIsIGVbQiArIDQwID4+IDJdID0gNjU0MjQsIG0gPSBaKGVbQSArIDEwOCA+PiAyXSwgZVtBICsgMTA0ID4+IDJdKTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBoID0gZVtBICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSAhPSA4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gMCwgKGggfCAwKSAhPSAyNTYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgZVtCICsgNDAgPj4gMl0gPSA2NTQ5NzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChGW0EgKyA2OCB8IDBdICYgMSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIFUgPSBtICYgLTIsIFAgPSBtICYgMSwgeCA9IEIgKyA3NyB8IDAsIHogPSBCICsgNzYgfCAwLCBqID0gQiArIDcyIHwgMCwgcyA9IDY1NDI0OwogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHMgfCAwKSA9PSA2NTQyNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZVt1ICsgMTIgPj4gMl0sIHcgPSBnLCBoID0gZVt1ICsgOCA+PiAyXSwgZyB8IGggPyAocyA9IGVbdSArIDU2ID4+IDJdLCBnID0gaCAtIHMgfCAwLCBoID0gdyAtIChlW3UgKyA2MCA+PiAyXSArIChoID4+PiAwIDwgcyA+Pj4gMCkgfCAwKSB8IDApIDogKGcgPSAwLCBoID0gMCksICEoZyB8IGgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgOCA+PiAyXSA9IDY0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpMSh1LCBlW0EgKyAxNiA+PiAyXSwgMiwgbykgfCAwKSAhPSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShvLCAxLCA0MzUyLCAwKSwgdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaDIoZVtBICsgMTYgPj4gMl0sIEIgKyAzNiB8IDAsIDIpLCBzID0gZVtCICsgMzYgPj4gMl0sIHMgPj4+IDAgPD0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEobywgMSwgOTk4OSwgMCksIHUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0IgKyA0MCA+PiAyXSA9PSAzMjg5NikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBlW3UgKyAxMiA+PiAyXSwgdyA9IGcsIGggPSBlW3UgKyA4ID4+IDJdLCBnIHwgaCA/IChzID0gZVt1ICsgNTYgPj4gMl0sIGcgPSBoIC0gcyB8IDAsIGggPSB3IC0gKGVbdSArIDYwID4+IDJdICsgKGggPj4+IDAgPCBzID4+PiAwKSB8IDApIHwgMCkgOiAoZyA9IDAsIGggPSAwKSwgIShnIHwgaCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZVtCICsgMzYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaCA9IGVbQSArIDggPj4gMl0sIGggJiAxNiAmJiAoZVtBICsgMjQgPj4gMl0gPSAoZVtBICsgMjQgPj4gMl0gLSBzIHwgMCkgLSAyKSwgdyA9IHMgLSAyIHwgMCwgZVtCICsgMzYgPj4gMl0gPSB3LCBnID0gMzEzNDQsIGMgPSBlW0IgKyA0MCA+PiAyXTsgcyA9IGcsIHYgPSBlW2cgPj4gMl0sICEhKHYgJiYgKGcgPSBnICsgMTIgfCAwLCAoYyB8IDApICE9ICh2IHwgMCkpKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGggJiBlW3MgKyA0ID4+IDJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShvLCAxLCA4ODk4LCAwKSwgdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFtBICsgMjAgPj4gMl0gPj0gdyA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZVtBICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbdSArIDEyID4+IDJdLCBjID0gaCwgZyA9IGVbdSArIDggPj4gMl0sIGggfCBnID8gKEMgPSBlW3UgKyA1NiA+PiAyXSwgaCA9IGcgLSBDIHwgMCwgZyA9IGMgLSAoZVt1ICsgNjAgPj4gMl0gKyAoZyA+Pj4gMCA8IEMgPj4+IDApIHwgMCkgfCAwKSA6IChoID0gMCwgZyA9IDApLCAoZyB8IDApIDwgMCA/IGcgPSAxIDogZyA9IGggPj4+IDAgPCB3ID4+PiAwICYgKGcgfCAwKSA8PSAwLCBnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEobywgMSwgOTMxMywgMCksIHUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBvMChlW0EgKyAxNiA+PiAyXSwgZVtCICsgMzYgPj4gMl0pLCAhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGVbQSArIDE2ID4+IDJdKSwgZVtBICsgMTYgPj4gMl0gPSAwLCBlW0EgKyAyMCA+PiAyXSA9IDAsIFEobywgMSwgODQ3NCwgMCksIHUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSBnLCB3ID0gZVtCICsgMzYgPj4gMl0sIGVbQSArIDIwID4+IDJdID0gdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBpMSh1LCBnLCB3LCBvKSwgKGggfCAwKSAhPSBlW0IgKyAzNiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShvLCAxLCA0MzUyLCAwKSwgdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IGVbcyArIDggPj4gMl0sICFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKG8sIDEsIDIyNzg0LCAwKSwgdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShvMltnIHwgMF0oQSwgZVtBICsgMTYgPj4gMl0sIGgsIG8pIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQiArIDMyID4+IDJdID0gZVtCICsgNDAgPj4gMl0sIFEobywgMSwgMjUzMTQsIEIgKyAzMiB8IDApLCB1ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZVt1ICsgNTYgPj4gMl0sIEMgPSBlW0IgKyAzNiA+PiAyXSwgSCA9IGVbQSArIDIwMCA+PiAyXSwgdyA9IGVbSCArIDQwID4+IDJdLCBFID0gZVtBICsgMjA0ID4+IDJdLCB5ID0gWihFLCA0MCksIGggPSB3ICsgeSB8IDAsIHMgPSBlW2ggKyAyMCA+PiAyXSwgYyA9IHMgKyAxIHwgMCwgcCA9IGVbaCArIDI4ID4+IDJdLCBjID4+PiAwID4gcCA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSiA9IFcoVyhwID4+PiAwKSArIFcoMTAwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKIDwgVyg0Mjk0OTY3Mjk2KSAmIEogPj0gVygwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB+fkogPj4+IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2ggKyAyOCA+PiAyXSA9IHcsIHMgPSBvMChlW2ggKyAyNCA+PiAyXSwgWih3LCAyNCkpLCB3ID0gZVtIICsgNDAgPj4gMl0sIGggPSB5ICsgdyB8IDAsICFzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtoICsgMjQgPj4gMl0gPSBzLCBzID0gZVtoICsgMjAgPj4gMl0sIGMgPSBzICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB3ICsgeSB8IDAsIGggPSBlW3cgKyAyNCA+PiAyXSArIFoocywgMjQpIHwgMCwgZVtoICsgMTYgPj4gMl0gPSBDICsgNCwgZyA9IChnIC0gQyB8IDApIC0gNCB8IDAsIGVbaCArIDggPj4gMl0gPSBnLCBlW2ggKyAxMiA+PiAyXSA9IGcgPj4gMzEsIHUyW2ggPj4gMV0gPSB2LCBlW3cgKyAyMCA+PiAyXSA9IGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2IHwgMCkgIT0gNjU0MjQgfHwgKGggPSBlW3cgKyAxNiA+PiAyXSwgaCAmJiAoaCA9IGggKyBaKGVbdyArIDEyID4+IDJdLCAyNCkgfCAwLCBlW2ggPj4gMl0gPSBnLCBlW2ggKyA0ID4+IDJdID0gMCksIGggPSAoZVt1ICsgNTYgPj4gMl0gLSBlW0IgKyAzNiA+PiAyXSB8IDApIC0gNCB8IDAsIGcgPSBlW0EgKyA0OCA+PiAyXSwgdyA9IGVbQSArIDUyID4+IDJdLCAodyB8IDApID4gMCA/IGcgPSAxIDogZyA9ICh3IHwgMCkgPj0gMCAmIGcgPj4+IDAgPj0gaCA+Pj4gMCwgZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyA0OCA+PiAyXSA9IGgsIGVbQSArIDUyID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElbQSArIDY4IHwgMF0gJiA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG8yW2VbdSArIDQwID4+IDJdXSh1LCBlW0EgKyAyNCA+PiAyXSwgMCwgbykgfCAwKSAhPSBlW0EgKyAyNCA+PiAyXSB8IHEyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEobywgMSwgNDM1MiwgMCksIHUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtCICsgNDAgPj4gMl0gPSA2NTQyNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaTEodSwgZVtBICsgMTYgPj4gMl0sIDIsIG8pIHwgMCkgIT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShvLCAxLCA0MzUyLCAwKSwgdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaDIoZVtBICsgMTYgPj4gMl0sIEIgKyA0MCB8IDAsIDIpLCBlW0IgKyA0MCA+PiAyXSAhPSA2NTQyNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyA4ID4+IDJdID0gNjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSKGVbaCArIDI0ID4+IDJdKSwgQSA9IGVbSCArIDQwID4+IDJdICsgWihFLCA0MCkgfCAwLCBlW0EgKyAyOCA+PiAyXSA9IDAsIGVbQSArIDIwID4+IDJdID0gMCwgZVtBICsgMjQgPj4gMl0gPSAwLCBRKG8sIDEsIDYzNzQsIDApLCB1ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBlW3UgKyAxMiA+PiAyXSwgdyA9IGcsIGggPSBlW3UgKyA4ID4+IDJdLCBnIHwgaCA/IChzID0gZVt1ICsgNTYgPj4gMl0sIGcgPSBoIC0gcyB8IDAsIGggPSB3IC0gKGVbdSArIDYwID4+IDJdICsgKGggPj4+IDAgPCBzID4+PiAwKSB8IDApIHwgMCkgOiAoZyA9IDAsIGggPSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGcgfCBoKSAmIGVbQSArIDggPj4gMl0gPT0gNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBJW0EgKyA2OCB8IDBdLCAhKGggJiA0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBaKGVbQSArIDIwNCA+PiAyXSwgNTY0NCksIHcgPSBlW0EgKyAxNTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgNTYgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZVt1ICsgOCA+PiAyXSwgaCB8IGVbdSArIDEyID4+IDJdID8gaCA9IGggLSBlW3UgKyA1NiA+PiAyXSB8IDAgOiBoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtBICsgMjQgPj4gMl0sIGggPj4+IDAgPCAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaCAtIDIgfCAwLCBlW0EgKyAyNCA+PiAyXSA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDID0gZyArIHcgfCAwLCAhaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBlW3UgKyAxMiA+PiAyXSwgcyA9IGcsIHcgPSBlW3UgKyA4ID4+IDJdLCBnIHwgdyA/IChjID0gZVt1ICsgNTYgPj4gMl0sIGcgPSB3IC0gYyB8IDAsIHcgPSBzIC0gKGVbdSArIDYwID4+IDJdICsgKHcgPj4+IDAgPCBjID4+PiAwKSB8IDApIHwgMCkgOiAoZyA9IDAsIHcgPSAwKSwgKHcgfCAwKSA8IDAgPyBnID0gMSA6IGcgPSBnID4+PiAwIDwgaCA+Pj4gMCAmICh3IHwgMCkgPD0gMCwgZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDE4NCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKG8sIDEsIDkzNTgsIDApLCB1ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEobywgMiwgOTM1OCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZVtBICsgMjQgPj4gMl0sIGcgPj4+IDAgPj0gNDI5NDk2NzI5NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShvLCAxLCAyNDM3LCAwKSwgdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gZVtDICsgNTU5NiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IGVbQyArIDU2MDAgPj4gMl0sIHMgPj4+IDAgPiAtMyAtIGcgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKG8sIDEsIDE4MzcsIDApLCB1ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gbzAodywgKGcgKyBzIHwgMCkgKyAyIHwgMCksIGcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0MgKyA1NTk2ID4+IDJdID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIoZVtDICsgNTU5NiA+PiAyXSksIGVbQyArIDU1OTYgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBVMihnICsgMiB8IDApLCBlW0MgKyA1NTk2ID4+IDJdID0gZywgZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShvLCAxLCAxMDEzNywgMCksIHUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgOCA+PiAyXSA9IDgsIEZbQSArIDY4IHwgMF0gPSBoICYgMjUwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEggPSBlW0EgKyAyMDAgPj4gMl0sIEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGVbdSArIDU2ID4+IDJdLCB2ID0geSAtIDIgfCAwLCBzID0gZVt1ICsgNjAgPj4gMl0sIHAgPSBzIC0gKHkgPj4+IDAgPCAyKSB8IDAsIHcgPSBlW0ggKyA0MCA+PiAyXSwgRCA9IGVbQSArIDIwNCA+PiAyXSwgRSA9IFooRCwgNDApLCBnID0gdyArIEUgfCAwLCBjID0gZVtnICsgMTYgPj4gMl0gKyBaKGVbZyArIDEyID4+IDJdLCAyNCkgfCAwLCBlW2MgKyA4ID4+IDJdID0gdiwgZVtjICsgMTIgPj4gMl0gPSBwLCBwID0gZVtBICsgMjQgPj4gMl0sIHkgPSBwICsgeSB8IDAsIGVbYyArIDE2ID4+IDJdID0geSwgZVtjICsgMjAgPj4gMl0gPSB5ID4+PiAwIDwgcCA+Pj4gMCA/IHMgKyAxIHwgMCA6IHMsIHkgPSBlW0EgKyAyNCA+PiAyXSwgcyA9IGVbZyArIDIwID4+IDJdLCBjID0gcyArIDEgfCAwLCBwID0gZVtnICsgMjggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+Pj4gMCA8PSBwID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZVtnICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKID0gVyhXKHAgPj4+IDApICsgVygxMDApKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSiA8IFcoNDI5NDk2NzI5NikgJiBKID49IFcoMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IH5+SiA+Pj4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtnICsgMjggPj4gMl0gPSB3LCBnID0gbzAoZVtnICsgMjQgPj4gMl0sIFoodywgMjQpKSwgdyA9IGVbSCArIDQwID4+IDJdLCBzID0gRSArIHcgfCAwLCAhZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtzICsgMjQgPj4gMl0gPSBnLCBzID0gZVtzICsgMjAgPj4gMl0sIGMgPSBzICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IFoocywgMjQpICsgZyB8IDAsIGVbZyArIDE2ID4+IDJdID0geSArIDIsIGVbZyArIDggPj4gMl0gPSB2LCBlW2cgKyAxMiA+PiAyXSA9IHYgPj4gMzEsIHUyW2cgPj4gMV0gPSA2NTQyNywgZVsodyArIEUgfCAwKSArIDIwID4+IDJdID0gYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBlW0EgKyAyNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaTEodSwgZVtDICsgNTU5NiA+PiAyXSArIGVbQyArIDU2MDAgPj4gMl0gfCAwLCBnLCBvKSwgZyA9IGVbQSArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gPSAoZyB8IDApID09IChoIHwgMCkgPyA4IDogNjQsIGVbQyArIDU2MDAgPj4gMl0gPSBlW0MgKyA1NjAwID4+IDJdICsgaCwgaCA9IElbQSArIDY4IHwgMF0sIChoICYgOSkgIT0gMSB8fCAoRltBICsgNjggfCAwXSA9IGggfCA4LCBlW3UgKyAyOCA+PiAyXSA9PSA5OSkgfHwgKGcgPSBlW3UgKyA2MCA+PiAyXSwgYyA9IGcsIHcgPSBlW3UgKyA1NiA+PiAyXSwgKGcgJiB3KSA9PSAtMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gZVtBICsgMjA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IDEsIHMgPSBCICsgNzAgfCAwLCAoaTEodSwgcywgMiwgbykgfCAwKSAhPSAyIHx8IChoMihzLCBCIC0gLTY0IHwgMCwgMiksIGVbQiArIDY0ID4+IDJdICE9IDY1NDI0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSA0MzUyLCAoaTEodSwgcywgMiwgbykgfCAwKSAhPSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaDIocywgQiArIDYwIHwgMCwgMiksIGVbQiArIDYwID4+IDJdICE9IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gOTk4OTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0IgKyA2MCA+PiAyXSA9IDgsIHMgPSBpMSh1LCBCICsgNzAgfCAwLCA4LCBvKSwgKHMgfCAwKSAhPSBlW0IgKyA2MCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzIHwgMCkgIT0gOCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDY1OTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaDIoQiArIDcwIHwgMCwgQiArIDU2IHwgMCwgMiksIGgyKGosIEIgKyA1MiB8IDAsIDQpLCBoMih6LCBCICsgNDggfCAwLCAxKSwgaDIoeCwgQiArIDQ0IHwgMCwgMSksICh2IHwgMCkgIT0gZVtCICsgNTYgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtCICsgNTIgPj4gMl0sIGggPj4+IDAgPCAxNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gaCAtIDEyIHwgMCwgZVtCICsgNTIgPj4gMl0gPSBoLCBoID0gbzJbZVt1ICsgNDAgPj4gMl1dKHUsIGgsIDAsIG8pIHwgMCwgIXEyICYgZVtCICsgNTIgPj4gMl0gPT0gKGggfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZVtCICsgNDggPj4gMl0gIT0gZVtCICsgNDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShvMltlW3UgKyA0NCA+PiAyXV0odSwgdywgYywgbykgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltBICsgNjggfCAwXSA9IElbQSArIDY4IHwgMF0gJiAyMzggfCAxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtBICsgMTU2ID4+IDJdLCBzID0gMCwgZyA9IDAsIChtIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdyA9IGggKyBaKHMsIDU2NDQpIHwgMCwgYyA9IGVbdyArIDU1OTIgPj4gMl0sIGMgJiYgKGVbdyArIDU1OTIgPj4gMl0gPSBjICsgMSksIHcgPSBoICsgWihzIHwgMSwgNTY0NCkgfCAwLCBjID0gZVt3ICsgNTU5MiA+PiAyXSwgYyAmJiAoZVt3ICsgNTU5MiA+PiAyXSA9IGMgKyAxKSwgcyA9IHMgKyAyIHwgMCwgZyA9IGcgKyAyIHwgMCwgKFUgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUCB8fCAoaCA9IGggKyBaKHMsIDU2NDQpIHwgMCwgZyA9IGVbaCArIDU1OTIgPj4gMl0sICFnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2ggKyA1NTkyID4+IDJdID0gZyArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKG8sIDIsIDE5MzIwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZbQSArIDY4IHwgMF0gJiAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkxKHUsIGVbQSArIDE2ID4+IDJdLCAyLCBvKSB8IDApICE9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCFtIHwgKG0gfCAwKSAhPSAoZVtBICsgMjA0ID4+IDJdICsgMSB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gZVtBICsgMTU2ID4+IDJdLCBzID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IHUgKyBaKHMsIDU2NDQpIHwgMCwgIShlW2ggKyA1NTg4ID4+IDJdIHwgZVtoICsgNTU5MiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gcyArIDEgfCAwLCAobSB8IDApID09IChzIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShvLCAxLCA0MzUyLCAwKSwgdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaDIoZVtBICsgMTYgPj4gMl0sIEIgKyA0MCB8IDAsIDIpLCBzID0gZVtCICsgNDAgPj4gMl0sIEZbQSArIDY4IHwgMF0gJiAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHMgfCAwKSAhPSA2NTQ5NykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZVtCICsgNDAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyA4ID4+IDJdID09IDI1NiB8IChzIHwgMCkgIT0gNjU0OTcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSAyNTYsIGVbQSArIDIwNCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBSKGVbcyArIDI0ID4+IDJdKSwgQSA9IGVbSCArIDQwID4+IDJdICsgWihELCA0MCkgfCAwLCBlW0EgKyAyOCA+PiAyXSA9IDAsIGVbQSArIDIwID4+IDJdID0gMCwgZVtBICsgMjQgPj4gMl0gPSAwLCBRKG8sIDEsIDYzNzQsIDApLCB1ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbQiArIDE2ID4+IDJdID0gcywgUShvLCA0LCAyMTYzNywgQiArIDE2IHwgMCksIGVbQSArIDIwNCA+PiAyXSA9IHMsIGVbQiArIDQwID4+IDJdID0gNjU0OTcsIGVbQSArIDggPj4gMl0gPSAyNTY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHMgPSBlW0EgKyAyMDQgPj4gMl0sIHUgPSBlW0EgKyAxNTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoRltBICsgNjggfCAwXSAmIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4+PiAwID49IG0gPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGggPSB1ICsgWihzLCA1NjQ0KSB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2ggKyA1NTk2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gcyArIDEgfCAwLCBlW0EgKyAyMDQgPj4gMl0gPSBzLCBoID0gaCArIDU2NDQgfCAwLCAocyB8IDApID09IChtIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHMgfCAwKSAhPSAobSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW2EgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSB1ICsgWihzLCA1NjQ0KSB8IDAsIGVbZyArIDUxNzIgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gMTY0NDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShJW2cgKyA1NjQwIHwgMF0gJiAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlW2cgKyA1MTYwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtID0gZVtnICsgNTE2NCA+PiAyXSwgdSA9IDAsIGggPSAwLCBzID0gMCwgYyA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQyA9IGMgJiAtNCwgdyA9IDA7IHYgPSBtICsgKHMgPDwgMykgfCAwLCBoID0gZVt2ICsgMjggPj4gMl0gKyAoZVt2ICsgMjAgPj4gMl0gKyAoZVt2ICsgMTIgPj4gMl0gKyAoZVt2ICsgNCA+PiAyXSArIGggfCAwKSB8IDApIHwgMCkgfCAwLCBzID0gcyArIDQgfCAwLCB3ID0gdyArIDQgfCAwLCAoQyB8IDApICE9ICh3IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSBjICYgMywgIXcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGggPSBlWyhtICsgKHMgPDwgMykgfCAwKSArIDQgPj4gMl0gKyBoIHwgMCwgcyA9IHMgKyAxIHwgMCwgdSA9IHUgKyAxIHwgMCwgKHcgfCAwKSAhPSAodSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBVMihoKSwgZVtnICsgNTE3MiA+PiAyXSA9IHUsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gNjU1ODsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgUShvLCAxLCBBLCAwKSwgUShvLCAxLCAxODA3NSwgMCksIHUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbZyArIDUxODAgPj4gMl0gPSBoLCB1ID0gZVtnICsgNTE2NCA+PiAyXSwgdyA9IGVbZyArIDUxNjAgPj4gMl0sIHcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gMCwgcyA9IDA7IGMgPSBzIDw8IDMsIHYgPSBjICsgdSB8IDAsIG0gPSBlW3YgPj4gMl0sIG0gJiYgKEYyKGVbZyArIDUxNzIgPj4gMl0gKyBoIHwgMCwgbSwgZVt2ICsgNCA+PiAyXSksIHUgPSBjICsgZVtnICsgNTE2NCA+PiAyXSB8IDAsIHcgPSBlW3UgKyA0ID4+IDJdLCBSKGVbdSA+PiAyXSksIHUgPSBlW2cgKyA1MTY0ID4+IDJdLCBjID0gYyArIHUgfCAwLCBlW2MgPj4gMl0gPSAwLCBlW2MgKyA0ID4+IDJdID0gMCwgaCA9IGggKyB3IHwgMCwgdyA9IGVbZyArIDUxNjAgPj4gMl0pLCBzID0gcyArIDEgfCAwLCB3ID4+PiAwID4gcyA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBlW2cgKyA1MTYwID4+IDJdID0gMCwgUih1KSwgZVtnICsgNTE2NCA+PiAyXSA9IDAsIGVbZyArIDUxNjggPj4gMl0gPSBlW2cgKyA1MTcyID4+IDJdLCBlW2cgKyA1MTc2ID4+IDJdID0gZVtnICsgNTE4MCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghQXIoZVtBICsgMjA4ID4+IDJdLCBlW0EgKyAyMDQgPj4gMl0sIDAsIDY0LCBvKSkgewogICAgICAgICAgICAgICAgICAgICAgICBRKG8sIDEsIDYxNzksIDApLCB1ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gZVtBICsgMjA0ID4+IDJdLCBlW0IgKyA0ID4+IDJdID0gWihlW0EgKyAxMDQgPj4gMl0sIGVbQSArIDEwOCA+PiAyXSksIGVbQiA+PiAyXSA9IHUgKyAxLCBRKG8sIDQsIDIyOTYyLCBCKSwgZVtpID4+IDJdID0gZVtBICsgMjA0ID4+IDJdLCBlW2EgPj4gMl0gPSAxLCByICYmIChpID0gZDQoZVtBICsgMjA4ID4+IDJdLCAwKSwgZVtyID4+IDJdID0gaSwgdSA9IDAsIChpIHwgMCkgPT0gLTEpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgaSA9IGVbZVtlW0EgKyAyMDggPj4gMl0gKyAyMCA+PiAyXSA+PiAyXSwgZVtmID4+IDJdID0gZVtpID4+IDJdLCBlW2sgPj4gMl0gPSBlW2kgKyA0ID4+IDJdLCBlW3QgPj4gMl0gPSBlW2kgKyA4ID4+IDJdLCBlW24gPj4gMl0gPSBlW2kgKyAxMiA+PiAyXSwgZVtsID4+IDJdID0gZVtpICsgMTYgPj4gMl0sIGVbQSArIDggPj4gMl0gPSBlW0EgKyA4ID4+IDJdIHwgMTI4OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB1ID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIFEobywgMSwgaCwgMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBRKG8sIDEsIDYyMTMsIDApLCB1ID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBCICsgODAgfCAwLCB1IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBhZShBLCBpLCByLCBmLCBrLCB0LCBuLCBsLCBhKSB7CiAgICAgICAgICAgICAgdmFyIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMCwgeSA9IDAsIHAgPSAwLCBIID0gMCwgSiA9IDAsIEUgPSAwLCBEID0gMCwgVSA9IDAsIFAgPSAwLCB4ID0gMCwgeiA9IDAsIGogPSAwLCBPID0gMCwgcSA9IDAsIGYyID0gMCwgbjIgPSAwLCBnMiA9IDA7CiAgICAgICAgICAgICAgdSA9IGVbQSA+PiAyXTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAodSA+Pj4gMCA8IGYgPj4+IDAgfCBpID4+PiAwID49IGYgPj4+IDAgfCBpID4+PiAwID49IHUgPj4+IDAgfHwgKHUgPSBlW0EgKyA0ID4+IDJdLCB1ID4+PiAwIDwgayA+Pj4gMCB8IHIgPj4+IDAgPj0gayA+Pj4gMCB8IHIgPj4+IDAgPj0gdSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKHggPSAociA+Pj4gMCkgLyBkW0EgKyAxMiA+PiAyXSB8IDAsIHYgPSBlW0EgKyA4ID4+IDJdLCBqID0gKGkgPj4+IDApIC8gKHYgPj4+IDApIHwgMCwgZjIgPSAoWih2LCBqKSAtIGkgfCAwKSArIHYgfCAwLCBEID0gcjsgOyApIHsKICAgICAgICAgICAgICAgICAgZm9yICh1ID0gZVtBICsgMTIgPj4gMl0sIG8gPSAociB8IDApID09IChEIHwgMCkgPyB1IC0gKChyID4+PiAwKSAlICh1ID4+PiAwKSB8IDApIHwgMCA6IHUsIGcgPSBrIC0gRCB8IDAsIGMgPSBvID4+PiAwIDwgZyA+Pj4gMCA/IG8gOiBnLCBVID0gYyAmIC00LCB5ID0gYyAmIDMsIG4yID0gYyAmIC04LCBPID0gYyAmIDcsIEUgPSBjIC0gMSB8IDAsIGcyID0gKG4gfCAwKSA9PSAyICYgKGMgfCAwKSA9PSAxLCBxID0gWih1IC0gbyB8IDAsIHYpLCBQID0gKFooRCAtIHIgfCAwLCBsKSA8PCAyKSArIHQgfCAwLCB6ID0gaiwgSCA9IGk7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgdSA9IChpIHwgMCkgPT0gKEggfCAwKSA/IGYyIDogdiwgZyA9IGYgLSBIIHwgMCwgQiA9IHUgPj4+IDAgPCBnID4+PiAwID8gdSA6IGcsIHUgPSB2IC0gdSB8IDAsIGcgPSB6IDw8IDIsIG8gPSBlW2cgKyAoZVtBICsgMjQgPj4gMl0gKyAoWihlW0EgKyAxNiA+PiAyXSwgeCkgPDwgMikgfCAwKSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSAoKHEgPDwgMikgKyBvIHwgMCkgKyAodSA8PCAyKSB8IDAsIHUgPSBIIC0gaSB8IDAsIChuIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IChaKG4sIHUpIDw8IDIpICsgUCB8IDAsIChCIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZzIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgIT0gOCB8IEIgPj4+IDAgPD0gNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gQiAmIC00LCBzID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IDAsIEMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVsodSA8PCA1KSArIGggPj4gMl0gPSBlWyh1IDw8IDIpICsgbyA+PiAyXSwgZyA9IHUgfCAxLCBlWyhnIDw8IDUpICsgaCA+PiAyXSA9IGVbKGcgPDwgMikgKyBvID4+IDJdLCBnID0gdSB8IDIsIGVbKGcgPDwgNSkgKyBoID4+IDJdID0gZVsoZyA8PCAyKSArIG8gPj4gMl0sIGcgPSB1IHwgMywgZVsoZyA8PCA1KSArIGggPj4gMl0gPSBlWyhnIDw8IDIpICsgbyA+PiAyXSwgdSA9IHUgKyA0IHwgMCwgQyA+Pj4gMCA+IHUgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID4+PiAwID49IEIgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IDAsIGcgPSB1LCBtID0gQiAtIHUgJiAzLCBtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVsoZyA8PCA1KSArIGggPj4gMl0gPSBlWyhnIDw8IDIpICsgbyA+PiAyXSwgZyA9IGcgKyAxIHwgMCwgdyA9IHcgKyAxIHwgMCwgKG0gfCAwKSAhPSAodyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgLSBCID4+PiAwID4gNDI5NDk2NzI5MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyhnIDw8IDUpICsgaCA+PiAyXSA9IGVbKGcgPDwgMikgKyBvID4+IDJdLCB1ID0gZyArIDEgfCAwLCBlWyh1IDw8IDUpICsgaCA+PiAyXSA9IGVbKHUgPDwgMikgKyBvID4+IDJdLCB1ID0gZyArIDIgfCAwLCBlWyh1IDw8IDUpICsgaCA+PiAyXSA9IGVbKHUgPDwgMikgKyBvID4+IDJdLCB1ID0gZyArIDMgfCAwLCBlWyh1IDw8IDUpICsgaCA+PiAyXSA9IGVbKHUgPDwgMikgKyBvID4+IDJdLCBnID0gZyArIDQgfCAwLCAoQiB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9ICh2IDw8IDIpICsgbyB8IDAsIGggPSAobCA8PCAyKSArIGggfCAwLCBzID0gcyArIDEgfCAwLCAoYyB8IDApID09IChzIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgIT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gQiAmIC00LCBzID0gQiAmIDMsIGggPSAoWihIIC0gaSB8IDAsIG4pIDw8IDIpICsgUCB8IDAsIHcgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gMCwgbyA9IDAsIGcgPSAwLCBCID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyhaKG4sIG8pIDw8IDIpICsgaCA+PiAyXSA9IDAsIGVbKFoobyB8IDEsIG4pIDw8IDIpICsgaCA+PiAyXSA9IDAsIGVbKFoobyB8IDIsIG4pIDw8IDIpICsgaCA+PiAyXSA9IDAsIGVbKFoobyB8IDMsIG4pIDw8IDIpICsgaCA+PiAyXSA9IDAsIG8gPSBvICsgNCB8IDAsIGcgPSBnICsgNCB8IDAsIChDIHwgMCkgIT0gKGcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyhaKG4sIG8pIDw8IDIpICsgaCA+PiAyXSA9IDAsIG8gPSBvICsgMSB8IDAsIHUgPSB1ICsgMSB8IDAsIChzIHwgMCkgIT0gKHUgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gKGwgPDwgMikgKyBoIHwgMCwgdyA9IHcgKyAxIHwgMCwgKHcgfCAwKSA9PSAoYyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gQiA8PCAyLCBoID0gKEggLSBpIDw8IDIpICsgUCB8IDAsIHUgPSAwLCBFID4+PiAwID49IDcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBvID0gbCA8PCAyLCBoID0gZDIoZDIoZDIoZDIoZDIoZDIoZDIoZDIoaCwgMCwgZykgKyBvIHwgMCwgMCwgZykgKyBvIHwgMCwgMCwgZykgKyBvIHwgMCwgMCwgZykgKyBvIHwgMCwgMCwgZykgKyBvIHwgMCwgMCwgZykgKyBvIHwgMCwgMCwgZykgKyBvIHwgMCwgMCwgZykgKyBvIHwgMCwgdSA9IHUgKyA4IHwgMCwgKG4yIHwgMCkgIT0gKHUgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gMCwgIU8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgaCA9IGQyKGgsIDAsIGcpICsgKGwgPDwgMikgfCAwLCB1ID0gdSArIDEgfCAwLCAoTyB8IDApICE9ICh1IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gQiAmIC00LCBDID0gQiAmIDMsIHcgPSAwLCBwID0gQiAtIDEgPj4+IDAgPCAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSAwLCBnID0gQiAmIC00LCBnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyh1IDw8IDMpICsgaCA+PiAyXSA9IGVbKHUgPDwgMikgKyBvID4+IDJdLCBzID0gdSB8IDEsIGVbKHMgPDwgMykgKyBoID4+IDJdID0gZVsocyA8PCAyKSArIG8gPj4gMl0sIHMgPSB1IHwgMiwgZVsocyA8PCAzKSArIGggPj4gMl0gPSBlWyhzIDw8IDIpICsgbyA+PiAyXSwgcyA9IHUgfCAzLCBlWyhzIDw8IDMpICsgaCA+PiAyXSA9IGVbKHMgPDwgMikgKyBvID4+IDJdLCB1ID0gdSArIDQgfCAwLCBnID4+PiAwID4gdSA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA+Pj4gMCA+PSBCID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gMCwgZyA9IHUsIHcgPSBCIC0gdSAmIDMsIHcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbKGcgPDwgMykgKyBoID4+IDJdID0gZVsoZyA8PCAyKSArIG8gPj4gMl0sIGcgPSBnICsgMSB8IDAsIHMgPSBzICsgMSB8IDAsICh3IHwgMCkgIT0gKHMgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSAtIEIgPj4+IDAgPiA0Mjk0OTY3MjkyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyhnIDw8IDMpICsgaCA+PiAyXSA9IGVbKGcgPDwgMikgKyBvID4+IDJdLCB1ID0gZyArIDEgfCAwLCBlWyh1IDw8IDMpICsgaCA+PiAyXSA9IGVbKHUgPDwgMikgKyBvID4+IDJdLCB1ID0gZyArIDIgfCAwLCBlWyh1IDw8IDMpICsgaCA+PiAyXSA9IGVbKHUgPDwgMikgKyBvID4+IDJdLCB1ID0gZyArIDMgfCAwLCBlWyh1IDw8IDMpICsgaCA+PiAyXSA9IGVbKHUgPDwgMikgKyBvID4+IDJdLCBnID0gZyArIDQgfCAwLCAoQiB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IDAsIEUgPj4+IDAgPj0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbaCA+PiAyXSA9IGVbbyA+PiAyXSwgdSA9IGwgPDwgMiwgaCA9IHUgKyBoIHwgMCwgbSA9IG8sIG8gPSB2IDw8IDIsIHMgPSBtICsgbyB8IDAsIGVbaCA+PiAyXSA9IGVbcyA+PiAyXSwgaCA9IHUgKyBoIHwgMCwgcyA9IG8gKyBzIHwgMCwgZVtoID4+IDJdID0gZVtzID4+IDJdLCBoID0gdSArIGggfCAwLCBzID0gbyArIHMgfCAwLCBlW2ggPj4gMl0gPSBlW3MgPj4gMl0sIG8gPSBvICsgcyB8IDAsIGggPSB1ICsgaCB8IDAsIGcgPSBnICsgNCB8IDAsIChVIHwgMCkgIT0gKGcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gMCwgIXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVtoID4+IDJdID0gZVtvID4+IDJdLCBvID0gKHYgPDwgMikgKyBvIHwgMCwgaCA9IChsIDw8IDIpICsgaCB8IDAsIHUgPSB1ICsgMSB8IDAsICh5IHwgMCkgIT0gKHUgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9ICh1IDw8IDIpICsgUCB8IDAsIChCIHwgMCkgIT0gNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBCIDw8IDIsIGcgPSAwLCBFID4+PiAwID49IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBoID0gRjIoaCwgbywgdSksIG0gPSBvLCBvID0gdiA8PCAyLCBzID0gbSArIG8gfCAwLCB3ID0gbyArIHMgfCAwLCBDID0gdyArIG8gfCAwLCBvID0gQyArIG8gfCAwLCBtID0gaCwgaCA9IGwgPDwgMiwgaCA9IEYyKEYyKEYyKG0gKyBoIHwgMCwgcywgdSkgKyBoIHwgMCwgdywgdSkgKyBoIHwgMCwgQywgdSkgKyBoIHwgMCwgZyA9IGcgKyA0IHwgMCwgKFUgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSAwLCAheSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBoID0gRjIoaCwgbywgdSksIG8gPSAodiA8PCAyKSArIG8gfCAwLCBoID0gKGwgPDwgMikgKyBoIHwgMCwgZyA9IGcgKyAxIHwgMCwgKHkgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSAwLCBFID4+PiAwID49IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdSA9IGVbbyArIDQgPj4gMl0sIGVbaCA+PiAyXSA9IGVbbyA+PiAyXSwgZVtoICsgNCA+PiAyXSA9IHUsIHUgPSBlW28gKyAxMiA+PiAyXSwgZVtoICsgOCA+PiAyXSA9IGVbbyArIDggPj4gMl0sIGVbaCArIDEyID4+IDJdID0gdSwgdSA9IG8sIG8gPSB2IDw8IDIsIGcgPSB1ICsgbyB8IDAsIHcgPSBlW2cgKyAxMiA+PiAyXSwgdSA9IGgsIGggPSBsIDw8IDIsIHUgPSB1ICsgaCB8IDAsIGVbdSArIDggPj4gMl0gPSBlW2cgKyA4ID4+IDJdLCBlW3UgKyAxMiA+PiAyXSA9IHcsIHcgPSBlW2cgKyA0ID4+IDJdLCBlW3UgPj4gMl0gPSBlW2cgPj4gMl0sIGVbdSArIDQgPj4gMl0gPSB3LCBnID0gbyArIGcgfCAwLCB3ID0gZVtnICsgMTIgPj4gMl0sIHUgPSB1ICsgaCB8IDAsIGVbdSArIDggPj4gMl0gPSBlW2cgKyA4ID4+IDJdLCBlW3UgKyAxMiA+PiAyXSA9IHcsIHcgPSBlW2cgKyA0ID4+IDJdLCBlW3UgPj4gMl0gPSBlW2cgPj4gMl0sIGVbdSArIDQgPj4gMl0gPSB3LCBnID0gbyArIGcgfCAwLCB3ID0gZVtnICsgMTIgPj4gMl0sIHUgPSB1ICsgaCB8IDAsIGVbdSArIDggPj4gMl0gPSBlW2cgKyA4ID4+IDJdLCBlW3UgKyAxMiA+PiAyXSA9IHcsIHcgPSBlW2cgKyA0ID4+IDJdLCBlW3UgPj4gMl0gPSBlW2cgPj4gMl0sIGVbdSArIDQgPj4gMl0gPSB3LCBvID0gbyArIGcgfCAwLCBoID0gdSArIGggfCAwLCBzID0gcyArIDQgfCAwLCAoVSB8IDApICE9IChzIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gMCwgIXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBnID0gZVtvICsgNCA+PiAyXSwgZVtoID4+IDJdID0gZVtvID4+IDJdLCBlW2ggKyA0ID4+IDJdID0gZywgZyA9IGVbbyArIDEyID4+IDJdLCBlW2ggKyA4ID4+IDJdID0gZVtvICsgOCA+PiAyXSwgZVtoICsgMTIgPj4gMl0gPSBnLCBvID0gKHYgPDwgMikgKyBvIHwgMCwgaCA9IChsIDw8IDIpICsgaCB8IDAsIHUgPSB1ICsgMSB8IDAsICh5IHwgMCkgIT0gKHUgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBFMigxLCBaKGVbQSArIDggPj4gMl0sIGVbQSArIDEyID4+IDJdKSA8PCAyKSwgIW8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW2cgKyAoZVtBICsgMjQgPj4gMl0gKyAoWihlW0EgKyAxNiA+PiAyXSwgeCkgPDwgMikgfCAwKSA+PiAyXSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICgocSA8PCAyKSArIG8gfCAwKSArICh1IDw8IDIpIHwgMCwgdSA9IEggLSBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApICE9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gKFoobiwgdSkgPDwgMikgKyBQIHwgMCwgKEIgfCAwKSA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgIT0gOCB8IEIgPj4+IDAgPD0gNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQyA9IEIgJiAtNCwgcyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gMCwgQykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVsodSA8PCAyKSArIG8gPj4gMl0gPSBlWyh1IDw8IDUpICsgaCA+PiAyXSwgZyA9IHUgfCAxLCBlWyhnIDw8IDIpICsgbyA+PiAyXSA9IGVbKGcgPDwgNSkgKyBoID4+IDJdLCBnID0gdSB8IDIsIGVbKGcgPDwgMikgKyBvID4+IDJdID0gZVsoZyA8PCA1KSArIGggPj4gMl0sIGcgPSB1IHwgMywgZVsoZyA8PCAyKSArIG8gPj4gMl0gPSBlWyhnIDw8IDUpICsgaCA+PiAyXSwgdSA9IHUgKyA0IHwgMCwgQyA+Pj4gMCA+IHUgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID4+PiAwID49IEIgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gMCwgZyA9IHUsIG0gPSBCIC0gdSAmIDMsIG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVsoZyA8PCAyKSArIG8gPj4gMl0gPSBlWyhnIDw8IDUpICsgaCA+PiAyXSwgZyA9IGcgKyAxIHwgMCwgdyA9IHcgKyAxIHwgMCwgKG0gfCAwKSAhPSAodyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSAtIEIgPj4+IDAgPiA0Mjk0OTY3MjkyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVsoZyA8PCAyKSArIG8gPj4gMl0gPSBlWyhnIDw8IDUpICsgaCA+PiAyXSwgdSA9IGcgKyAxIHwgMCwgZVsodSA8PCAyKSArIG8gPj4gMl0gPSBlWyh1IDw8IDUpICsgaCA+PiAyXSwgdSA9IGcgKyAyIHwgMCwgZVsodSA8PCAyKSArIG8gPj4gMl0gPSBlWyh1IDw8IDUpICsgaCA+PiAyXSwgdSA9IGcgKyAzIHwgMCwgZVsodSA8PCAyKSArIG8gPj4gMl0gPSBlWyh1IDw8IDUpICsgaCA+PiAyXSwgZyA9IGcgKyA0IHwgMCwgKEIgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSAodiA8PCAyKSArIG8gfCAwLCBoID0gKGwgPDwgMikgKyBoIHwgMCwgcyA9IHMgKyAxIHwgMCwgKGMgfCAwKSA9PSAocyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSAodSA8PCAyKSArIFAgfCAwLCAoQiB8IDApID09IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBCIDw8IDIsIGcgPSAwLCBFID4+PiAwID49IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdyA9IEYyKG8sIGgsIHUpLCBvID0gbCA8PCAyLCBzID0gbyArIGggfCAwLCBDID0gbyArIHMgfCAwLCBtID0gQyArIG8gfCAwLCBoID0gbSArIG8gfCAwLCBvID0gdiA8PCAyLCBvID0gRjIoRjIoRjIobyArIHcgfCAwLCBzLCB1KSArIG8gfCAwLCBDLCB1KSArIG8gfCAwLCBtLCB1KSArIG8gfCAwLCBnID0gZyArIDQgfCAwLCAoVSB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gMCwgIXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBvID0gRjIobywgaCwgdSksIGggPSAobCA8PCAyKSArIGggfCAwLCBvID0gKHYgPDwgMikgKyBvIHwgMCwgZyA9IGcgKyAxIHwgMCwgKHkgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSAwLCBFID4+PiAwID49IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbbyA+PiAyXSA9IGVbaCA+PiAyXSwgdSA9IHYgPDwgMiwgbyA9IHUgKyBvIHwgMCwgZyA9IGwgPDwgMiwgaCA9IGcgKyBoIHwgMCwgZVtvID4+IDJdID0gZVtoID4+IDJdLCBvID0gdSArIG8gfCAwLCBoID0gaCArIGcgfCAwLCBlW28gPj4gMl0gPSBlW2ggPj4gMl0sIG8gPSB1ICsgbyB8IDAsIGggPSBoICsgZyB8IDAsIGVbbyA+PiAyXSA9IGVbaCA+PiAyXSwgbyA9IHUgKyBvIHwgMCwgaCA9IGggKyBnIHwgMCwgcyA9IHMgKyA0IHwgMCwgKFUgfCAwKSAhPSAocyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gMCwgIXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbbyA+PiAyXSA9IGVbaCA+PiAyXSwgbyA9ICh2IDw8IDIpICsgbyB8IDAsIGggPSAobCA8PCAyKSArIGggfCAwLCB1ID0gdSArIDEgfCAwLCAoeSB8IDApICE9ICh1IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gQiAmIC00LCBDID0gQiAmIDMsIHcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IDAsIEUgPj4+IDAgPj0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB1ID0gZVtoICsgNCA+PiAyXSwgZVtvID4+IDJdID0gZVtoID4+IDJdLCBlW28gKyA0ID4+IDJdID0gdSwgdSA9IGVbaCArIDEyID4+IDJdLCBlW28gKyA4ID4+IDJdID0gZVtoICsgOCA+PiAyXSwgZVtvICsgMTIgPj4gMl0gPSB1LCB1ID0gaCwgaCA9IGwgPDwgMiwgZyA9IHUgKyBoIHwgMCwgdyA9IGVbZyArIDEyID4+IDJdLCB1ID0gbywgbyA9IHYgPDwgMiwgdSA9IHUgKyBvIHwgMCwgZVt1ICsgOCA+PiAyXSA9IGVbZyArIDggPj4gMl0sIGVbdSArIDEyID4+IDJdID0gdywgdyA9IGVbZyArIDQgPj4gMl0sIGVbdSA+PiAyXSA9IGVbZyA+PiAyXSwgZVt1ICsgNCA+PiAyXSA9IHcsIGcgPSBoICsgZyB8IDAsIHcgPSBlW2cgKyAxMiA+PiAyXSwgdSA9IHUgKyBvIHwgMCwgZVt1ICsgOCA+PiAyXSA9IGVbZyArIDggPj4gMl0sIGVbdSArIDEyID4+IDJdID0gdywgdyA9IGVbZyArIDQgPj4gMl0sIGVbdSA+PiAyXSA9IGVbZyA+PiAyXSwgZVt1ICsgNCA+PiAyXSA9IHcsIGcgPSBoICsgZyB8IDAsIHcgPSBlW2cgKyAxMiA+PiAyXSwgdSA9IHUgKyBvIHwgMCwgZVt1ICsgOCA+PiAyXSA9IGVbZyArIDggPj4gMl0sIGVbdSArIDEyID4+IDJdID0gdywgdyA9IGVbZyArIDQgPj4gMl0sIGVbdSA+PiAyXSA9IGVbZyA+PiAyXSwgZVt1ICsgNCA+PiAyXSA9IHcsIGggPSBoICsgZyB8IDAsIG8gPSB1ICsgbyB8IDAsIHMgPSBzICsgNCB8IDAsIChVIHwgMCkgIT0gKHMgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSAwLCAheSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGcgPSBlW2ggKyA0ID4+IDJdLCBlW28gPj4gMl0gPSBlW2ggPj4gMl0sIGVbbyArIDQgPj4gMl0gPSBnLCBnID0gZVtoICsgMTIgPj4gMl0sIGVbbyArIDggPj4gMl0gPSBlW2ggKyA4ID4+IDJdLCBlW28gKyAxMiA+PiAyXSA9IGcsIGggPSAobCA8PCAyKSArIGggfCAwLCBvID0gKHYgPDwgMikgKyBvIHwgMCwgdSA9IHUgKyAxIHwgMCwgKHkgfCAwKSAhPSAodSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IDAsIHUgPSAwLCBzID0gMCwgQiA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVsodSA8PCAyKSArIG8gPj4gMl0gPSBlWyhaKG4sIHUpIDw8IDIpICsgaCA+PiAyXSwgcCA9IHUgfCAxLCBlWyhwIDw8IDIpICsgbyA+PiAyXSA9IGVbKFoobiwgcCkgPDwgMikgKyBoID4+IDJdLCBwID0gdSB8IDIsIGVbKHAgPDwgMikgKyBvID4+IDJdID0gZVsoWihuLCBwKSA8PCAyKSArIGggPj4gMl0sIHAgPSB1IHwgMywgZVsocCA8PCAyKSArIG8gPj4gMl0gPSBlWyhaKG4sIHApIDw8IDIpICsgaCA+PiAyXSwgdSA9IHUgKyA0IHwgMCwgcyA9IHMgKyA0IHwgMCwgKG0gfCAwKSAhPSAocyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFDKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbKHUgPDwgMikgKyBvID4+IDJdID0gZVsoWihuLCB1KSA8PCAyKSArIGggPj4gMl0sIHUgPSB1ICsgMSB8IDAsIGcgPSBnICsgMSB8IDAsIChDIHwgMCkgIT0gKGcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gKHYgPDwgMikgKyBvIHwgMCwgaCA9IChsIDw8IDIpICsgaCB8IDAsIHcgPSB3ICsgMSB8IDAsICh3IHwgMCkgPT0gKGMgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSAwLCB1ID0gMCwgcyA9IDAsICFwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbKFoobiwgdSkgPDwgMikgKyBoID4+IDJdID0gZVsodSA8PCAyKSArIG8gPj4gMl0sIEogPSB1IHwgMSwgZVsoWihKLCBuKSA8PCAyKSArIGggPj4gMl0gPSBlWyhKIDw8IDIpICsgbyA+PiAyXSwgSiA9IHUgfCAyLCBlWyhaKEosIG4pIDw8IDIpICsgaCA+PiAyXSA9IGVbKEogPDwgMikgKyBvID4+IDJdLCBKID0gdSB8IDMsIGVbKFooSiwgbikgPDwgMikgKyBoID4+IDJdID0gZVsoSiA8PCAyKSArIG8gPj4gMl0sIHUgPSB1ICsgNCB8IDAsIHMgPSBzICsgNCB8IDAsIChtIHwgMCkgIT0gKHMgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFDKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVsoWihuLCB1KSA8PCAyKSArIGggPj4gMl0gPSBlWyh1IDw8IDIpICsgbyA+PiAyXSwgdSA9IHUgKyAxIHwgMCwgZyA9IGcgKyAxIHwgMCwgKEMgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSAodiA8PCAyKSArIG8gfCAwLCBoID0gKGwgPDwgMikgKyBoIHwgMCwgdyA9IHcgKyAxIHwgMCwgKHcgfCAwKSA9PSAoYyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoeiA9IHogKyAxIHwgMCwgSCA9IEIgKyBIIHwgMCwgIShIID4+PiAwIDwgZiA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoeCA9IHggKyAxIHwgMCwgRCA9IGMgKyBEIHwgMCwgIShEID4+PiAwIDwgayA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEtBKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSBXKDApLCBhID0gMCwgdSA9IDAsIG8gPSBXKDApLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gVygwKSwgQyA9IDAsIG0gPSAwLCB5ID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA9PSAxKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgYyA9IEYyKGksIEEsIHIgPDwgMiksIGggPSAhZiwgdSA9IGMgKyAoaCA8PCAyKSB8IDAsIHQgPSAoZiB8IDApICE9IDAsIEIgPSAodCA8PCAyKSArIGMgfCAwLCBpID0gQiArIDQgfCAwLCBrID0gaSwgbSA9IHIgKyB0IHwgMCwgcyA9IG0gPj4+IDEgfCAwLCB3ID0gciAtIHMgfCAwLCB0ID0gcyAtIHQgfCAwLCBhID0gKHQgfCAwKSA+ICh3IHwgMCkgPyB3IDogdCwgZyA9IGEgPj4+IDAgPiB3ID4+PiAwID8gdyA6IGE7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghZykKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoR1tCID4+IDJdID0gVyhXKEdbdSA+PiAyXSArIEdbQiArIDQgPj4gMl0pICogVygtMS41ODYxMzQzMTQ1MzcwNDgzKSkgKyBHW0IgPj4gMl0sIGsgPSBCICsgMTIgfCAwLCBuID0gMSwgZyA+Pj4gMCA+IDQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbCA9IEdbayA+PiAyXSwgbyA9IEdbayArIDggPj4gMl0sIEdbayArIDQgPj4gMl0gPSBXKFcobCArIG8pICogVygtMS41ODYxMzQzMTQ1MzcwNDgzKSkgKyBHW2sgKyA0ID4+IDJdLCB2ID0gbywgbyA9IEdbayArIDE2ID4+IDJdLCBHW2sgKyAxMiA+PiAyXSA9IFcoVyh2ICsgbykgKiBXKC0xLjU4NjEzNDMxNDUzNzA0ODMpKSArIEdbayArIDEyID4+IDJdLCBHW2sgKyAyMCA+PiAyXSA9IFcoVyhvICsgR1trICsgMjQgPj4gMl0pICogVygtMS41ODYxMzQzMTQ1MzcwNDgzKSkgKyBHW2sgKyAyMCA+PiAyXSwgdCA9IGsgLSA0IHwgMCwgR1t0ID4+IDJdID0gVyhXKGwgKyBHW2sgLSA4ID4+IDJdKSAqIFcoLTEuNTg2MTM0MzE0NTM3MDQ4MykpICsgR1t0ID4+IDJdLCBrID0gayArIDMyIHwgMCwgdCA9IG4gKyA3IHwgMCwgbiA9IG4gKyA0IHwgMCwgdCA+Pj4gMCA8IGcgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBuID0gKGcgLSA1ICYgLTQpICsgNSB8IDA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKG4gPj4+IDAgPj0gZyA+Pj4gMCB8fCAodCA9IG4gKyAxIHwgMCwgZyAtIG4gJiAxICYmIChuID0gayAtIDQgfCAwLCBHW24gPj4gMl0gPSBXKFcoR1trIC0gOCA+PiAyXSArIEdbayA+PiAyXSkgKiBXKC0xLjU4NjEzNDMxNDUzNzA0ODMpKSArIEdbbiA+PiAyXSwgbiA9IHQsIGsgPSBrICsgOCB8IDApLCAodCB8IDApID09IChnIHwgMCkpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gR1trID4+IDJdLCBHW2sgKyA0ID4+IDJdID0gVyhXKGwgKyBHW2sgKyA4ID4+IDJdKSAqIFcoLTEuNTg2MTM0MzE0NTM3MDQ4MykpICsgR1trICsgNCA+PiAyXSwgdCA9IGsgLSA0IHwgMCwgR1t0ID4+IDJdID0gVyhXKGwgKyBHW2sgLSA4ID4+IDJdKSAqIFcoLTEuNTg2MTM0MzE0NTM3MDQ4MykpICsgR1t0ID4+IDJdLCBrID0gayArIDE2IHwgMCwgbiA9IG4gKyAyIHwgMCwgKGcgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgeSA9IGEgPj4+IDAgPj0gdyA+Pj4gMCwgeSB8fCAodCA9IGsgLSA0IHwgMCwgbCA9IEdbayAtIDggPj4gMl0sIEdbdCA+PiAyXSA9IFcoVyhsICsgbCkgKiBXKC0xLjU4NjEzNDMxNDUzNzA0ODMpKSArIEdbdCA+PiAyXSksIGsgPSB1ICsgNCB8IDAsIG4gPSBrLCB0ID0gdyAtIGggfCAwLCBDID0gKHQgfCAwKSA+IChzIHwgMCkgPyBzIDogdCwgaCA9IHMgPj4+IDAgPCBDID4+PiAwID8gcyA6IEM7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghaCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoR1t1ID4+IDJdID0gVyhXKEdbQiA+PiAyXSArIEdbdSArIDQgPj4gMl0pICogVygtMC4wNTI5ODAxMTc0OTk4MjgzNCkpICsgR1t1ID4+IDJdLCBuID0gdSArIDEyIHwgMCwgdCA9IDEsIGggPj4+IDAgPiA0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGwgPSBHW24gPj4gMl0sIG8gPSBHW24gKyA4ID4+IDJdLCBHW24gKyA0ID4+IDJdID0gVyhXKGwgKyBvKSAqIFcoLTAuMDUyOTgwMTE3NDk5ODI4MzQpKSArIEdbbiArIDQgPj4gMl0sIHYgPSBvLCBvID0gR1tuICsgMTYgPj4gMl0sIEdbbiArIDEyID4+IDJdID0gVyhXKHYgKyBvKSAqIFcoLTAuMDUyOTgwMTE3NDk5ODI4MzQpKSArIEdbbiArIDEyID4+IDJdLCBHW24gKyAyMCA+PiAyXSA9IFcoVyhvICsgR1tuICsgMjQgPj4gMl0pICogVygtMC4wNTI5ODAxMTc0OTk4MjgzNCkpICsgR1tuICsgMjAgPj4gMl0sIGEgPSBuIC0gNCB8IDAsIEdbYSA+PiAyXSA9IFcoVyhsICsgR1tuIC0gOCA+PiAyXSkgKiBXKC0wLjA1Mjk4MDExNzQ5OTgyODM0KSkgKyBHW2EgPj4gMl0sIG4gPSBuICsgMzIgfCAwLCBhID0gdCArIDcgfCAwLCB0ID0gdCArIDQgfCAwLCBhID4+PiAwIDwgaCA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIHQgPSAoaCAtIDUgJiAtNCkgKyA1IHwgMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA+PSBoID4+PiAwIHx8IChhID0gdCArIDEgfCAwLCBoIC0gdCAmIDEgJiYgKHQgPSBuIC0gNCB8IDAsIEdbdCA+PiAyXSA9IFcoVyhHW24gLSA4ID4+IDJdICsgR1tuID4+IDJdKSAqIFcoLTAuMDUyOTgwMTE3NDk5ODI4MzQpKSArIEdbdCA+PiAyXSwgbiA9IG4gKyA4IHwgMCwgdCA9IGEpLCAoYSB8IDApID09IChoIHwgMCkpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gR1tuID4+IDJdLCBHW24gKyA0ID4+IDJdID0gVyhXKGwgKyBHW24gKyA4ID4+IDJdKSAqIFcoLTAuMDUyOTgwMTE3NDk5ODI4MzQpKSArIEdbbiArIDQgPj4gMl0sIGEgPSBuIC0gNCB8IDAsIEdbYSA+PiAyXSA9IFcoVyhsICsgR1tuIC0gOCA+PiAyXSkgKiBXKC0wLjA1Mjk4MDExNzQ5OTgyODM0KSkgKyBHW2EgPj4gMl0sIG4gPSBuICsgMTYgfCAwLCB0ID0gdCArIDIgfCAwLCAoaCB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhID0gcyA+Pj4gMCA8PSBDID4+PiAwLCBhIHx8ICh0ID0gbiAtIDQgfCAwLCBsID0gR1tuIC0gOCA+PiAyXSwgR1t0ID4+IDJdID0gVyhXKGwgKyBsKSAqIFcoLTAuMDUyOTgwMTE3NDk5ODI4MzQpKSArIEdbdCA+PiAyXSk7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghZykKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoR1tCID4+IDJdID0gVyhXKEdbdSA+PiAyXSArIEdbQiArIDQgPj4gMl0pICogVygwLjg4MjkxMTA4NjA4MjQ1ODUpKSArIEdbQiA+PiAyXSwgaSA9IEIgKyAxMiB8IDAsIG4gPSAxLCBnID4+PiAwID4gNCkgewogICAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gR1tpID4+IDJdLCBvID0gR1tpICsgOCA+PiAyXSwgR1tpICsgNCA+PiAyXSA9IFcoVyhsICsgbykgKiBXKDAuODgyOTExMDg2MDgyNDU4NSkpICsgR1tpICsgNCA+PiAyXSwgdiA9IG8sIG8gPSBHW2kgKyAxNiA+PiAyXSwgR1tpICsgMTIgPj4gMl0gPSBXKFcodiArIG8pICogVygwLjg4MjkxMTA4NjA4MjQ1ODUpKSArIEdbaSArIDEyID4+IDJdLCBHW2kgKyAyMCA+PiAyXSA9IFcoVyhvICsgR1tpICsgMjQgPj4gMl0pICogVygwLjg4MjkxMTA4NjA4MjQ1ODUpKSArIEdbaSArIDIwID4+IDJdLCB0ID0gaSAtIDQgfCAwLCBHW3QgPj4gMl0gPSBXKFcobCArIEdbaSAtIDggPj4gMl0pICogVygwLjg4MjkxMTA4NjA4MjQ1ODUpKSArIEdbdCA+PiAyXSwgaSA9IGkgKyAzMiB8IDAsIHQgPSBuICsgNyB8IDAsIG4gPSBuICsgNCB8IDAsIHQgPj4+IDAgPCBnID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgbiA9IChnIC0gNSAmIC00KSArIDUgfCAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChuID4+PiAwID49IGcgPj4+IDAgfHwgKHQgPSBuICsgMSB8IDAsIGcgLSBuICYgMSAmJiAobiA9IGkgLSA0IHwgMCwgR1tuID4+IDJdID0gVyhXKEdbaSAtIDggPj4gMl0gKyBHW2kgPj4gMl0pICogVygwLjg4MjkxMTA4NjA4MjQ1ODUpKSArIEdbbiA+PiAyXSwgbiA9IHQsIGkgPSBpICsgOCB8IDApLCAodCB8IDApID09IChnIHwgMCkpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gR1tpID4+IDJdLCBHW2kgKyA0ID4+IDJdID0gVyhXKGwgKyBHW2kgKyA4ID4+IDJdKSAqIFcoMC44ODI5MTEwODYwODI0NTg1KSkgKyBHW2kgKyA0ID4+IDJdLCB0ID0gaSAtIDQgfCAwLCBHW3QgPj4gMl0gPSBXKFcobCArIEdbaSAtIDggPj4gMl0pICogVygwLjg4MjkxMTA4NjA4MjQ1ODUpKSArIEdbdCA+PiAyXSwgaSA9IGkgKyAxNiB8IDAsIG4gPSBuICsgMiB8IDAsIChnIHwgMCkgIT0gKG4gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHkgfHwgKHQgPSBpIC0gNCB8IDAsIGwgPSBHW2kgLSA4ID4+IDJdLCBHW3QgPj4gMl0gPSBXKFcobCArIGwpICogVygwLjg4MjkxMTA4NjA4MjQ1ODUpKSArIEdbdCA+PiAyXSk7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghaCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoR1t1ID4+IDJdID0gVyhXKEdbQiA+PiAyXSArIEdbdSArIDQgPj4gMl0pICogVygwLjQ0MzUwNjg2NjY5MzQ5NjcpKSArIEdbdSA+PiAyXSwgayA9IHUgKyAxMiB8IDAsIGkgPSAxLCBoID4+PiAwID4gNCkgewogICAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gR1trID4+IDJdLCBvID0gR1trICsgOCA+PiAyXSwgR1trICsgNCA+PiAyXSA9IFcoVyhsICsgbykgKiBXKDAuNDQzNTA2ODY2NjkzNDk2NykpICsgR1trICsgNCA+PiAyXSwgdiA9IG8sIG8gPSBHW2sgKyAxNiA+PiAyXSwgR1trICsgMTIgPj4gMl0gPSBXKFcodiArIG8pICogVygwLjQ0MzUwNjg2NjY5MzQ5NjcpKSArIEdbayArIDEyID4+IDJdLCBHW2sgKyAyMCA+PiAyXSA9IFcoVyhvICsgR1trICsgMjQgPj4gMl0pICogVygwLjQ0MzUwNjg2NjY5MzQ5NjcpKSArIEdbayArIDIwID4+IDJdLCB0ID0gayAtIDQgfCAwLCBHW3QgPj4gMl0gPSBXKFcobCArIEdbayAtIDggPj4gMl0pICogVygwLjQ0MzUwNjg2NjY5MzQ5NjcpKSArIEdbdCA+PiAyXSwgayA9IGsgKyAzMiB8IDAsIHQgPSBpICsgNyB8IDAsIGkgPSBpICsgNCB8IDAsIHQgPj4+IDAgPCBoID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaSA9IChoIC0gNSAmIC00KSArIDUgfCAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAwID49IGggPj4+IDAgfHwgKHQgPSBpICsgMSB8IDAsIGggLSBpICYgMSAmJiAoaSA9IGsgLSA0IHwgMCwgR1tpID4+IDJdID0gVyhXKEdbayAtIDggPj4gMl0gKyBHW2sgPj4gMl0pICogVygwLjQ0MzUwNjg2NjY5MzQ5NjcpKSArIEdbaSA+PiAyXSwgayA9IGsgKyA4IHwgMCwgaSA9IHQpLCAodCB8IDApID09IChoIHwgMCkpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gR1trID4+IDJdLCBHW2sgKyA0ID4+IDJdID0gVyhXKGwgKyBHW2sgKyA4ID4+IDJdKSAqIFcoMC40NDM1MDY4NjY2OTM0OTY3KSkgKyBHW2sgKyA0ID4+IDJdLCB0ID0gayAtIDQgfCAwLCBHW3QgPj4gMl0gPSBXKFcobCArIEdbayAtIDggPj4gMl0pICogVygwLjQ0MzUwNjg2NjY5MzQ5NjcpKSArIEdbdCA+PiAyXSwgayA9IGsgKyAxNiB8IDAsIGkgPSBpICsgMiB8IDAsIChoIHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEgfHwgKGkgPSBrIC0gNCB8IDAsIGwgPSBHW2sgLSA4ID4+IDJdLCBHW2kgPj4gMl0gPSBXKFcobCArIGwpICogVygwLjQ0MzUwNjg2NjY5MzQ5NjcpKSArIEdbaSA+PiAyXSksIG4gPSBzID4+PiAwIDwgdyA+Pj4gMCA/IHMgOiB3OwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gMCwgbiA+Pj4gMCA8PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gYzsgR1tpID4+IDJdID0gR1tpID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpLCBHW2kgKyA0ID4+IDJdID0gR1tpICsgNCA+PiAyXSAqIFcoMS4yMzAxNzQwNjQ2MzYyMzA1KSwgR1tpICsgOCA+PiAyXSA9IEdbaSArIDggPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDEyID4+IDJdID0gR1tpICsgMTIgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbaSArIDE2ID4+IDJdID0gR1tpICsgMTYgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDIwID4+IDJdID0gR1tpICsgMjAgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbaSArIDI0ID4+IDJdID0gR1tpICsgMjQgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDI4ID4+IDJdID0gR1tpICsgMjggPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIGkgPSBpICsgMzIgfCAwLCB0ID0gayArIDcgfCAwLCBrID0gayArIDQgfCAwLCBuID4+PiAwID4gdCA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA+Pj4gMCA8PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gYzsgR1tpID4+IDJdID0gR1tpID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpLCBHW2kgKyA0ID4+IDJdID0gR1tpICsgNCA+PiAyXSAqIFcoMC44MTI4OTMwOTI2MzIyOTM3KSwgR1tpICsgOCA+PiAyXSA9IEdbaSArIDggPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbaSArIDEyID4+IDJdID0gR1tpICsgMTIgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDE2ID4+IDJdID0gR1tpICsgMTYgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbaSArIDIwID4+IDJdID0gR1tpICsgMjAgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDI0ID4+IDJdID0gR1tpICsgMjQgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbaSArIDI4ID4+IDJdID0gR1tpICsgMjggPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIGkgPSBpICsgMzIgfCAwLCB0ID0gayArIDcgfCAwLCBrID0gayArIDQgfCAwLCBuID4+PiAwID4gdCA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbiAmIDIxNDc0ODM2NDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID4+PiAwIDwgbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4gJiAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IDAsIHQgPSBrOyBHW2kgPj4gMl0gPSBHW2kgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbaSArIDQgPj4gMl0gPSBHW2kgKyA0ID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpLCB0ID0gdCArIDEgfCAwLCBpID0gaSArIDggfCAwLCBhID0gYSArIDEgfCAwLCAoZyB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayAtIG4gPj4+IDAgPD0gNDI5NDk2NzI5MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEdbaSA+PiAyXSA9IEdbaSA+PiAyXSAqIFcoMS4yMzAxNzQwNjQ2MzYyMzA1KSwgR1tpICsgNCA+PiAyXSA9IEdbaSArIDQgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDggPj4gMl0gPSBHW2kgKyA4ID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpLCBHW2kgKyAxMiA+PiAyXSA9IEdbaSArIDEyID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpLCBHW2kgKyAxNiA+PiAyXSA9IEdbaSArIDE2ID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpLCBHW2kgKyAyMCA+PiAyXSA9IEdbaSArIDIwID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpLCBHW2kgKyAyNCA+PiAyXSA9IEdbaSArIDI0ID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpLCBHW2kgKyAyOCA+PiAyXSA9IEdbaSArIDI4ID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpLCBpID0gaSArIDMyIHwgMCwgdCA9IHQgKyA0IHwgMCwgKG4gfCAwKSAhPSAodCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID4+PiAwIDwgdyA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgR1tpID4+IDJdID0gR1tpID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPj0gcyA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgR1tpICsgNCA+PiAyXSA9IEdbaSArIDQgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBrID0gbiAmIDIxNDc0ODM2NDQ7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA8IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4gJiAzOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IDAsIHQgPSBrOyBHW2kgPj4gMl0gPSBHW2kgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDQgPj4gMl0gPSBHW2kgKyA0ID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpLCB0ID0gdCArIDEgfCAwLCBpID0gaSArIDggfCAwLCBhID0gYSArIDEgfCAwLCAoZyB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayAtIG4gPj4+IDAgPD0gNDI5NDk2NzI5MikKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgR1tpID4+IDJdID0gR1tpID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpLCBHW2kgKyA0ID4+IDJdID0gR1tpICsgNCA+PiAyXSAqIFcoMS4yMzAxNzQwNjQ2MzYyMzA1KSwgR1tpICsgOCA+PiAyXSA9IEdbaSArIDggPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDEyID4+IDJdID0gR1tpICsgMTIgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbaSArIDE2ID4+IDJdID0gR1tpICsgMTYgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDIwID4+IDJdID0gR1tpICsgMjAgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbaSArIDI0ID4+IDJdID0gR1tpICsgMjQgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIEdbaSArIDI4ID4+IDJdID0gR1tpICsgMjggPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIGkgPSBpICsgMzIgfCAwLCB0ID0gdCArIDQgfCAwLCAobiB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgayA9IG47CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA8IHMgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgR1tpID4+IDJdID0gR1tpID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPj0gdyA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIEdbaSArIDQgPj4gMl0gPSBHW2kgKyA0ID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobSA+Pj4gMCA8IDIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHQgPSBzICYgNzsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmIChzIC0gMSA+Pj4gMCA8IDcpIHsKICAgICAgICAgICAgICAgICAgICAgIGkgPSBBOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gcyAmIDIxNDc0ODM2NDAsIGsgPSAwLCBpID0gQTsgZVtpID4+IDJdID0gZVt1ID4+IDJdLCBlW2kgKyA0ID4+IDJdID0gZVt1ICsgOCA+PiAyXSwgZVtpICsgOCA+PiAyXSA9IGVbdSArIDE2ID4+IDJdLCBlW2kgKyAxMiA+PiAyXSA9IGVbdSArIDI0ID4+IDJdLCBlW2kgKyAxNiA+PiAyXSA9IGVbdSArIDMyID4+IDJdLCBlW2kgKyAyMCA+PiAyXSA9IGVbdSArIDQwID4+IDJdLCBlW2kgKyAyNCA+PiAyXSA9IGVbdSArIDQ4ID4+IDJdLCBlW2kgKyAyOCA+PiAyXSA9IGVbdSArIDU2ID4+IDJdLCB1ID0gdSAtIC02NCB8IDAsIGkgPSBpICsgMzIgfCAwLCBrID0gayArIDggfCAwLCAobiB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgZVtpID4+IDJdID0gZVt1ID4+IDJdLCB1ID0gdSArIDggfCAwLCBpID0gaSArIDQgfCAwLCBrID0gayArIDEgfCAwLCAodCB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKHcgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKGkgPSAocyA8PCAyKSArIEEgfCAwLCBrID0gKChmID8gMCA6IC00KSArIGMgfCAwKSArIDQgfCAwLCBzIC0gciA+Pj4gMCA8PSA0Mjk0OTY3Mjg4KQogICAgICAgICAgICAgICAgICBmb3IgKEEgPSB3ICYgMjE0NzQ4MzY0MCwgbiA9IDA7IGVbaSA+PiAyXSA9IGVbayA+PiAyXSwgZVtpICsgNCA+PiAyXSA9IGVbayArIDggPj4gMl0sIGVbaSArIDggPj4gMl0gPSBlW2sgKyAxNiA+PiAyXSwgZVtpICsgMTIgPj4gMl0gPSBlW2sgKyAyNCA+PiAyXSwgZVtpICsgMTYgPj4gMl0gPSBlW2sgKyAzMiA+PiAyXSwgZVtpICsgMjAgPj4gMl0gPSBlW2sgKyA0MCA+PiAyXSwgZVtpICsgMjQgPj4gMl0gPSBlW2sgKyA0OCA+PiAyXSwgZVtpICsgMjggPj4gMl0gPSBlW2sgKyA1NiA+PiAyXSwgayA9IGsgLSAtNjQgfCAwLCBpID0gaSArIDMyIHwgMCwgbiA9IG4gKyA4IHwgMCwgKEEgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgaWYgKEEgPSB3ICYgNywgIUEpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBlW2kgPj4gMl0gPSBlW2sgPj4gMl0sIGsgPSBrICsgOCB8IDAsIGkgPSBpICsgNCB8IDAsIG4gPSBuICsgMSB8IDAsIChBIHwgMCkgIT0gKG4gfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEc0KEEsIGksIHIsIGYsIGssIHQsIG4pIHsKICAgICAgICAgICAgICB2YXIgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICAgICAgICBhID0gMzEyMzI7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBBOgogICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobCA9IChlW2kgKyA3NiA+PiAyXSArIFoociwgNTY0NCkgfCAwKSArIFooZiwgMTQ4KSB8IDAsIGVbbCArIDQ2MCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAzMTI5MjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGEgPSAzMTI0NDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGEgPSAzMTI1NjsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGEgPSAzMTI2ODsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEgPSAzMTI4MDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbyA9IGEgKyA0IHwgMCwgYSA9IFooZiwgMjQwKSArIEEgfCAwLCBlW2EgKyA0NCA+PiAyXSA9IDEsIGcgPSBlW2wgKyA0NjAgPj4gMl0sIGVbYSArIDg0ID4+IDJdID0gZzsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghKEZbaSArIDEwMCB8IDBdICYgMSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgaWYgKEEgPSBHMltpID4+IDFdLCAoQSAtIDMgJiA2NTUzNSkgPj4+IDAgPCA0KQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGlmIChBID4+PiAwID49IDEwMjQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpZiAoQSA+Pj4gMCA+PSAyNDYwKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVbYSArIDQ4ID4+IDJdID0gZVtsICsgNDk2ID4+IDJdLCBlW2EgKyA2MCA+PiAyXSA9IGVbbCArIDUxMiA+PiAyXSwgZVthICsgNTIgPj4gMl0gPSBlW2wgKyA1MDAgPj4gMl0sIGVbYSArIDY0ID4+IDJdID0gZVtsICsgNTE2ID4+IDJdLCBlW2EgKyA2OCA+PiAyXSA9IGVbbCArIDQ5MiA+PiAyXSwgZVthICsgNTYgPj4gMl0gPSBlW2wgKyA1MDggPj4gMl0sIGVbYSArIDcyID4+IDJdID0gZVtsICsgNTA0ID4+IDJdLCBlW2EgKyA3NiA+PiAyXSA9IGVbbCArIDUyMCA+PiAyXSwgZVthICsgMTAwID4+IDJdID0gZVtsICsgNTI0ID4+IDJdLCBlW2EgKyAxMDggPj4gMl0gPSBlW2wgKyA1MzIgPj4gMl0sIGVbYSArIDEwNCA+PiAyXSA9IGVbbCArIDUyOCA+PiAyXSwgZVthICsgMTEyID4+IDJdID0gZVtsICsgNTM2ID4+IDJdOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoKHQgfCAwKSA8PSAyKQogICAgICAgICAgICAgICAgZm9yIChuID0gdDsgOyApIHsKICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgIGY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4gPSBuICsgMSB8IDAsIElbbyArIG4gfCAwXSAtIDY3IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVthICsgNDggPj4gMl0gPSBlW2wgKyA0OTYgPj4gMl0sIGVbYSArIDYwID4+IDJdID0gZVtsICsgNTEyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZVthICsgNTIgPj4gMl0gPSBlW2wgKyA1MDAgPj4gMl0sIGVbYSArIDY0ID4+IDJdID0gZVtsICsgNTE2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZVthICsgNjggPj4gMl0gPSBlW2wgKyA0OTIgPj4gMl0sIGVbYSArIDU2ID4+IDJdID0gZVtsICsgNTA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPD0gMSkgewogICAgICAgICAgICAgICAgICAgICAgZVthICsgNzIgPj4gMl0gPSBlW2wgKyA1MDQgPj4gMl0sIGVbYSArIDc2ID4+IDJdID0gZVtsICsgNTIwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVthICsgMTAwID4+IDJdID0gZVtsICsgNTI0ID4+IDJdLCBlW2EgKyAxMDggPj4gMl0gPSBlW2wgKyA1MzIgPj4gMl0sIGVbYSArIDEwNCA+PiAyXSA9IGVbbCArIDUyOCA+PiAyXSwgZVthICsgMTEyID4+IDJdID0gZVtsICsgNTM2ID4+IDJdOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApID09IDMpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGspIHsKICAgICAgICAgICAgICAgICAgaWYgKCh0IHwgMCkgPCAwKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGZvciAoZiA9IFooZiwgMTQ4KSwgaCA9IFoociwgNTY0NCksIG4gPSAxOyA7ICkgewogICAgICAgICAgICAgICAgICAgIEEgPSB0OwogICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodCA9IHQgKyBvIHwgMCwgSVt0IHwgMF0gLSA2NyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2wgKyA1NTYgPj4gMl0sIGVbYSArIDY0ID4+IDJdID0gciwgZVthICsgNTIgPj4gMl0gPSByIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2wgKyA1NTIgPj4gMl0sIGVbYSArIDYwID4+IDJdID0gciwgZVthICsgNDggPj4gMl0gPSByIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2wgKyA1NDggPj4gMl0sIGVbYSArIDU2ID4+IDJdID0gciwgZVthICsgNjggPj4gMl0gPSByIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbbCArIDU2MCA+PiAyXSwgZVthICsgNzYgPj4gMl0gPSByLCBlW2EgKyA3MiA+PiAyXSA9IHIgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgciA9IGVbbCArIDU0MCA+PiAyXSwgayA9IGVbbCArIDU2NCA+PiAyXSwgZVthICsgMTA0ID4+IDJdID0gaywgZVthICsgMTAwID4+IDJdID0gayAtIChyICsgKChrID4+PiAwKSAlIChyID4+PiAwKSB8IDApIHwgMCksIHIgPSBlW2wgKyA1NDQgPj4gMl0sIGsgPSBlW2wgKyA1NjggPj4gMl0sIGVbYSArIDExMiA+PiAyXSA9IGssIGVbYSArIDEwOCA+PiAyXSA9IGsgLSAociArICgoayA+Pj4gMCkgJSAociA+Pj4gMCkgfCAwKSB8IDApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByID0gKG4gfCAwKSAhPSAxLCBuID0gMDsKICAgICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAocikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIG4gPSAxOwogICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoSVt0IHwgMF0gLSA2NyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbbCArIDU1MiA+PiAyXSwgKHIgfCAwKSAhPSBlW2wgKyA1MTIgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gZiArIChlW2kgKyA3NiA+PiAyXSArIGggfCAwKSB8IDAsIGsgPSBBOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsgLSAxIHwgMCwgdCA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoSVt0ICsgbyB8IDBdIC0gNjcgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA1NTIgPj4gMl0gIT0gZVtyICsgNTEyID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNTQ4ID4+IDJdID09IGVbciArIDUwOCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW3IgKyA0NjAgPj4gMl0gPD0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IHQsIGVbciArIDU2MCA+PiAyXSA9PSBlW3IgKyA1MjAgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA1NjQgPj4gMl0gIT0gZVtyICsgNTI4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSB0LCBlW3IgKyA1NjggPj4gMl0gPT0gZVtyICsgNTM2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSAwLCB1ID0gKHQgfCAwKSA+IDAsIHQgPSB0IC0gMSB8IDAsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDU1NiA+PiAyXSA9PSBlW3IgKyA1MTYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2wgKyA0OTYgPj4gMl0sIGVbYSArIDQ4ID4+IDJdID0gciwgbiA9IDEsIHIgPSByICsgMSB8IDAsIGVbYSArIDYwID4+IDJdID0gciwgZVtsICsgNTUyID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gMCwgISgoayB8IDApID4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2wgKyA1NjAgPj4gMl0sIChyIHwgMCkgIT0gZVtsICsgNTIwID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBmICsgKGVbaSArIDc2ID4+IDJdICsgaCB8IDApIHwgMCwgayA9IEE7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsgLSAxIHwgMCwgdCA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChJW3QgKyBvIHwgMF0gLSA2NyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNTUyID4+IDJdICE9IGVbciArIDUxMiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA1NDggPj4gMl0gPT0gZVtyICsgNTA4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW3IgKyA0NjAgPj4gMl0gPD0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSB0LCBlW3IgKyA1NjAgPj4gMl0gPT0gZVtyICsgNTIwID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDU2NCA+PiAyXSAhPSBlW3IgKyA1MjggPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gdCwgZVtyICsgNTY4ID4+IDJdID09IGVbciArIDUzNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDAsIHUgPSAodCB8IDApID4gMCwgdCA9IHQgLSAxIHwgMCwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA1NTYgPj4gMl0gPT0gZVtyICsgNTE2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVtsICsgNTA0ID4+IDJdLCBlW2EgKyA3MiA+PiAyXSA9IHIsIG4gPSAxLCByID0gciArIDEgfCAwLCBlW2EgKyA3NiA+PiAyXSA9IHIsIGVbbCArIDU2MCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDAsICEoKGsgfCAwKSA+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2wgKyA1NjQgPj4gMl0sIHIgPj4+IDAgPj0gZFtsICsgNTI4ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSAwLCB0ID0gZVtsICsgNTY4ID4+IDJdLCB0ID4+PiAwIDwgZFtsICsgNTM2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IGYgKyAoZVtpICsgNzYgPj4gMl0gKyBoIHwgMCkgfCAwLCBrID0gQTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDAsIHQgPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKElbdCArIG8gfCAwXSAtIDY3IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNTUyID4+IDJdICE9IGVbciArIDUxMiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDU0OCA+PiAyXSA9PSBlW3IgKyA1MDggPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFtyICsgNDYwID4+IDJdIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSB0LCBlW3IgKyA1NjAgPj4gMl0gPT0gZVtyICsgNTIwID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNTY0ID4+IDJdICE9IGVbciArIDUyOCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gdCwgZVtyICsgNTY4ID4+IDJdID09IGVbciArIDUzNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gKHQgfCAwKSA+IDAsIHQgPSB0IC0gMSB8IDAsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDU1NiA+PiAyXSA9PSBlW3IgKyA1MTYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlW2wgKyA1MzIgPj4gMl0sIG4gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKGsgfCAwKSA+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2EgKyAxMDAgPj4gMl0gPSByLCBrID0gZVtsICsgNTQwID4+IDJdLCByID0gayArIHIgLSAociA+Pj4gMCkgJSAoayA+Pj4gMCkgfCAwLCBlW2EgKyAxMDQgPj4gMl0gPSByLCBlW2wgKyA1NjQgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVthICsgMTA4ID4+IDJdID0gdCwgciA9IGVbbCArIDU0NCA+PiAyXSwgciA9IHIgKyB0IC0gKHQgPj4+IDApICUgKHIgPj4+IDApIHwgMCwgZVthICsgMTEyID4+IDJdID0gciwgZVtsICsgNTY4ID4+IDJdID0gciwgciA9IGVbbCArIDUyNCA+PiAyXSwgZVthICsgMTAwID4+IDJdID0gciwgayA9IGVbbCArIDU0MCA+PiAyXSwgciA9IGsgKyByIC0gKHIgPj4+IDApICUgKGsgPj4+IDApIHwgMCwgZVthICsgMTA0ID4+IDJdID0gciwgZVtsICsgNTY0ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbYSArIDcyID4+IDJdID0gciwgciA9IHIgKyAxIHwgMCwgZVthICsgNzYgPj4gMl0gPSByLCBlW2wgKyA1NjAgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbbCArIDU0OCA+PiAyXSwgKHIgfCAwKSA9PSBlW2wgKyA1MDggPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IGYgKyAoZVtpICsgNzYgPj4gMl0gKyBoIHwgMCkgfCAwLCBrID0gQTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsgLSAxIHwgMCwgdCA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKElbdCArIG8gfCAwXSAtIDY3IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDU1MiA+PiAyXSAhPSBlW3IgKyA1MTIgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDU0OCA+PiAyXSA9PSBlW3IgKyA1MDggPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW3IgKyA0NjAgPj4gMl0gPD0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gdCwgZVtyICsgNTYwID4+IDJdID09IGVbciArIDUyMCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNTY0ID4+IDJdICE9IGVbciArIDUyOCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IHQsIGVbciArIDU2OCA+PiAyXSA9PSBlW3IgKyA1MzYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gMCwgdSA9ICh0IHwgMCkgPiAwLCB0ID0gdCAtIDEgfCAwLCB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgNTU2ID4+IDJdID09IGVbciArIDUxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbbCArIDQ5MiA+PiAyXSwgZVthICsgNjggPj4gMl0gPSByLCBuID0gMSwgciA9IHIgKyAxIHwgMCwgZVthICsgNTYgPj4gMl0gPSByLCBlW2wgKyA1NDggPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSAwLCAhKChrIHwgMCkgPiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbYSArIDY4ID4+IDJdID0gciwgciA9IHIgKyAxIHwgMCwgZVthICsgNTYgPj4gMl0gPSByLCBlW2wgKyA1NDggPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2wgKyA1NTYgPj4gMl0sIChyIHwgMCkgPT0gZVtsICsgNTE2ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBmICsgKGVbaSArIDc2ID4+IDJdICsgaCB8IDApIHwgMCwgayA9IEE7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDAsIHQgPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChJW3QgKyBvIHwgMF0gLSA2NyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA1NTIgPj4gMl0gIT0gZVtyICsgNTEyID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA1NDggPj4gMl0gPT0gZVtyICsgNTA4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFtyICsgNDYwID4+IDJdIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IHQsIGVbciArIDU2MCA+PiAyXSA9PSBlW3IgKyA1MjAgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDU2NCA+PiAyXSAhPSBlW3IgKyA1MjggPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSB0LCBlW3IgKyA1NjggPj4gMl0gPT0gZVtyICsgNTM2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDAsIHUgPSAodCB8IDApID4gMCwgdCA9IHQgLSAxIHwgMCwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDU1NiA+PiAyXSA9PSBlW3IgKyA1MTYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2wgKyA1MDAgPj4gMl0sIGVbYSArIDUyID4+IDJdID0gciwgbiA9IDEsIHIgPSByICsgMSB8IDAsIGVbYSArIDY0ID4+IDJdID0gciwgZVtsICsgNTU2ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gMCwgISgoayB8IDApID4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlW2EgKyA1MiA+PiAyXSA9IHIsIHIgPSByICsgMSB8IDAsIGVbYSArIDY0ID4+IDJdID0gciwgZVtsICsgNTU2ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbYSArIDQ4ID4+IDJdID0gciwgciA9IHIgKyAxIHwgMCwgZVthICsgNjAgPj4gMl0gPSByLCBlW2wgKyA1NTIgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gQSAtIDEgfCAwLCAhKChBIHwgMCkgPiAwKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSA8IDApCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgQSA9IHQ7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICByOgogICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChJW3QgKyBvIHwgMF0gLSA2NyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2wgKyA1MDAgPj4gMl0sIGVbYSArIDUyID4+IDJdID0gaSwgaSA9IGkgKyAxIHwgMCwgZVthICsgNjQgPj4gMl0gPSBpLCBlW2wgKyA1NTYgPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbbCArIDQ5NiA+PiAyXSwgZVthICsgNDggPj4gMl0gPSBpLCBpID0gaSArIDEgfCAwLCBlW2EgKyA2MCA+PiAyXSA9IGksIGVbbCArIDU1MiA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2wgKyA0OTIgPj4gMl0sIGVbYSArIDY4ID4+IDJdID0gaSwgaSA9IGkgKyAxIHwgMCwgZVthICsgNTYgPj4gMl0gPSBpLCBlW2wgKyA1NDggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2wgKyA1MDQgPj4gMl0sIGVbYSArIDcyID4+IDJdID0gaSwgaSA9IGkgKyAxIHwgMCwgZVthICsgNzYgPj4gMl0gPSBpLCBlW2wgKyA1NjAgPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaSA9IGVbbCArIDUzMiA+PiAyXSwgciA9IGVbbCArIDUyNCA+PiAyXSwgZVthICsgMTAwID4+IDJdID0gciwgZiA9IGVbbCArIDU0MCA+PiAyXSwgZVthICsgMTA4ID4+IDJdID0gaSwgciA9IHIgKyBmIC0gKHIgPj4+IDApICUgKGYgPj4+IDApIHwgMCwgZVthICsgMTA0ID4+IDJdID0gciwgZiA9IGVbbCArIDU0NCA+PiAyXSwgaSA9IGYgKyBpIC0gKGkgPj4+IDApICUgKGYgPj4+IDApIHwgMCwgZVthICsgMTEyID4+IDJdID0gaSwgZVtsICsgNTY4ID4+IDJdID0gaSwgZVtsICsgNTY0ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAodCA9IEEgLSAxIHwgMCwgISgoQSB8IDApID4gMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGpBKEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDA7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMDsKICAgICAgICAgICAgICBhID0gWCAtIDE4NzM2IHwgMCwgWCA9IGEsIG4gPSBJW0EgKyAyOSB8IDBdLCBlW2EgKyAyNCA+PiAyXSA9IDAsIGVbYSArIDE2ID4+IDJdID0gMCwgZVthICsgMjAgPj4gMl0gPSAwLCB0ID0gbiA+Pj4gMCA+IDEgPyAxIDogMjsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIW4pCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChpID0gZVthICsgMjQgPj4gMl0sIHIgPSBlW2EgKyAyMCA+PiAyXSwgbiA+Pj4gMCA8PSAoaSAtIHIgfCAwKSAvIDM2ID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgbiAmJiAoZiA9IFoobiwgMzYpIC0gMzYgfCAwLCBmID0gKGYgLSAoKGYgPj4+IDApICUgMzYgfCAwKSB8IDApICsgMzYgfCAwLCByID0gZDIociwgMCwgZikgKyBmIHwgMCksIGVbYSArIDIwID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAocyA9IGVbYSArIDE2ID4+IDJdLCBsID0gciAtIHMgfCAwLCB1ID0gbiArICgobCB8IDApIC8gMzYgfCAwKSB8IDAsIHUgPj4+IDAgPCAxMTkzMDQ2NDgpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gKGkgLSBzIHwgMCkgLyAzNiB8IDAsIGkgPSBmIDw8IDEsIHUgPSBmID4+PiAwID49IDU5NjUyMzIzID8gMTE5MzA0NjQ3IDogaSA+Pj4gMCA+IHUgPj4+IDAgPyBpIDogdSwgdSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA+Pj4gMCA+PSAxMTkzMDQ2NDgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IF8yKFoodSwgMzYpKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCArIG8gfCAwLCBpID0gWihuLCAzNikgLSAzNiB8IDAsIGkgPSAoaSAtICgoaSA+Pj4gMCkgJSAzNiB8IDApIHwgMCkgKyAzNiB8IDAsIGYgPSBkMihsLCAwLCBpKSArIGkgfCAwLCAociB8IDApICE9IChzIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHIgPSByIC0gMzYgfCAwLCBpID0gZVtyICsgNCA+PiAyXSwgbCA9IGwgLSAzNiB8IDAsIGVbbCA+PiAyXSA9IGVbciA+PiAyXSwgZVtsICsgNCA+PiAyXSA9IGksIGVbbCArIDMyID4+IDJdID0gZVtyICsgMzIgPj4gMl0sIGkgPSBlW3IgKyAyOCA+PiAyXSwgZVtsICsgMjQgPj4gMl0gPSBlW3IgKyAyNCA+PiAyXSwgZVtsICsgMjggPj4gMl0gPSBpLCBpID0gZVtyICsgMjAgPj4gMl0sIGVbbCArIDE2ID4+IDJdID0gZVtyICsgMTYgPj4gMl0sIGVbbCArIDIwID4+IDJdID0gaSwgaSA9IGVbciArIDEyID4+IDJdLCBlW2wgKyA4ID4+IDJdID0gZVtyICsgOCA+PiAyXSwgZVtsICsgMTIgPj4gMl0gPSBpLCAociB8IDApICE9IChzIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlW2EgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbYSArIDI0ID4+IDJdID0gWih1LCAzNikgKyBvLCBlW2EgKyAyMCA+PiAyXSA9IGYsIGVbYSArIDE2ID4+IDJdID0gbCwgcyAmJiBSKHMpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcGkoKSwgVTAoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBacigpLCBVMCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHIgPSBlW2EgKyAxNiA+PiAyXSwgaSA9IElbQSArIDI5IHwgMF0sICFpKSB7CiAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG8gPSBHMltBICsgMjYgPj4gMV0sIHUgPSBHMltBICsgMjQgPj4gMV0sIGwgPSBJW0EgKyAzMCB8IDBdLCBnID0gSVtBICsgMjggfCAwXSwgKGkgfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICBmb3IgKGYgPSBpICYgMjU0OyBuID0gWihoLCAzNikgKyByIHwgMCwgZVtuICsgMzIgPj4gMl0gPSBsLCBlW24gKyAyOCA+PiAyXSA9IGcsIGVbbiArIDI0ID4+IDJdID0gZywgZVtuICsgMTIgPj4gMl0gPSBvLCBlW24gKyA4ID4+IDJdID0gdSwgZVtuID4+IDJdID0gMSwgZVtuICsgNCA+PiAyXSA9IDEsIG4gPSBaKGggfCAxLCAzNikgKyByIHwgMCwgZVtuICsgMzIgPj4gMl0gPSBsLCBlW24gKyAyOCA+PiAyXSA9IGcsIGVbbiArIDI0ID4+IDJdID0gZywgZVtuICsgMTIgPj4gMl0gPSBvLCBlW24gKyA4ID4+IDJdID0gdSwgZVtuID4+IDJdID0gMSwgZVtuICsgNCA+PiAyXSA9IDEsIGggPSBoICsgMiB8IDAsIGsgPSBrICsgMiB8IDAsIChmIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGlmICghKGkgJiAxKSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGYgPSBaKGgsIDM2KSArIHIgfCAwLCBlW2YgKyAzMiA+PiAyXSA9IGwsIGVbZiArIDI4ID4+IDJdID0gZywgZVtmICsgMjQgPj4gMl0gPSBnLCBlW2YgKyAxMiA+PiAyXSA9IG8sIGVbZiArIDggPj4gMl0gPSB1LCBlW2YgPj4gMl0gPSAxLCBlW2YgKyA0ID4+IDJdID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoayA9IEUyKDEsIDM2KSwgaykgewogICAgICAgICAgICAgICAgICAgIGlmIChlW2sgKyAxNiA+PiAyXSA9IGksIGVbayArIDIwID4+IDJdID0gdCwgZiA9IEUyKGksIDUyKSwgZVtrICsgMjQgPj4gMl0gPSBmLCAhZikKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW2sgKyAyNCA+PiAyXSwgbiA9IGYgKyBaKG8sIDUyKSB8IDAsIHUgPSBaKG8sIDM2KSArIHIgfCAwLCBlW24gPj4gMl0gPSBlW3UgPj4gMl0sIGVbbiArIDQgPj4gMl0gPSBlW3UgKyA0ID4+IDJdLCBsID0gZVt1ICsgOCA+PiAyXSwgZVtuICsgOCA+PiAyXSA9IGwsIHQgPSBlW3UgKyAxMiA+PiAyXSwgZVtuICsgMTIgPj4gMl0gPSB0LCBlW24gKyAxNiA+PiAyXSA9IGVbdSArIDE2ID4+IDJdLCBlW24gKyAyMCA+PiAyXSA9IGVbdSArIDIwID4+IDJdLCBlW24gKyAyNCA+PiAyXSA9IGVbdSArIDI0ID4+IDJdLCBlW24gKyAzMiA+PiAyXSA9IGVbdSArIDMyID4+IDJdLCAhKCF0IHwgbCA+Pj4gMCA8PSA0Mjk0OTY3Mjk1IC8gKHQgPj4+IDApID4+PiAyID4+PiAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtrICsgMTYgPj4gMl0sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGYgPSBlWyhlW2sgKyAyNCA+PiAyXSArIFooaSwgNTIpIHwgMCkgKyA0NCA+PiAyXSwgZiAmJiAoUihmKSwgciA9IGVbayArIDE2ID4+IDJdKSwgaSA9IGkgKyAxIHwgMCwgciA+Pj4gMCA+IGkgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGVbayArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBSKGYpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBQMChaKHQsIGwpIDw8IDIpLCBlW24gKyA0NCA+PiAyXSA9IGYsICFmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2sgKyAyNCA+PiAyXSwgIWkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtrICsgMTYgPj4gMl0sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGYgPSBlWyhlW2sgKyAyNCA+PiAyXSArIFooaSwgNTIpIHwgMCkgKyA0NCA+PiAyXSwgZiAmJiAoUihmKSwgciA9IGVbayArIDE2ID4+IDJdKSwgaSA9IGkgKyAxIHwgMCwgciA+Pj4gMCA+IGkgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbayArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBSKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQyKGYsIDAsIFooZVtuICsgOCA+PiAyXSwgZVtuICsgMTIgPj4gMl0pIDw8IDIpLCBvID0gbyArIDEgfCAwLCAobyB8IDApID09IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaSA9IGVbayArIDI4ID4+IDJdLCBpICYmIFIoaSksIFIoayksIGsgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBsID0gaywgZVtsID4+IDJdID0gZVtBICsgNjggPj4gMl0sIGVbbCArIDQgPj4gMl0gPSBlW0EgKyA3MiA+PiAyXSwgayA9IEcyW0EgKyAyNCA+PiAxXSwgZVtsICsgOCA+PiAyXSA9IGssIGYgPSBHMltBICsgMjYgPj4gMV0sIGVbbCArIDEyID4+IDJdID0gZiwgaSA9IElbQSArIDI4IHwgMF07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPCA5KSB7CiAgICAgICAgICAgICAgICAgIGlmICh3ID0gSVtBICsgMjkgfCAwXSwgKHcgfCAwKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF3IHx8IChpID0gWihmLCBrKSwgIWkpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBlW0EgPj4gMl0sIHUgPSBpICYgMjE0NzQ4MzY0NCwgbiA9IGkgJiAzLCB0ID0gZVtsICsgMjQgPj4gMl0sIHMgPSAwLCBrID0gaSA+Pj4gMCA8IDQ7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IG8gKyBzIHwgMCwgZyA9IGVbKHQgKyBaKHMsIDUyKSB8IDApICsgNDQgPj4gMl0sIHIgPSAwLCBpID0gMCwgIWspCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2cgKyAociA8PCAyKSA+PiAyXSA9IElbaCArIFoociwgdykgfCAwXSwgZiA9IHIgfCAxLCBlW2cgKyAoZiA8PCAyKSA+PiAyXSA9IElbaCArIFooZiwgdykgfCAwXSwgZiA9IHIgfCAyLCBlW2cgKyAoZiA8PCAyKSA+PiAyXSA9IElbaCArIFooZiwgdykgfCAwXSwgZiA9IHIgfCAzLCBlW2cgKyAoZiA8PCAyKSA+PiAyXSA9IElbaCArIFooZiwgdykgfCAwXSwgciA9IHIgKyA0IHwgMCwgaSA9IGkgKyA0IHwgMCwgKHUgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAwLCBuKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVtnICsgKHIgPDwgMikgPj4gMl0gPSBJW2ggKyBaKHIsIHcpIHwgMF0sIHIgPSByICsgMSB8IDAsIGkgPSBpICsgMSB8IDAsIChuIHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gcyArIDEgfCAwLCAodyB8IDApID09IChzIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtBID4+IDJdLCB0ID0gZVtBICsgNCA+PiAyXSwgKGYgfCAwKSA9PSAodCB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIHIgPSBlW2VbbCArIDI0ID4+IDJdICsgNDQgPj4gMl0sIGsgPSB0IC0gZiAmIDc7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWspIHsKICAgICAgICAgICAgICAgICAgICAgIGkgPSBmOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gMCwgaSA9IGY7IGVbciA+PiAyXSA9IElbaSB8IDBdLCByID0gciArIDQgfCAwLCBpID0gaSArIDEgfCAwLCBoID0gaCArIDEgfCAwLCAoayB8IDApICE9IChoIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZiAtIHQgPj4+IDAgPiA0Mjk0OTY3Mjg4KQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGZvciAoOyBlW3IgPj4gMl0gPSBJW2kgfCAwXSwgZVtyICsgNCA+PiAyXSA9IElbaSArIDEgfCAwXSwgZVtyICsgOCA+PiAyXSA9IElbaSArIDIgfCAwXSwgZVtyICsgMTIgPj4gMl0gPSBJW2kgKyAzIHwgMF0sIGVbciArIDE2ID4+IDJdID0gSVtpICsgNCB8IDBdLCBlW3IgKyAyMCA+PiAyXSA9IElbaSArIDUgfCAwXSwgZVtyICsgMjQgPj4gMl0gPSBJW2kgKyA2IHwgMF0sIGVbciArIDI4ID4+IDJdID0gSVtpICsgNyB8IDBdLCByID0gciArIDMyIHwgMCwgaSA9IGkgKyA4IHwgMCwgKHQgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPiAxNikKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmIChmID0gZVtBICsgNCA+PiAyXSwgciA9IGVbQSA+PiAyXSwgSVtBICsgMzAgfCAwXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgIGlmICgociB8IDApID09IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZm9yIChpID0gZVtlW2wgKyAyNCA+PiAyXSArIDQ0ID4+IDJdOyBlW2kgPj4gMl0gPSB1MltyID4+IDFdLCBpID0gaSArIDQgfCAwLCByID0gciArIDIgfCAwLCAoZiB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA9PSAoZiB8IDApKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yIChpID0gZVtlW2wgKyAyNCA+PiAyXSArIDQ0ID4+IDJdOyBlW2kgPj4gMl0gPSBHMltyID4+IDFdLCBpID0gaSArIDQgfCAwLCByID0gciArIDIgfCAwLCAoZiB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpID0gYSArIDI4IHwgMCwgaSAmJiAoaSA9IGQyKGksIDAsIDE4NzA4KSwgZVtpICsgMTgxOTYgPj4gMl0gPSAtMSwgZVtpICsgMTgyMDAgPj4gMl0gPSAtMSwgZVtpICsgMTgxODggPj4gMl0gPSAxLCBlW2kgKyAxODE5MiA+PiAyXSA9IDEsIGVbaSArIDU2MTIgPj4gMl0gPSAtMSwgZVtpICsgNTYwMCA+PiAyXSA9IDY0LCBlW2kgKyA1NTkyID4+IDJdID0gNiwgZVtpICsgNTU5NiA+PiAyXSA9IDY0LCBlW2kgKyA0Nzg4ID4+IDJdID0gMCwgZVtpICsgMTg2OTIgPj4gMl0gPSAwLCBlW2kgKyAyNCA+PiAyXSA9IDApLCBGW2EgKyAxODcxOCB8IDBdID0gRltBICsgMjkgfCAwXSA+IDEsIGVbYSArIDcyID4+IDJdID0gZVtBICsgNTIgPj4gMl0sIGVbYSArIDU2MjAgPj4gMl0gPSBlW0EgKyAzMiA+PiAyXSArIDEsIGVbYSArIDU2MzYgPj4gMl0gPSBJW0EgKyAzNiB8IDBdIF4gMSwgaSA9IGVbQSArIDQ0ID4+IDJdLCBnID0gZVtBICsgNDAgPj4gMl0sIGsgPSBpIC0gZyA+PiAyLCBlW2EgKyA0ODE2ID4+IDJdID0gazsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA9PSAoZyB8IDApKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKGYgPSBrID4+PiAwIDw9IDEgPyAxIDogaywgdSA9IGYgJiAzLCBuID0gYSArIDQ4MjAgfCAwLCBpID0gMCwgciA9IDAsIGsgPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgZm9yIChrID0gZiAmIC00LCB0ID0gMDsgbyA9IHIgPDwgMiwgR1tvICsgbiA+PiAyXSA9IEdbZyArIG8gPj4gMl0sIGYgPSBvIHwgNCwgR1tmICsgbiA+PiAyXSA9IEdbZiArIGcgPj4gMl0sIGYgPSBvIHwgOCwgR1tmICsgbiA+PiAyXSA9IEdbZiArIGcgPj4gMl0sIGYgPSBvIHwgMTIsIEdbZiArIG4gPj4gMl0gPSBHW2YgKyBnID4+IDJdLCByID0gciArIDQgfCAwLCB0ID0gdCArIDQgfCAwLCAoayB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAoIXUpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKDsgZiA9IHIgPDwgMiwgR1tmICsgbiA+PiAyXSA9IEdbZiArIGcgPj4gMl0sIHIgPSByICsgMSB8IDAsIGkgPSBpICsgMSB8IDAsICh1IHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVbYSArIDQ4ID4+IDJdID0gMSwgayA9IEUyKDEsIDk2KSwgaSA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFrKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZVtrICsgNzYgPj4gMl0gPSAwLCBlW2sgKyAxMiA+PiAyXSA9IDIzNywgZVtrICsgNCA+PiAyXSA9IDIzOCwgZVtrICsgOTIgPj4gMl0gPSAyMTQsIGVbayArIDI0ID4+IDJdID0gMjM5LCBlW2sgKyAyMCA+PiAyXSA9IDI0MCwgZVtrICsgMTYgPj4gMl0gPSAyMTIsIGVbayArIDggPj4gMl0gPSAyNDEsIGVbayA+PiAyXSA9IDI0MiwgZiA9IEUyKDEsIDIzMiksIGkgPSAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZVtmID4+IDJdID0gMCwgRltmICsgMTg4IHwgMF0gPSBJW2YgKyAxODggfCAwXSAmIDI1MywgaSA9IFUyKDFlMyksIGVbZiArIDUyID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmICghaSB8fCAoZVtmICsgNTYgPj4gMl0gPSAxZTMsIGkgPSBwZSgpLCBlW2YgKyAxOTYgPj4gMl0gPSBpLCAhaSkgfHwgKGkgPSBwZSgpLCBlW2YgKyAxOTIgPj4gMl0gPSBpLCAhaSkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIGkgPSAwLCB0ID0gbzYoKTsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IFE2KCksICFnZSh0LCAyMzc0KSkgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gd3IodCksICh0IHwgMCkgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgaSA9IHIgPyByIDw8IDEgOiA2NCwgaSA9IChpIHwgMCkgPiAodCB8IDApID8gdCA6IGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChyID0gV2UoaSksIGVbZiArIDIxMiA+PiAyXSA9IHIsIGkgPSBmLCByKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IFdlKDApLCBlW2YgKyAyMTIgPj4gMl0gPSBpLCAhaSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgaSA9IGY7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBzaShmKSwgaSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtrICsgNDggPj4gMl0gPSBpLCBpKSB7CiAgICAgICAgICAgICAgICAgIGVbayArIDcyID4+IDJdID0gMTA3LCBlW2sgKyA2NCA+PiAyXSA9IDEwNywgZVtrICsgNjAgPj4gMl0gPSAwLCBlW2sgKyA1MiA+PiAyXSA9IDAsIGVbayArIDU2ID4+IDJdID0gMCwgZVtrICsgNjggPj4gMl0gPSAxMDcsIGkgPSBrOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgUihrKSwgaSA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGkgJiYgKGVbaSArIDU2ID4+IDJdID0gMCwgZVtpICsgNjggPj4gMl0gPSA5MCksIGkgJiYgKGVbaSArIDUyID4+IDJdID0gMCwgZVtpICsgNjQgPj4gMl0gPSA5MSksIHIgPSAwLCBmID0gYSArIDI4IHwgMCwgIWkgfCAhZiB8IChlW2kgKyA3NiA+PiAyXSB8ICFsKSB8fCAociA9IG8yW2VbaSArIDIwID4+IDJdXShlW2kgKyA0OCA+PiAyXSwgZiwgbCwgaSArIDUyIHwgMCkgfCAwKTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIXIpIHsKICAgICAgICAgICAgICAgICAgXzAoODA0NCwgNDIsIDEsIGVbMTE4NDZdKSwgS2UoaSksIHkxKGwpOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgayA9IEEgKyAxMiB8IDAsIHQgPSBlW0EgKyA0ID4+IDJdIC0gZVtBID4+IDJdIHwgMCwgaCA9IGVbQSArIDE2ID4+IDJdLCByID0gZVtBICsgMTIgPj4gMl0sIGYgPSBoIC0gciB8IDA7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAwID4gZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgIFRlKGssIHQgLSBmIHwgMCksIHIgPSBlW0EgKyAxMiA+PiAyXSwgaCA9IGVbQSArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGYgPj4+IDAgPD0gdCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBoID0gciArIHQgfCAwLCBlW0EgKyAxNiA+PiAyXSA9IGg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVthICsgOCA+PiAyXSA9IHIsIGVbYSArIDQgPj4gMl0gPSByLCBlW2EgKyAxMiA+PiAyXSA9IGggLSByLCB0ID0gRjYoMCksIHQgJiYgKHQgJiYgKGVbdCArIDQgPj4gMl0gPSAwLCBlW3QgPj4gMl0gPSBhICsgNCksIGYgPSBlW2EgKyAxMiA+PiAyXSwgdCAmJiAoZVt0ICsgOCA+PiAyXSA9IGYsIGVbdCArIDEyID4+IDJdID0gMCksICF0IHwgIShGW3QgKyA2OCB8IDBdICYgMSkgfHwgKGVbdCArIDIwID4+IDJdID0gOTIpLCB0ICYmIChlW3QgKyAyNCA+PiAyXSA9IDYwKSwgdCAmJiAoZVt0ICsgMjggPj4gMl0gPSA2MSkpLCByID0gMCwgZVtpICsgNzYgPj4gMl0gfCAoIWkgfCAhdCkgfHwgKHIgPSBvMltlW2kgPj4gMl1dKGVbaSArIDQ4ID4+IDJdLCB0LCBsLCBpICsgNTIgfCAwKSB8IDApLCAhcikgewogICAgICAgICAgICAgICAgICBfMCg0OTkyLCA0MywgMSwgZVsxMTg0Nl0pOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHIgPSAwLCBlW2kgKyA3NiA+PiAyXSB8ICghaSB8ICF0KSB8fCAociA9IG8yW2VbaSArIDQgPj4gMl1dKGVbaSArIDQ4ID4+IDJdLCB0LCBpICsgNTIgfCAwKSB8IDApLCAhcikgewogICAgICAgICAgICAgICAgICBfMCgxMDQ2MCwgMzUsIDEsIGVbMTE4NDZdKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyID0gMCwgZVtpICsgNzYgPj4gMl0gfCAoIWkgfCAhdCkgfHwgKHIgPSBvMltlW2kgKyAxMiA+PiAyXV0oZVtpICsgNDggPj4gMl0sIHQsIGkgKyA1MiB8IDApIHwgMCksICFyKSB7CiAgICAgICAgICAgICAgICAgIF8wKDUwMzYsIDQxLCAxLCBlWzExODQ2XSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAociA9IGVbYSArIDggPj4gMl0gLSBlW2EgKyA0ID4+IDJdIHwgMCwgaSA9IGVbQSArIDEyID4+IDJdLCBmID0gZVtBICsgMTYgPj4gMl0gLSBpIHwgMCwgciA+Pj4gMCA+IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgVGUoaywgciAtIGYgfCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyID4+PiAwID49IGYgPj4+IDApCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBlW0EgKyAxNiA+PiAyXSA9IGkgKyByOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBBID0gZVthICsgMTYgPj4gMl0sIEEgJiYgKGVbYSArIDIwID4+IDJdID0gQSwgUihBKSksIFggPSBhICsgMTg3MzYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFc0KEEsIGksIHIsIGYsIGssIHQsIG4pIHsKICAgICAgICAgICAgICB2YXIgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMCwgRCA9IDAsIFUgPSAwOwogICAgICAgICAgICAgIHUgPSBYICsgLTY0IHwgMCwgWCA9IHUsIGVbdSArIDYwID4+IDJdID0gaSwgRCA9IHUgKyAzOSB8IDAsIG0gPSB1ICsgNDAgfCAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6IGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgQTogZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBpLCAodyBeIDIxNDc0ODM2NDcpIDwgKGwgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGwgKyB3IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGksIGEgPSBJW2wgfCAwXSwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGEgJiAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgIT0gMzcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gbDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSVthICsgMSB8IDBdICE9IDM3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCArIDEgfCAwLCBoID0gSVthICsgMiB8IDBdLCBpID0gYSArIDIgfCAwLCBhID0gaSwgKGggfCAwKSAhPSAzNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSBvIHwgMCwgRSA9IHcgXiAyMTQ3NDgzNjQ3LCAobCB8IDApID4gKEUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBICYmIHIxKEEsIG8sIGwpLCBsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt1ICsgNjAgPj4gMl0gPSBpLCBsID0gaSArIDEgfCAwLCBjID0gLTEsIGEgPSBGW2kgKyAxIHwgMF0gLSA0OCB8IDAsIElbaSArIDIgfCAwXSAhPSAzNiB8IGEgPj4+IDAgPiA5IHx8IChKID0gMSwgYyA9IGEsIGwgPSBpICsgMyB8IDApLCBlW3UgKyA2MCA+PiAyXSA9IGwsIHMgPSAwLCBhID0gRltsIHwgMF0sIGkgPSBhIC0gMzIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA+IDMxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGwsIGkgPSAxIDw8IGksICEoaSAmIDc1OTEzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGwgKyAxIHwgMCwgZVt1ICsgNjAgPj4gMl0gPSBoLCBzID0gaSB8IHMsIGEgPSBGW2wgKyAxIHwgMF0sIGkgPSBhIC0gMzIgfCAwLCBpID4+PiAwID49IDMyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGgsIGkgPSAxIDw8IGksICEoaSAmIDc1OTEzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApID09IDQyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IEZbaCArIDEgfCAwXSAtIDQ4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShJW2ggKyAyIHwgMF0gIT0gMzYgfCBpID4+PiAwID4gOSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVsoaSA8PCAyKSArIGsgPj4gMl0gPSAxMCwgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVsoaSA8PCAzKSArIGYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IGksIGkgPSBoICsgMyB8IDAsIGEgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGggKyAxIHwgMCwgIUEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt1ICsgNjAgPj4gMl0gPSBpLCBKID0gMCwgQiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZVtyID4+IDJdLCBlW3IgPj4gMl0gPSBsICsgNCwgQiA9IGVbbCA+PiAyXSwgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKID0gYSwgZVt1ICsgNjAgPj4gMl0gPSBpLCAoQiB8IDApID49IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSAwIC0gQiB8IDAsIHMgPSBzIHwgODE5MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gRTYodSArIDYwIHwgMCksIChCIHwgMCkgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW3UgKyA2MCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwLCBnID0gLTEsIHkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSVtpIHwgMF0gIT0gNDYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElbaSArIDEgfCAwXSA9PSA0MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBGW2kgKyAyIHwgMF0gLSA0OCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoSVtpICsgMyB8IDBdICE9IDM2IHwgYSA+Pj4gMCA+IDkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbKGEgPDwgMikgKyBrID4+IDJdID0gMTAsIGcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGVbKGEgPDwgMykgKyBmID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSArIDIgfCAwLCBnID0gMCwgIUEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZVtyID4+IDJdLCBlW3IgPj4gMl0gPSBhICsgNCwgZyA9IGVbYSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt1ICsgNjAgPj4gMl0gPSBpLCB5ID0gKGcgfCAwKSA+PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt1ICsgNjAgPj4gMl0gPSBpICsgMSwgZyA9IEU2KHUgKyA2MCB8IDApLCBpID0gZVt1ICsgNjAgPj4gMl0sIHkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwID0gbCwgaCA9IDI4LCB2ID0gaSwgYSA9IEZbaSB8IDBdLCBhIC0gMTIzID4+PiAwIDwgNDI5NDk2NzIzOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgKyAxIHwgMCwgbCA9IElbKGEgKyBaKGwsIDU4KSB8IDApICsgNDc4MzkgfCAwXSwgISgobCAtIDEgJiAyNTUpID4+PiAwIDwgOCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3UgKyA2MCA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCB8IDApICE9IDI3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGMgfCAwKSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVsoYyA8PCAyKSArIGsgPj4gMl0gPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IChjIDw8IDMpICsgZiB8IDAsIGEgPSBlW2wgKyA0ID4+IDJdLCBlW3UgKyA0OCA+PiAyXSA9IGVbbCA+PiAyXSwgZVt1ICsgNTIgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsNih1ICsgNDggfCAwLCBsLCByLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYyB8IDApID49IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSAwLCAhQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElbQSB8IDBdICYgMzIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcyAmIC02NTUzNywgcyA9IHMgJiA4MTkyID8gYSA6IHMsIGMgPSAwLCBIID0gMTEwMSwgaCA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBROiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh2ID0gSVt2IHwgMF0sIGwgPSB2IDw8IDI0ID4+IDI0LCBsID0gcCAmJiAodiAmIDE1KSA9PSAzID8gbCAmIC00NSA6IGwsIGwgLSA4OCB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDMwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgVzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBROwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgRzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChsIC0gNjUgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBHOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsIHwgMCkgPT0gODMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlW3UgKyA0OCA+PiAyXSwgdiA9IGVbdSArIDUyID4+IDJdLCBIID0gMTEwMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHAgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2VbdSArIDQ4ID4+IDJdID4+IDJdID0gdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtlW3UgKyA0OCA+PiAyXSA+PiAyXSA9IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlW3UgKyA0OCA+PiAyXSwgZVtvID4+IDJdID0gdywgZVtvICsgNCA+PiAyXSA9IHcgPj4gMzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUyW2VbdSArIDQ4ID4+IDJdID4+IDFdID0gdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRltlW3UgKyA0OCA+PiAyXV0gPSB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2VbdSArIDQ4ID4+IDJdID4+IDJdID0gdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlW3UgKyA0OCA+PiAyXSwgZVtvID4+IDJdID0gdywgZVtvICsgNCA+PiAyXSA9IHcgPj4gMzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZyA+Pj4gMCA8PSA4ID8gOCA6IGcsIHMgPSBzIHwgOCwgbCA9IDEyMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gbSwgbyA9IGVbdSArIDUyID4+IDJdLCB2ID0gbywgYSA9IGVbdSArIDQ4ID4+IDJdLCBDID0gYSwgYSB8IG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoVSA9IGwgJiAzMjsgaSA9IGkgLSAxIHwgMCwgRltpIHwgMF0gPSBVIHwgSVsoQyAmIDE1KSArIDQ4MzY4IHwgMF0sIHAgPSAhbyAmIEMgPj4+IDAgPiAxNSB8IChvIHwgMCkgIT0gMCwgQyA9IChvICYgMTUpIDw8IDI4IHwgQyA+Pj4gNCwgbyA9IG8gPj4+IDQgfCAwLCAhIXA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGksICEoYSB8IHYpIHwgIShzICYgOCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gKGwgPj4+IDQgfCAwKSArIDExMDEgfCAwLCBjID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gbSwgbyA9IGVbdSArIDUyID4+IDJdLCB2ID0gbywgYSA9IGVbdSArIDQ4ID4+IDJdLCBDID0gYSwgYSB8IG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgaSA9IGkgLSAxIHwgMCwgRltpIHwgMF0gPSBDICYgNyB8IDQ4LCBwID0gIW8gJiBDID4+PiAwID4gNyB8IChvIHwgMCkgIT0gMCwgQyA9IChvICYgNykgPDwgMjkgfCBDID4+PiAzLCBvID0gbyA+Pj4gMyB8IDAsICEhcDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBpLCAhKHMgJiA4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG0gLSBpIHwgMCwgZyA9IChpIHwgMCkgPCAoZyB8IDApID8gZyA6IGkgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVt1ICsgNDggPj4gMl0sIGkgPSBlW3UgKyA1MiA+PiAyXSwgdiA9IGksIChpIHwgMCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDAgLSAoaSArICgoYSB8IDApICE9IDApIHwgMCkgfCAwLCB2ID0gbCwgYSA9IDAgLSBhIHwgMCwgZVt1ICsgNDggPj4gMl0gPSBhLCBlW3UgKyA1MiA+PiAyXSA9IGwsIGMgPSAxLCBIID0gMTEwMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzICYgMjA0OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAxLCBIID0gMTEwMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBaOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzICYgMSwgSCA9IGMgPyAxMTAzIDogMTEwMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBtZShhLCB2LCBtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPCAwICYgeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSB5ID8gcyAmIC02NTUzNyA6IHMsICEoZyB8IChhIHwgdikgIT0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBtLCBnID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAhKGEgfCB2KSArIChtIC0gbyB8IDApIHwgMCwgZyA9IChpIHwgMCkgPCAoZyB8IDApID8gZyA6IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gSVt1ICsgNDggfCAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBnID4+PiAwID49IDIxNDc0ODM2NDcgPyAyMTQ3NDgzNjQ3IDogZywgbCA9IHMsIGggPSAobCB8IDApICE9IDAsIGkgPSBlW3UgKyA0OCA+PiAyXSwgbyA9IGkgfHwgMzM5NCwgaSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGkgJiAzKSB8ICFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSVtpIHwgMF0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBoID0gKGwgfCAwKSAhPSAwLCBpID0gaSArIDEgfCAwLCAhKGkgJiAzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCFJW2kgfCAwXSB8IGwgPj4+IDAgPCA0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBlW2kgPj4gMl0sICgoMTY4NDMwMDggLSBoIHwgaCkgJiAtMjEzOTA2MjE0NCkgIT0gLTIxMzkwNjIxNDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSArIDQgfCAwLCBsID0gbCAtIDQgfCAwLCAhKGwgPj4+IDAgPiAzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFJW2kgfCAwXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSArIDEgfCAwLCBsID0gbCAtIDEgfCAwLCAhbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBpID8gaSAtIG8gfCAwIDogcywgaCA9IGkgKyBvIHwgMCwgKGcgfCAwKSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLCBnID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gYSwgZyA9IGksIElbaCB8IDBdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW3UgKyA0OCA+PiAyXSwgbCB8IGVbdSArIDUyID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGVbdSArIDQ4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDAsIG4xKEEsIDMyLCBCLCAwLCBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdSArIDEyID4+IDJdID0gMCwgZVt1ICsgOCA+PiAyXSA9IGwsIGEgPSB1ICsgOCB8IDAsIGVbdSArIDQ4ID4+IDJdID0gYSwgZyA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGVbYSA+PiAyXSwgIW8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBtNih1ICsgNCB8IDAsIG8pLCAobyB8IDApIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA+Pj4gMCA+IGcgLSBsID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSArIDQgfCAwLCBsID0gbCArIG8gfCAwLCBnID4+PiAwID4gbCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IDYxLCAobCB8IDApIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4xKEEsIDMyLCBCLCBsLCBzKSwgIWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gMCwgYSA9IGVbdSArIDQ4ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBlW2EgPj4gMl0sICFvIHx8IChnID0gdSArIDQgfCAwLCBvID0gbTYoZywgbyksIGggPSBvICsgaCB8IDAsIGggPj4+IDAgPiBsID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyMShBLCBnLCBvKSwgYSA9IGEgKyA0IHwgMCwgIShsID4+PiAwID4gaCA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuMShBLCAzMiwgQiwgbCwgcyBeIDgxOTIpLCBsID0gKGwgfCAwKSA8IChCIHwgMCkgPyBCIDogbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZyB8IDApIDwgMCAmIHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IDYxLCBsID0gbzJbdCB8IDBdKEEsIFEyW3UgKyA0OCA+PiAzXSwgQiwgZywgcywgbCkgfCAwLCAobCB8IDApID49IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gSVtsICsgMSB8IDBdLCBsID0gbCArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IDE7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gZVsobCA8PCAyKSArIGsgPj4gMl0sIEEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobDYoKGwgPDwgMykgKyBmIHwgMCwgQSwgciwgbiksIHcgPSAxLCBsID0gbCArIDEgfCAwLCAobCB8IDApICE9IDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID4+PiAwID49IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlWyhsIDw8IDIpICsgayA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IDEsIGwgPSBsICsgMSB8IDAsIChsIHwgMCkgPT0gMTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGW3UgKyAzOSB8IDBdID0gbCwgZyA9IDEsIG8gPSBELCBzID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gaCAtIG8gfCAwLCBnID0gKGEgfCAwKSA8IChnIHwgMCkgPyBnIDogYSwgKGcgfCAwKSA+IChjIF4gMjE0NzQ4MzY0NykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IDYxLCBpID0gZyArIGMgfCAwLCBsID0gKGkgfCAwKSA8IChCIHwgMCkgPyBCIDogaSwgKEUgfCAwKSA8IChsIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuMShBLCAzMiwgbCwgaSwgcyksIHIxKEEsIEgsIGMpLCBuMShBLCA0OCwgbCwgaSwgcyBeIDY1NTM2KSwgbjEoQSwgNDgsIGcsIGEsIDApLCByMShBLCBvLCBhKSwgbjEoQSwgMzIsIGwsIGksIHMgXiA4MTkyKSwgaSA9IGVbdSArIDYwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgdyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBoID0gNjE7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVsxMjQ4NV0gPSBoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdyA9IC0xOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IHUgLSAtNjQgfCAwLCB3OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIExBKEEsIGksIHIsIGYsIGssIHQpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSAraSwgciA9IHIgfCAwLCBmID0gZiB8IDAsIGsgPSBrIHwgMCwgdCA9IHQgfCAwOwogICAgICAgICAgICAgIHZhciBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMCwgRCA9IDAsIFUgPSAwOwogICAgICAgICAgICAgIHMgPSBYIC0gNTYwIHwgMCwgWCA9IHMsIGVbcyArIDQ0ID4+IDJdID0gMCwgZzEoK2kpLCBsID0gVzAoMSkgfCAwLCBXMCgwKSB8IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChsIHwgMCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgIEMgPSAxLCBIID0gMTExMSwgaSA9IC1pLCBnMSgraSksIGwgPSBXMCgxKSB8IDAsIFcwKDApIHwgMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChrICYgMjA0OCkgewogICAgICAgICAgICAgICAgICBDID0gMSwgSCA9IDExMTQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBDID0gayAmIDEsIEggPSBDID8gMTExNyA6IDExMTIsIEUgPSAhQzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChsICYgMjE0NjQzNTA3MikgPT0gMjE0NjQzNTA3MikgewogICAgICAgICAgICAgICAgICBsID0gQyArIDMgfCAwLCBuMShBLCAzMiwgciwgbCwgayAmIC02NTUzNyksIHIxKEEsIEgsIEMpLCBmID0gdCAmIDMyLCByMShBLCBpICE9IGkgPyBmID8gMTc3MyA6IDI0MjkgOiBmID8gMjAyNiA6IDI0MzMsIDMpLCBuMShBLCAzMiwgciwgbCwgayBeIDgxOTIpLCBnID0gKHIgfCAwKSA+IChsIHwgMCkgPyByIDogbDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHkgPSBzICsgMTYgfCAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBENihpLCBzICsgNDQgfCAwKSwgaSA9IGkgKyBpLCBpICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW3MgKyA0NCA+PiAyXSwgZVtzICsgNDQgPj4gMl0gPSBsIC0gMSwgcCA9IHQgfCAzMiwgKHAgfCAwKSAhPSA5NykKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPSB0IHwgMzIsIChwIHwgMCkgPT0gOTcpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBoID0gZVtzICsgNDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBoID0gbCAtIDI5IHwgMCwgZVtzICsgNDQgPj4gMl0gPSBoLCBpID0gaSAqIDI2ODQzNTQ1NjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmb3IgKG8gPSAoZiB8IDApIDwgMCA/IDYgOiBmLCBjID0gKHMgKyA0OCB8IDApICsgKChoIHwgMCkgPj0gMCA/IDI4OCA6IDApIHwgMCwgbCA9IGM7IGkgPCA0Mjk0OTY3Mjk2ICYgaSA+PSAwID8gZiA9IH5+aSA+Pj4gMCA6IGYgPSAwLCBlW2wgPj4gMl0gPSBmLCBsID0gbCArIDQgfCAwLCBpID0gKGkgLSArKGYgPj4+IDApKSAqIDFlOSwgaSAhPSAwOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChoIHwgMCkgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgYSA9IGgsIG4gPSBsLCB1ID0gYzsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAodSA9IGMsIGEgPSBoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgYSA9IGEgPj4+IDAgPj0gMjkgPyAyOSA6IGEsIG4gPSBsIC0gNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID4+PiAwID4gbiA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHcgPSAwOyBmID0gZVtuID4+IDJdLCBCID0gYSAmIDMxLCBnID0gdywgKGEgJiA2MykgPj4+IDAgPj0gMzIgPyAodyA9IGYgPDwgQiwgZiA9IDApIDogKHcgPSAoMSA8PCBCKSAtIDEgJiBmID4+PiAzMiAtIEIsIGYgPSBmIDw8IEIpLCBnID0gZyArIGYgfCAwLCBCID0gdyArIEogfCAwLCBCID0gZiA+Pj4gMCA+IGcgPj4+IDAgPyBCICsgMSB8IDAgOiBCLCB3ID0gbjAoZywgQiwgMWU5LCAwKSwgRCA9IG4sIFUgPSBnIC0gZDAodywgcTIsIDFlOSwgMCkgfCAwLCBlW0QgPj4gMl0gPSBVLCBuID0gbiAtIDQgfCAwLCB1ID4+PiAwIDw9IG4gPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQiAmIGcgPj4+IDAgPCAxZTkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHUgLSA0IHwgMCwgZVt1ID4+IDJdID0gdzsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBuID0gbCwgdSA+Pj4gMCA8IG4gPj4+IDAgJiYgKGwgPSBuIC0gNCB8IDAsICFlW2wgPj4gMl0pOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtzICsgNDQgPj4gMl0gLSBhIHwgMCwgZVtzICsgNDQgPj4gMl0gPSBhLCBsID0gbiwgISgoYSB8IDApID4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoKGEgfCAwKSA8IDApCiAgICAgICAgICAgICAgICAgICAgZm9yIChtID0gKChvICsgMjUgPj4+IDApIC8gOSB8IDApICsgMSB8IDAsIEIgPSAocCB8IDApID09IDEwMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIGYgPSAwIC0gYSB8IDAsIGcgPSBmID4+PiAwID49IDkgPyA5IDogZjsKICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPj4+IDAgPD0gdSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAhZVt1ID4+IDJdIDw8IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEogPSAxZTkgPj4+IGcgfCAwLCB3ID0gLTEgPDwgZyBeIC0xLCBhID0gMCwgbCA9IHU7IGYgPSBlW2wgPj4gMl0sIGVbbCA+PiAyXSA9IChmID4+PiBnIHwgMCkgKyBhLCBhID0gWihKLCBmICYgdyksIGwgPSBsICsgNCB8IDAsIGwgPj4+IDAgPCBuID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9ICFlW3UgPj4gMl0gPDwgMiwgIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgZVtuID4+IDJdID0gYSwgbiA9IG4gKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZyArIGVbcyArIDQ0ID4+IDJdIHwgMCwgZVtzICsgNDQgPj4gMl0gPSBhLCB1ID0gbCArIHUgfCAwLCBmID0gQiA/IGMgOiB1LCBuID0gbiAtIGYgPj4gMiA+IChtIHwgMCkgPyBmICsgKG0gPDwgMikgfCAwIDogbiwgISgoYSB8IDApIDwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAobiA+Pj4gMCA8PSB1ID4+PiAwIHx8IChhID0gWihjIC0gdSA+PiAyLCA5KSwgbCA9IDEwLCBmID0gZVt1ID4+IDJdLCBmID4+PiAwIDwgMTApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgYSA9IGEgKyAxIHwgMCwgbCA9IFoobCwgMTApLCBmID4+PiAwID49IGwgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZiA9IChvIC0gKChwIHwgMCkgIT0gMTAyID8gYSA6IDApIHwgMCkgLSAoKHAgfCAwKSA9PSAxMDMgJiAobyB8IDApICE9IDApIHwgMCwgKGYgfCAwKSA8IChaKG4gLSBjID4+IDIsIDkpIC0gOSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSAocyArIDQ4IHwgMCkgKyAoKGggfCAwKSA8IDAgPyAtNDA5MiA6IC0zODA0KSB8IDAsIGggPSBmICsgOTIxNiB8IDAsIGYgPSAoaCB8IDApIC8gOSB8IDAsIGcgPSBsICsgKGYgPDwgMikgfCAwLCBsID0gMTAsIGYgPSBoIC0gWihmLCA5KSB8IDAsIChmIHwgMCkgPD0gNykKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gWihsLCAxMCksIGYgPSBmICsgMSB8IDAsIChmIHwgMCkgIT0gODsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaCA9IGVbZyA+PiAyXSwgbSA9IChoID4+PiAwKSAvIChsID4+PiAwKSB8IDAsIHcgPSBoIC0gWihsLCBtKSB8IDAsIGYgPSBnICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgaWYgKCF3ICYgKGYgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShtICYgMSkgJiYgKGkgPSA5MDA3MTk5MjU0NzQwOTkyLCAhKEZbZyAtIDQgfCAwXSAmIDEpIHwgKChsIHwgMCkgIT0gMWU5IHwgdSA+Pj4gMCA+PSBnID4+PiAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDkwMDcxOTkyNTQ3NDA5OTQ7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAodiA9IChmIHwgMCkgPT0gKG4gfCAwKSA/IDEgOiAxLjUsIGYgPSBsID4+PiAxIHwgMCwgdiA9IGYgPj4+IDAgPiB3ID4+PiAwID8gMC41IDogKGYgfCAwKSA9PSAodyB8IDApID8gdiA6IDEuNSwgSVtIIHwgMF0gIT0gNDUgfCBFIHx8ICh2ID0gLXYsIGkgPSAtaSksIGYgPSBoIC0gdyB8IDAsIGVbZyA+PiAyXSA9IGYsIGkgKyB2ID09IGkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGYgKyBsIHwgMCwgZVtnID4+IDJdID0gZiwgZiA+Pj4gMCA+PSAxZTkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2cgPj4gMl0gPSAwLCBnID0gZyAtIDQgfCAwLCBnID4+PiAwIDwgdSA+Pj4gMCAmJiAodSA9IHUgLSA0IHwgMCwgZVt1ID4+IDJdID0gMCksIGYgPSBlW2cgPj4gMl0gKyAxIHwgMCwgZVtnID4+IDJdID0gZiwgZiA+Pj4gMCA+IDk5OTk5OTk5OTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gWihjIC0gdSA+PiAyLCA5KSwgbCA9IDEwLCBmID0gZVt1ID4+IDJdLCBmID4+PiAwIDwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgYSA9IGEgKyAxIHwgMCwgbCA9IFoobCwgMTApLCBmID4+PiAwID49IGwgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmID0gZyArIDQgfCAwLCBuID0gZiA+Pj4gMCA8IG4gPj4+IDAgPyBmIDogbjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmb3IgKDsgaCA9IG4sIHcgPSBuID4+PiAwIDw9IHUgPj4+IDAsICF3ICYmIChuID0gbiAtIDQgfCAwLCAhZVtuID4+IDJdKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmICgocCB8IDApICE9IDEwMykgewogICAgICAgICAgICAgICAgICAgICAgQiA9IGsgJiA4OwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBvIHx8IDEsIGYgPSAobCB8IDApID4gKGEgfCAwKSAmIChhIHwgMCkgPiAtNSwgbyA9IChmID8gYSBeIC0xIDogLTEpICsgbCB8IDAsIHQgPSAoZiA/IC0xIDogLTIpICsgdCB8IDAsIEIgPSBrICYgOCwgQikKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgbiA9IC05OwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICh3IHx8ICh3ID0gZVtoIC0gNCA+PiAyXSwgIXcpIHx8IChmID0gMTAsIG4gPSAwLCAodyA+Pj4gMCkgJSAxMCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGwgPSBuLCBuID0gbiArIDEgfCAwLCBmID0gWihmLCAxMCksICEoKHcgPj4+IDApICUgKGYgPj4+IDApIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgbiA9IGwgXiAtMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBaKGggLSBjID4+IDIsIDkpLCAodCAmIC0zMykgPT0gNzApIHsKICAgICAgICAgICAgICAgICAgICAgIEIgPSAwLCBmID0gKGYgKyBuIHwgMCkgLSA5IHwgMCwgZiA9IChmIHwgMCkgPiAwID8gZiA6IDAsIG8gPSAoZiB8IDApID4gKG8gfCAwKSA/IG8gOiBmOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgQiA9IDAsIGYgPSAoKGYgKyBhIHwgMCkgKyBuIHwgMCkgLSA5IHwgMCwgZiA9IChmIHwgMCkgPiAwID8gZiA6IDAsIG8gPSAoZiB8IDApID4gKG8gfCAwKSA/IG8gOiBmOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChnID0gLTEsIHcgPSBvIHwgQiwgKCh3ID8gMjE0NzQ4MzY0NSA6IDIxNDc0ODM2NDYpIHwgMCkgPCAobyB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIEogPSAoKCh3IHwgMCkgIT0gMCkgKyBvIHwgMCkgKyAxIHwgMCwgbCA9IHQgJiAtMzM7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoKGwgfCAwKSA9PSA3MCkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKChKIF4gMjE0NzQ4MzY0NykgPCAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgbiA9IChhIHwgMCkgPiAwID8gYSA6IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGEgPj4gMzEsIG4gPSBtZSgoZiBeIGEpIC0gZiB8IDAsIDAsIHkpLCAoeSAtIG4gfCAwKSA8PSAxKQogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4gPSBuIC0gMSB8IDAsIEZbbiB8IDBdID0gNDgsICh5IC0gbiB8IDApIDwgMjsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaWYgKG0gPSBuIC0gMiB8IDAsIEZbbSB8IDBdID0gdCwgRltuIC0gMSB8IDBdID0gKGEgfCAwKSA8IDAgPyA0NSA6IDQzLCBuID0geSAtIG0gfCAwLCAobiB8IDApID4gKEogXiAyMTQ3NDgzNjQ3KSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGYgPSBuICsgSiB8IDAsIChmIHwgMCkgPiAoQyBeIDIxNDc0ODM2NDcpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGEgPSBmICsgQyB8IDAsIG4xKEEsIDMyLCByLCBhLCBrKSwgcjEoQSwgSCwgQyksIG4xKEEsIDQ4LCByLCBhLCBrIF4gNjU1MzYpOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgfCAwKSA9PSA3MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IHMgKyAxNiB8IDksIHQgPSB1ID4+PiAwID4gYyA+Pj4gMCA/IGMgOiB1LCB1ID0gdDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBtZShlW3UgPj4gMl0sIDAsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSAhPSAodSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgKyAxNiA+Pj4gMCA+PSBuID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbiA9IG4gLSAxIHwgMCwgRltuIHwgMF0gPSA0OCwgcyArIDE2ID4+PiAwIDwgbiA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgIT0gKGwgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbiAtIDEgfCAwLCBGW24gfCAwXSA9IDQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIxKEEsIG4sIGwgLSBuIHwgMCksIHUgPSB1ICsgNCB8IDAsICEoYyA+Pj4gMCA+PSB1ID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ICYmIHIxKEEsIDMzOTIsIDEpLCAobyB8IDApIDw9IDAgfCB1ID4+PiAwID49IGggPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBtZShlW3UgPj4gMl0sIDAsIGwpLCBuID4+PiAwID4gcyArIDE2ID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbiA9IG4gLSAxIHwgMCwgRltuIHwgMF0gPSA0OCwgcyArIDE2ID4+PiAwIDwgbiA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyMShBLCBuLCAobyB8IDApID49IDkgPyA5IDogbyksIG4gPSBvIC0gOSB8IDAsIHUgPSB1ICsgNCB8IDAsIGggPj4+IDAgPD0gdSA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gKG8gfCAwKSA+IDksIG8gPSBuLCAhZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobyB8IDApIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gdSA+Pj4gMCA8IGggPj4+IDAgPyBoIDogdSArIDQgfCAwLCBoID0gcyArIDE2IHwgOSwgbCA9IHU7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbWUoZVtsID4+IDJdLCAwLCBoKSwgKGggfCAwKSA9PSAobiB8IDApICYmIChuID0gbiAtIDEgfCAwLCBGW24gfCAwXSA9IDQ4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsIHwgMCkgIT0gKHUgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzICsgMTYgPj4+IDAgPj0gbiA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4gPSBuIC0gMSB8IDAsIEZbbiB8IDBdID0gNDgsIHMgKyAxNiA+Pj4gMCA8IG4gPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyMShBLCBuLCAxKSwgbiA9IG4gKyAxIHwgMCwgIShvIHwgQikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjEoQSwgMzM5MiwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGggLSBuIHwgMCwgcjEoQSwgbiwgKGYgfCAwKSA8IChvIHwgMCkgPyBmIDogbyksIG8gPSBvIC0gZiB8IDAsIGwgPSBsICsgNCB8IDAsIHQgPj4+IDAgPD0gbCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKChvIHwgMCkgPj0gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBuMShBLCA0OCwgbyArIDE4IHwgMCwgMTgsIDApLCByMShBLCBtLCB5IC0gbSB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgbiA9IG87CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4xKEEsIDQ4LCBuICsgOSB8IDAsIDksIDApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIG4xKEEsIDMyLCByLCBhLCBrIF4gODE5MiksIGcgPSAociB8IDApID4gKGEgfCAwKSA/IHIgOiBhOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbyA9ICh0IDw8IDI2ID4+IDMxICYgOSkgKyBIIHwgMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGYgPj4+IDAgPiAxMSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBmb3IgKG4gPSAxMiAtIGYgfCAwLCB2ID0gMTY7IHYgPSB2ICogMTYsIG4gPSBuIC0gMSB8IDAsICEhbjsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgaWYgKElbbyB8IDBdID09IDQ1KSB7CiAgICAgICAgICAgICAgICAgICAgaSA9IC0odiArICgtaSAtIHYpKTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGkgPSBpICsgdiAtIHY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKGwgPSBlW3MgKyA0NCA+PiAyXSwgbiA9IGwgPj4gMzEsIG4gPSBtZSgobiBeIGwpIC0gbiB8IDAsIDAsIHkpLCAoeSB8IDApID09IChuIHwgMCkgJiYgKG4gPSBuIC0gMSB8IDAsIEZbbiB8IDBdID0gNDgsIGwgPSBlW3MgKyA0NCA+PiAyXSksIGMgPSBDIHwgMiwgdSA9IHQgJiAzMiwgaCA9IG4gLSAyIHwgMCwgRltoIHwgMF0gPSB0ICsgMTUsIEZbbiAtIDEgfCAwXSA9IChsIHwgMCkgPCAwID8gNDUgOiA0MywgbiA9ICEoayAmIDgpICYgKGYgfCAwKSA8PSAwLCBsID0gcyArIDE2IHwgMDsgdCA9IGwsIFIyKGkpIDwgMjE0NzQ4MzY0OCA/IGEgPSB+fmkgOiBhID0gLTIxNDc0ODM2NDgsIEZbbCB8IDBdID0gdSB8IElbYSArIDQ4MzY4IHwgMF0sIGkgPSAoaSAtICsoYSB8IDApKSAqIDE2LCBsID0gdCArIDEgfCAwLCBuICYgaSA9PSAwIHwgKGwgLSAocyArIDE2IHwgMCkgfCAwKSAhPSAxIHx8IChGW3QgKyAxIHwgMF0gPSA0NiwgbCA9IHQgKyAyIHwgMCksIGkgIT0gMDsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAoZyA9IC0xLCBuID0geSAtIGggfCAwLCB0ID0gbiArIGMgfCAwLCAoMjE0NzQ4MzY0NSAtIHQgfCAwKSA8IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBhID0gdCwgdCA9IHMgKyAxNiB8IDAsIHUgPSBsIC0gdCB8IDAsIGYgPSBmICYmICh1IC0gMiB8IDApIDwgKGYgfCAwKSA/IGYgKyAyIHwgMCA6IHUsIGwgPSBhICsgZiB8IDAsIG4xKEEsIDMyLCByLCBsLCBrKSwgcjEoQSwgbywgYyksIG4xKEEsIDQ4LCByLCBsLCBrIF4gNjU1MzYpLCByMShBLCB0LCB1KSwgbjEoQSwgNDgsIGYgLSB1IHwgMCwgMCwgMCksIHIxKEEsIGgsIG4pLCBuMShBLCAzMiwgciwgbCwgayBeIDgxOTIpLCBnID0gKHIgfCAwKSA+IChsIHwgMCkgPyByIDogbDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBzICsgNTYwIHwgMCwgZyB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gT0EoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDA7CiAgICAgICAgICAgICAgdCA9IFggLSAxNjAgfCAwLCBYID0gdDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8PSAzNSkgewogICAgICAgICAgICAgICAgICByID0gMCwgUShmLCAxLCAxMDAzNiwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAzNiB8IDAsIGwgPSAociA+Pj4gMCkgLyAzIHwgMCwgKFoobCwgMykgfCAwKSAhPSAociB8IDApKSB7CiAgICAgICAgICAgICAgICAgIHIgPSAwLCBRKGYsIDEsIDEwMDM2LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHUgPSBlW0EgKyA3MiA+PiAyXSwgciA9IHQgKyAxNTYgfCAwLCBoMihpLCByLCAyKSwgdTJbQSArIDgwID4+IDFdID0gZVt0ICsgMTU2ID4+IDJdLCBoMihpICsgMiB8IDAsIHUgKyA4IHwgMCwgNCksIGgyKGkgKyA2IHwgMCwgdSArIDEyIHwgMCwgNCksIGgyKGkgKyAxMCB8IDAsIHUsIDQpLCBoMihpICsgMTQgfCAwLCB1ICsgNCB8IDAsIDQpLCBoMihpICsgMTggfCAwLCBBICsgOTIgfCAwLCA0KSwgaDIoaSArIDIyIHwgMCwgQSArIDk2IHwgMCwgNCksIGgyKGkgKyAyNiB8IDAsIEEgKyA4NCB8IDAsIDQpLCBoMihpICsgMzAgfCAwLCBBICsgODggfCAwLCA0KSwgaDIoaSArIDM0IHwgMCwgciwgMik7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbdCArIDE1NiA+PiAyXSwgciA+Pj4gMCA8PSAxNjM4NCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt1ICsgMTYgPj4gMl0gPSByLCAociB8IDApICE9IChsIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW3QgKyAxMzIgPj4gMl0gPSBsLCBlW3QgKyAxMjggPj4gMl0gPSByLCBRKGYsIDEsIDI2NTIxLCB0ICsgMTI4IHwgMCksIHIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW3UgKyA0ID4+IDJdLCBuID0gZVt1ICsgMTIgPj4gMl0sIGcgPSBlW3UgKyA4ID4+IDJdLCBrID0gZVt1ID4+IDJdLCAhKHIgPj4+IDAgPCBuID4+PiAwICYgZyA+Pj4gMCA+IGsgPj4+IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0ICsgMTIwID4+IDJdID0gbiAtIHIsIGVbdCArIDEyNCA+PiAyXSA9IDAgLSAociA+Pj4gMCA+IG4gPj4+IDApLCBlW3QgKyAxMTIgPj4gMl0gPSBnIC0gaywgZVt0ICsgMTE2ID4+IDJdID0gMCAtIChrID4+PiAwID4gZyA+Pj4gMCksIFEoZiwgMSwgMjYwODMsIHQgKyAxMTIgfCAwKSwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbQSArIDkyID4+IDJdLCBvID0gZVtBICsgOTYgPj4gMl0sICEobyAmJiBhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGVbdCArIDQgPj4gMl0gPSBvLCBlW3QgPj4gMl0gPSBhLCBRKGYsIDEsIDI3MDg5LCB0KSwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGVbQSArIDg0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4+PiAwID4gayA+Pj4gMCB8fCAoYSA9IGEgKyBoIHwgMCwgayA+Pj4gMCA+PSAoYSA+Pj4gMCA8IGggPj4+IDAgPyAtMSA6IGEpID4+PiAwKSB8fCAoYSA9IGVbQSArIDg4ID4+IDJdLCBhID4+PiAwID4gciA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGEgKyBvIHwgMCwgciA+Pj4gMCA8IChhID4+PiAwID4gbyA+Pj4gMCA/IC0xIDogbykgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwLCBRKGYsIDEsIDQ3NjEsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyAyMjQgPj4gMl0gfHwgKGEgPSBlW0EgKyAyMTYgPj4gMl0sICFhKSB8fCAobyA9IGVbQSArIDIyMCA+PiAyXSwgIW8pIHx8IChrID0gZyAtIGsgfCAwLCByID0gbiAtIHIgfCAwLCAoayB8IDApID09IChhIHwgMCkgJiAociB8IDApID09IChvIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW3QgKyAxMDggPj4gMl0gPSByLCBlW3QgKyAxMDQgPj4gMl0gPSBrLCBlW3QgKyAxMDAgPj4gMl0gPSBvLCBlW3QgKyA5NiA+PiAyXSA9IGEsIFEoZiwgMSwgMjUzNjEsIHQgKyA5NiB8IDApLCByID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gRTIobCwgNTIpLCBlW3UgKyAyNCA+PiAyXSA9IGssICFrKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbdSArIDE2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHQgKyAxNTIgfCAwLCBoMihpICsgMzYgfCAwLCByLCAxKSwgbCA9IGVbdCArIDE1MiA+PiAyXSwgbyA9IGwgPj4+IDcgfCAwLCBlW2sgKyAzMiA+PiAyXSA9IG8sIGggPSAobCAmIDEyNykgKyAxIHwgMCwgZVtrICsgMjQgPj4gMl0gPSBoLCBnID0gZVtBICsgMjI0ID4+IDJdLCBoMihpICsgMzcgfCAwLCByLCAxKSwgZVtrID4+IDJdID0gZVt0ICsgMTUyID4+IDJdLCBoMihpICsgMzggfCAwLCByLCAxKSwgbiA9IGVbdCArIDE1MiA+PiAyXSwgZVtrICsgNCA+PiAyXSA9IG4sIHIgPSAwLCBhID0gZVtrID4+IDJdLCBhIC0gMjU2ID4+PiAwIDwgNDI5NDk2NzA0MSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IDAsIG4gLSAyNTYgPj4+IDAgPCA0Mjk0OTY3MDQxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbayArIDI0ID4+IDJdLCBuID4+PiAwID4gMzEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2sgKyAzNiA+PiAyXSA9IDAsIGVbayArIDQwID4+IDJdID0gZVtBICsgMTYwID4+IDJdLCBsID0gMSwgZFt1ICsgMTYgPj4gMl0gPD0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gZyA/IDAgOiBvLCBnID0gZyA/IDAgOiBoLCBpID0gaSArIDM5IHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoMihpLCB0ICsgMTUyIHwgMCwgMSksIGEgPSBlW3QgKyAxNTIgPj4gMl0sIG4gPSBhID4+PiA3IHwgMCwgZVtrICsgODQgPj4gMl0gPSBuLCBhID0gKGEgJiAxMjcpICsgMSB8IDAsIGVbayArIDc2ID4+IDJdID0gYSwgKGEgfCAwKSA9PSAoZyB8IDApICYgKG4gfCAwKSA9PSAobyB8IDApIHwgKGVbQSArIDIyNCA+PiAyXSB8IElbQSArIDE4OCB8IDBdICYgNCkgfHwgKGVbdCArIDg0ID4+IDJdID0gbiwgZVt0ICsgODAgPj4gMl0gPSBhLCBlW3QgKyA3NiA+PiAyXSA9IGwsIGVbdCArIDcyID4+IDJdID0gbywgZVt0ICsgNjggPj4gMl0gPSBnLCBlW3QgKyA2NCA+PiAyXSA9IGwsIFEoZiwgMiwgMjYzMTksIHQgLSAtNjQgfCAwKSksIG4gPSB0ICsgMTUyIHwgMCwgaDIoaSArIDEgfCAwLCBuLCAxKSwgZVtrICsgNTIgPj4gMl0gPSBlW3QgKyAxNTIgPj4gMl0sIGgyKGkgKyAyIHwgMCwgbiwgMSksIG4gPSBlW3QgKyAxNTIgPj4gMl0sIGVbayArIDU2ID4+IDJdID0gbiwgYSA9IGVbayArIDUyID4+IDJdLCBhIC0gMjU2ID4+PiAwIDwgNDI5NDk2NzA0MSB8IG4gLSAyNTYgPj4+IDAgPD0gNDI5NDk2NzA0MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gZVtrICsgNzYgPj4gMl0sIG4gPj4+IDAgPj0gMzIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgKyAzIHwgMCwgZVtrICsgODggPj4gMl0gPSAwLCBlW2sgKyA5MiA+PiAyXSA9IGVbQSArIDE2MCA+PiAyXSwgayA9IGsgKyA1MiB8IDAsIGwgPSBsICsgMSB8IDAsICEobCA+Pj4gMCA8IGRbdSArIDE2ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gMCwgbCA9IGVbQSArIDkyID4+IDJdLCAhbCB8fCAobiA9IGVbQSArIDk2ID4+IDJdLCAhbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGwgLSAxIHwgMCwgaCA9IGVbQSArIDg0ID4+IDJdLCBrID0gZVt1ICsgOCA+PiAyXSAtIGggfCAwLCBhID0gaywgaSA9IGcgKyBrIHwgMCwgdyA9IGwgPj4gMzEsIHYgPSB3IC0gIWwgfCAwLCBrID0gdiArIChrID4+IDMxKSB8IDAsIGkgPSB6MChpLCBpID4+PiAwIDwgYSA+Pj4gMCA/IGsgKyAxIHwgMCA6IGssIGwsIHcpLCBlW0EgKyAxMDQgPj4gMl0gPSBpLCBhID0gbiAtIDEgfCAwLCBCID0gZVtBICsgODggPj4gMl0sIGsgPSBlW3UgKyAxMiA+PiAyXSAtIEIgfCAwLCBDID0gaywgbyA9IGEgKyBrIHwgMCwgYyA9IG4gPj4gMzEsIHMgPSBjIC0gIW4gfCAwLCBrID0gcyArIChrID4+IDMxKSB8IDAsIGsgPSB6MChvLCBvID4+PiAwIDwgQyA+Pj4gMCA/IGsgKyAxIHwgMCA6IGssIG4sIGMpLCBlW0EgKyAxMDggPj4gMl0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIWkgfCAhaykgJiYgaSA+Pj4gMCA8PSA2NTUzNSAvIChrID4+PiAwKSA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0ICsgMjAgPj4gMl0gPSBrLCBlW3QgKyAxNiA+PiAyXSA9IGksIFEoZiwgMSwgMjU0NzUsIHQgKyAxNiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFooaSwgayk7CiAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSVtBICsgNjggfCAwXSAmIDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDI4ID4+IDJdID0gKGVbQSArIDI4ID4+IDJdIC0gaCA+Pj4gMCkgLyAobCA+Pj4gMCksIGVbQSArIDMyID4+IDJdID0gKGVbQSArIDMyID4+IDJdIC0gQiA+Pj4gMCkgLyAobiA+Pj4gMCksIGkgPSBnLCBrID0gZVtBICsgMzYgPj4gMl0gLSBoIHwgMCwgZyA9IGssIGkgPSBpICsgayB8IDAsIGsgPSAoayA+PiAzMSkgKyB2IHwgMCwgcCA9IEEsIEggPSB6MChpLCBpID4+PiAwIDwgZyA+Pj4gMCA/IGsgKyAxIHwgMCA6IGssIGwsIHcpLCBlW3AgKyAzNiA+PiAyXSA9IEgsIGsgPSBlW0EgKyA0MCA+PiAyXSAtIEIgfCAwLCBsID0gaywgaSA9IGsgKyBhIHwgMCwgayA9IChrID4+IDMxKSArIHMgfCAwLCBwID0gQSwgSCA9IHowKGksIGkgPj4+IDAgPCBsID4+PiAwID8gayArIDEgfCAwIDogaywgbiwgYyksIGVbcCArIDQwID4+IDJdID0gSDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDQwID4+IDJdID0gaywgZVtBICsgMzYgPj4gMl0gPSBpLCBlW0EgKyAyOCA+PiAyXSA9IDAsIGVbQSArIDMyID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IEUyKG8sIDU2NDQpLCBlW0EgKyAxNTYgPj4gMl0gPSBpLCAhaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjQ4NCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IEUyKGVbdSArIDE2ID4+IDJdLCAxMDgwKSwgZVtlW0EgKyAxMiA+PiAyXSArIDU1ODQgPj4gMl0gPSBpLCAhZVtlW0EgKyAxMiA+PiAyXSArIDU1ODQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDY0ODQsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBFMigxMCwgMjApLCBlW2VbQSArIDEyID4+IDJdICsgNTYxNiA+PiAyXSA9IGksIGkgPSBlW0EgKyAxMiA+PiAyXSwgIWVbaSArIDU2MTYgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDY0ODQsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDU2MjQgPj4gMl0gPSAxMCwgaSA9IEUyKDEwLCAyMCksIGVbZVtBICsgMTIgPj4gMl0gKyA1NjI4ID4+IDJdID0gaSwgaSA9IGVbQSArIDEyID4+IDJdLCAhZVtpICsgNTYyOCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjQ4NCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA1NjM2ID4+IDJdID0gMTAsIGsgPSBlW3UgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW3UgKyAyNCA+PiAyXSwgaSA9IDAsIChrIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IGsgJiAtMjsgZyA9IGwgKyBaKGksIDUyKSB8IDAsIGVbZyArIDMyID4+IDJdIHx8IChlWyhlW2VbQSArIDEyID4+IDJdICsgNTU4NCA+PiAyXSArIFooaSwgMTA4MCkgfCAwKSArIDEwNzYgPj4gMl0gPSAxIDw8IGVbZyArIDI0ID4+IDJdIC0gMSksIGcgPSBpIHwgMSwgYSA9IGwgKyBaKGcsIDUyKSB8IDAsIGVbYSArIDMyID4+IDJdIHx8IChlWyhlW2VbQSArIDEyID4+IDJdICsgNTU4NCA+PiAyXSArIFooZywgMTA4MCkgfCAwKSArIDEwNzYgPj4gMl0gPSAxIDw8IGVbYSArIDI0ID4+IDJdIC0gMSksIGkgPSBpICsgMiB8IDAsIHIgPSByICsgMiB8IDAsIChuIHwgMCkgIT0gKHIgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoayAmIDEpIHx8IChyID0gbCArIFooaSwgNTIpIHwgMCwgZVtyICsgMzIgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBlWyhlW2VbQSArIDEyID4+IDJdICsgNTU4NCA+PiAyXSArIFooaSwgMTA4MCkgfCAwKSArIDEwNzYgPj4gMl0gPSAxIDw8IGVbciArIDI0ID4+IDJdIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobykKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBlW0EgKyAxNTYgPj4gMl0sIHIgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBFMihlW3UgKyAxNiA+PiAyXSwgMTA4MCksIGVbaSArIDU1ODQgPj4gMl0gPSBrLCAhaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMCwgUShmLCAxLCA2NDg0LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSArIDU2NDQgfCAwLCByID0gciArIDEgfCAwLCAobyB8IDApID09IChyIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gPSA0LCBtID0gZVt1ICsgMTYgPj4gMl0sIG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gZVtBICsgODggPj4gMl0sIGYgPSBlW0EgKyA5NiA+PiAyXSwgciA9IGkgKyBaKGYsIGVbQSArIDEwOCA+PiAyXSAtIDEgfCAwKSB8IDAsIGYgPSByICsgZiB8IDAsIHIgPSByID4+PiAwID4gZiA+Pj4gMCA/IC0xIDogZiwgZiA9IGVbdSArIDEyID4+IDJdLCByID0gciA+Pj4gMCA8IGYgPj4+IDAgPyByIDogZiwgZyA9IHIgLSAxIHwgMCwgbyA9IDAgLSAhciB8IDAsIHIgPSBlW0EgKyA4NCA+PiAyXSwgZiA9IGVbQSArIDkyID4+IDJdLCBBID0gciArIFooZiwgZVtBICsgMTA0ID4+IDJdIC0gMSB8IDApIHwgMCwgZiA9IEEgKyBmIHwgMCwgQSA9IEEgPj4+IDAgPiBmID4+PiAwID8gLTEgOiBmLCBmID0gZVt1ICsgOCA+PiAyXSwgQSA9IEEgPj4+IDAgPCBmID4+PiAwID8gQSA6IGYsIGEgPSBBIC0gMSB8IDAsIGggPSAwIC0gIUEgfCAwLCBBID0gZVt1ICsgNCA+PiAyXSwgaSA9IEEgPj4+IDAgPCBpID4+PiAwID8gaSA6IEEsIHcgPSBpIC0gMSB8IDAsIEIgPSAwIC0gIWkgfCAwLCBBID0gZVt1ID4+IDJdLCBpID0gQSA+Pj4gMCA8IHIgPj4+IDAgPyByIDogQSwgYyA9IGkgLSAxIHwgMCwgdiA9IDAgLSAhaSB8IDAsIEEgPSBlW3UgKyAyNCA+PiAyXSwgaSA9IDA7IGsgPSBCLCBmID0gZVtBICsgNCA+PiAyXSwgciA9IGYgKyB3IHwgMCwgdSA9IG4wKHIsIHIgPj4+IDAgPCBmID4+PiAwID8gayArIDEgfCAwIDogaywgZiwgMCksIGVbQSArIDIwID4+IDJdID0gdSwgayA9IHYsIGwgPSBlW0EgPj4gMl0sIHIgPSBsICsgYyB8IDAsIEMgPSBuMChyLCByID4+PiAwIDwgbCA+Pj4gMCA/IGsgKyAxIHwgMCA6IGssIGwsIDApLCBlW0EgKyAxNiA+PiAyXSA9IEMsIHIgPSBlW0EgKyA0MCA+PiAyXSwgbiA9IHIgJiAzMSwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyAoayA9IC0xIDw8IG4sIHMgPSAwKSA6IChzID0gLTEgPDwgbiwgayA9IHMgfCAoMSA8PCBuKSAtIDEgJiAtMSA+Pj4gMzIgLSBuKSwgbiA9IHMgXiAtMSwgayA9IGsgXiAtMSwgcyA9IGssIGsgPSBvLCB5ID0gZiArIGcgfCAwLCBrID0geSA+Pj4gMCA8IGcgPj4+IDAgPyBrICsgMSB8IDAgOiBrLCBrID0gbjAoeSwgaywgZiwgMCkgLSB1IHwgMCwgZiA9IHMsIHUgPSBrLCBrID0gayArIG4gfCAwLCBmID0gdSA+Pj4gMCA+IGsgPj4+IDAgPyBmICsgMSB8IDAgOiBmLCB1ID0gaywgayA9IHIgJiAzMSwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyBmID0gZiA+Pj4gayB8IDAgOiBmID0gKCgxIDw8IGspIC0gMSAmIGYpIDw8IDMyIC0gayB8IHUgPj4+IGssIGVbQSArIDEyID4+IDJdID0gZiwgayA9IGgsIGYgPSBsICsgYSB8IDAsIGsgPSBmID4+PiAwIDwgYSA+Pj4gMCA/IGsgKyAxIHwgMCA6IGssIGYgPSBuMChmLCBrLCBsLCAwKSAtIEMgfCAwLCBrID0gcywgZiA9IGYgKyBuIHwgMCwgayA9IGYgPj4+IDAgPCBuID4+PiAwID8gayArIDEgfCAwIDogaywgbCA9IGYsIGYgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gciA9IGsgPj4+IGYgfCAwIDogciA9ICgoMSA8PCBmKSAtIDEgJiBrKSA8PCAzMiAtIGYgfCBsID4+PiBmLCBlW0EgKyA4ID4+IDJdID0gciwgQSA9IEEgKyA1MiB8IDAsIGkgPSBpICsgMSB8IDAsIChtIHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICByID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbdCArIDE0NCA+PiAyXSA9IHIsIFEoZiwgMSwgMTc2OTEsIHQgKyAxNDQgfCAwKSwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByID0gMCwgZVt1ICsgMTYgPj4gMl0gPSAwLCBRKGYsIDEsIDY0ODQsIDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVt0ICsgNTIgPj4gMl0gPSBuLCBlW3QgKyA0OCA+PiAyXSA9IGwsIFEoZiwgMSwgMjczOTcsIHQgKyA0OCB8IDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVt0ICsgNDAgPj4gMl0gPSBuLCBlW3QgKyAzNiA+PiAyXSA9IGEsIGVbdCArIDMyID4+IDJdID0gbCwgUShmLCAxLCAyNTY5NSwgdCArIDMyIHwgMCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gdCArIDE2MCB8IDAsIHIgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHhlKEEsIGksIHIsIGYsIGssIHQsIG4sIGwsIGEsIHUsIG8sIGcsIGgpIHsKICAgICAgICAgICAgICB2YXIgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMCwgRCA9IDAsIFUgPSAwLCBQID0gMCwgeCA9IDAsIHogPSAwLCBqID0gMCwgTyA9IDAsIHEgPSAwLCBmMiA9IDAsIG4yID0gMCwgZzIgPSAwLCB3MiA9IDAsIGMyID0gMCwgbTIgPSAwLCBwMiA9IDAsIFkyID0gMCwgWDIgPSAwLCBEMiA9IDAsIFMyID0gMCwgUDIgPSAwLCB4MiA9IDAsIHoyID0gMDsKICAgICAgICAgICAgICB5ID0gWCAtIDE2IHwgMCwgWCA9IHksIEMgPSBlW0EgKyA0ID4+IDJdLCBnMiA9IGVbQyArIDc2ID4+IDJdICsgWihpLCA1NjQ0KSB8IDAsIEQgPSBlW0EgPj4gMl0sIHcyID0gMSwgdzIgPSBlW0MgKyA4MCA+PiAyXSA/IGVbRCArIDE2ID4+IDJdIDogdzIsIFAyID0gRzJbQyA+PiAxXSwgeDIgPSBlW2cyICsgNDIwID4+IDJdLCBVID0gZywgYzIgPSBoLCBnID0gMCwgYyA9IFggLSAzMiB8IDAsIFggPSBjLCBKID0gaSwgcDIgPSBlW0MgKyA3NiA+PiAyXSArIFooaSwgNTY0NCkgfCAwLCBZMiA9IGVbcDIgKyA0MjAgPj4gMl0sIG0gPSBlW0QgKyAxNiA+PiAyXSwgcCA9IFUyKFoobSwgNTI4KSk7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpID0gVTIobSA8PCAyKTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICAgICAgaSA9IHA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IG42KEQsIGVbQyArIDc2ID4+IDJdLCBKLCBjMiksIEEpIHsKICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gcCwgbSA+Pj4gMCA+PSA4KQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobTIgPSBtICYgLTg7IHcgPSAodiA8PCAyKSArIGkgfCAwLCBlW3cgPj4gMl0gPSBoLCBlW3cgKyA0ID4+IDJdID0gaCArIDUyOCwgZVt3ICsgOCA+PiAyXSA9IGggKyAxMDU2LCBlW3cgKyAxMiA+PiAyXSA9IGggKyAxNTg0LCBlW3cgKyAxNiA+PiAyXSA9IGggKyAyMTEyLCBlW3cgKyAyMCA+PiAyXSA9IGggKyAyNjQwLCBlW3cgKyAyNCA+PiAyXSA9IGggKyAzMTY4LCBlW3cgKyAyOCA+PiAyXSA9IGggKyAzNjk2LCB2ID0gdiArIDggfCAwLCBoID0gaCArIDQyMjQgfCAwLCBCID0gQiArIDggfCAwLCAobTIgfCAwKSAhPSAoQiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gbSAmIDcsICF3KQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyh2IDw8IDIpICsgaSA+PiAyXSA9IGgsIHYgPSB2ICsgMSB8IDAsIGggPSBoICsgNTI4IHwgMCwgcyA9IHMgKyAxIHwgMCwgKHcgfCAwKSAhPSAocyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKEUgPSBZMiArIDEgfCAwLCB0cihELCBDLCBKLCBjICsgMjAgfCAwLCBjICsgMTYgfCAwLCBjICsgMTIgfCAwLCBjICsgOCB8IDAsIGMgKyA0IHwgMCwgYywgYyArIDI0IHwgMCwgYyArIDI4IHwgMCwgaSksIFMyID0gZVtjICsgMjggPj4gMl0sIFAgPSBlW2MgKyAyNCA+PiAyXSwgRltBIHwgMF0gPSBGW0MgKyAxMDAgfCAwXSAmIDEsIFgyID0gWihtLCBQKSwgRDIgPSBaKFgyLCBTMiksIGggPSBaKEQyLCBlW3AyICsgOCA+PiAyXSksIGVbQSArIDggPj4gMl0gPSBoLCBoID0gRTIoaCwgMiksIGVbQSArIDQgPj4gMl0gPSBoLCAhaCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUihwKSwgUihpKSwgaSA9IGVbQSArIDQgPj4gMl0sIGkgJiYgKFIoaSksIGVbQSArIDQgPj4gMl0gPSAwKSwgIUUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gQTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IDAsIEIgPSBBOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtCICsgMjAwID4+IDJdLCBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IDAsIHYgPSBlW0IgKyAxOTYgPj4gMl0sIHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPSBlW2ggKyAxMiA+PiAyXSwgaSAmJiAoUihpKSwgZVtoICsgMTIgPj4gMl0gPSAwLCB2ID0gZVtCICsgMTk2ID4+IDJdKSwgaCA9IGggKyAxNiB8IDAsIHMgPSBzICsgMSB8IDAsIHYgPj4+IDAgPiBzID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZVtCICsgMjAwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUihoKSwgZVtCICsgMjAwID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBCICsgMjQwIHwgMCwgaSA9ICh3IHwgMCkgPT0gKFkyIHwgMCksIHcgPSB3ICsgMSB8IDAsICEhaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBBOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKG0yID0gZVtEICsgMjQgPj4gMl0sIHggPSBlW2MgKyAyMCA+PiAyXSwgZVtBICsgMjA0ID4+IDJdID0geCwgeiA9IGVbYyArIDEyID4+IDJdLCBlW0EgKyAyMDggPj4gMl0gPSB6LCBqID0gZVtjICsgMTYgPj4gMl0sIGVbQSArIDIxMiA+PiAyXSA9IGosIE8gPSBlW2MgKyA4ID4+IDJdLCBlW0EgKyAyMTYgPj4gMl0gPSBPLCBxID0gZVtjICsgNCA+PiAyXSwgZVtBICsgMjI4ID4+IDJdID0gcSwgZjIgPSBlW2MgPj4gMl0sIGVbQSArIDIzMiA+PiAyXSA9IGYyLCBlW0EgKyAxMiA+PiAyXSA9IEQyLCBlW0EgKyAxNiA+PiAyXSA9IFgyLCBlW0EgKyAyMCA+PiAyXSA9IFAsIGVbQSArIDI0ID4+IDJdID0gMSwgbSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChCID0gZVtBICsgMjAwID4+IDJdLCB3ID0gbTI7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGVbKEggPDwgMikgKyBpID4+IDJdLCBlW0IgPj4gMl0gPSBlW3cgPj4gMl0sIGVbQiArIDQgPj4gMl0gPSBlW3cgKyA0ID4+IDJdLCBnID0gZVtCICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IGVbQiArIDEyID4+IDJdLCAoZyB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobjIgPSBnICYgLTIsIHYgPSAwOyBlW3MgPj4gMl0gPSBlW2ggPj4gMl0sIGVbcyArIDQgPj4gMl0gPSBlW2ggKyA0ID4+IDJdLCBlW3MgKyA4ID4+IDJdID0gZVtoICsgOCA+PiAyXSwgZVtzICsgMTIgPj4gMl0gPSBlW2ggKyAxMiA+PiAyXSwgZVtzICsgMTYgPj4gMl0gPSBlW2ggKyAxNiA+PiAyXSwgZVtzICsgMjAgPj4gMl0gPSBlW2ggKyAyMCA+PiAyXSwgZVtzICsgMjQgPj4gMl0gPSBlW2ggKyAyNCA+PiAyXSwgZVtzICsgMjggPj4gMl0gPSBlW2ggKyAyOCA+PiAyXSwgcyA9IHMgKyAzMiB8IDAsIGggPSBoICsgMzIgfCAwLCB2ID0gdiArIDIgfCAwLCAobjIgfCAwKSAhPSAodiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZyAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtzID4+IDJdID0gZVtoID4+IDJdLCBlW3MgKyA0ID4+IDJdID0gZVtoICsgNCA+PiAyXSwgZVtzICsgOCA+PiAyXSA9IGVbaCArIDggPj4gMl0sIGVbcyArIDEyID4+IDJdID0gZVtoICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gdyArIDUyIHwgMCwgQiA9IEIgKyAxNiB8IDAsIEggPSBIICsgMSB8IDAsIChIIHwgMCkgPT0gKG0gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAobjIgPSAxLCBFID4+PiAwID4gMSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gQTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtnICsgNDcyID4+IDJdID0gZjIsIGVbZyArIDQ2OCA+PiAyXSA9IHEsIGVbZyArIDQ1NiA+PiAyXSA9IE8sIGVbZyArIDQ1MiA+PiAyXSA9IGosIGVbZyArIDQ0OCA+PiAyXSA9IHosIGVbZyArIDQ0NCA+PiAyXSA9IHgsIGVbZyArIDI2NCA+PiAyXSA9IDEsIGVbZyArIDI2MCA+PiAyXSA9IFAsIGVbZyArIDI1NiA+PiAyXSA9IFgyLCBlW2cgKyAyNTIgPj4gMl0gPSBEMiwgbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQiA9IGVbZyArIDQ0MCA+PiAyXSwgSCA9IDAsIHcgPSBtMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGVbKEggPDwgMikgKyBpID4+IDJdLCBlW0IgPj4gMl0gPSBlW3cgPj4gMl0sIGVbQiArIDQgPj4gMl0gPSBlW3cgKyA0ID4+IDJdLCBFID0gZVtCICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBlW0IgKyAxMiA+PiAyXSwgKEUgfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh6MiA9IEUgJiAtMiwgdiA9IDA7IGVbcyA+PiAyXSA9IGVbaCA+PiAyXSwgZVtzICsgNCA+PiAyXSA9IGVbaCArIDQgPj4gMl0sIGVbcyArIDggPj4gMl0gPSBlW2ggKyA4ID4+IDJdLCBlW3MgKyAxMiA+PiAyXSA9IGVbaCArIDEyID4+IDJdLCBlW3MgKyAxNiA+PiAyXSA9IGVbaCArIDE2ID4+IDJdLCBlW3MgKyAyMCA+PiAyXSA9IGVbaCArIDIwID4+IDJdLCBlW3MgKyAyNCA+PiAyXSA9IGVbaCArIDI0ID4+IDJdLCBlW3MgKyAyOCA+PiAyXSA9IGVbaCArIDI4ID4+IDJdLCBzID0gcyArIDMyIHwgMCwgaCA9IGggKyAzMiB8IDAsIHYgPSB2ICsgMiB8IDAsICh6MiB8IDApICE9ICh2IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKEUgJiAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtzID4+IDJdID0gZVtoID4+IDJdLCBlW3MgKyA0ID4+IDJdID0gZVtoICsgNCA+PiAyXSwgZVtzICsgOCA+PiAyXSA9IGVbaCArIDggPj4gMl0sIGVbcyArIDEyID4+IDJdID0gZVtoICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSB3ICsgNTIgfCAwLCBCID0gQiArIDE2IHwgMCwgSCA9IEggKyAxIHwgMCwgKEggfCAwKSA9PSAobSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtnICsgOCA+PiAyXSwgZVtnICsgMjQ0ID4+IDJdID0gZVtnICsgNCA+PiAyXSwgZVtnICsgMjQ4ID4+IDJdID0gaCwgaCA9IChuMiB8IDApICE9IChZMiB8IDApLCBnID0gZyArIDI0MCB8IDAsIG4yID0gbjIgKyAxIHwgMCwgIWgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKFIocCksIFIoaSksICEoSVtwMiArIDU2NDAgfCAwXSAmIDQpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgaSA9IEcyW0MgPj4gMV07CiAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAwID49IDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKFUgfCAwKSA9PSAxIHwgaSA+Pj4gMCA8IDcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChVIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW0MgKyA3NiA+PiAyXSArIFooSiwgNTY0NCkgfCAwLCBlW2kgKyA0OTIgPj4gMl0gPSAwLCBlW2kgKyA1NDQgPj4gMl0gPSBmMiwgZVtpICsgNTQwID4+IDJdID0gcSwgZVtpICsgNTM2ID4+IDJdID0gTywgZVtpICsgNTMyID4+IDJdID0geiwgZVtpICsgNTI4ID4+IDJdID0gaiwgZVtpICsgNTI0ID4+IDJdID0geCwgZVtpICsgNTIwID4+IDJdID0gUCwgZVtpICsgNTA0ID4+IDJdID0gMCwgZVtpICsgNTE2ID4+IDJdID0gZVtpICsgNDQwID4+IDJdLCBnID0gZVtpICsgNDI4ID4+IDJdLCBlW2kgKyA0OTYgPj4gMl0gPSBlW2kgKyA0MjQgPj4gMl0sIGVbaSArIDUwMCA+PiAyXSA9IGcsIGcgPSBlW2kgKyA0MzYgPj4gMl0sIGVbaSArIDUwOCA+PiAyXSA9IGVbaSArIDQzMiA+PiAyXSwgZVtpICsgNTEyID4+IDJdID0gZywgZVtpICsgNDYwID4+IDJdID0gZVtpICsgNDU2ID4+IDJdLCBnID0gZVtpICsgNDIwID4+IDJdLCBnIC0gMSA+Pj4gMCA+IDQyOTQ5NjcyOTMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IEE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGggPSBpICsgNTcyIHwgMCwgcyA9IDE7IGVbaCArIDgwID4+IDJdID0gMCwgZVtoICsgMTIwID4+IDJdID0gZjIsIGVbaCArIDExNiA+PiAyXSA9IHEsIGVbaCArIDExMiA+PiAyXSA9IE8sIGVbaCArIDEwOCA+PiAyXSA9IHosIGVbaCArIDEwNCA+PiAyXSA9IGosIGVbaCArIDEwMCA+PiAyXSA9IHgsIGVbaCArIDk2ID4+IDJdID0gUCwgaSA9IGVbaCArIDQgPj4gMl0sIGVbaCArIDcyID4+IDJdID0gZVtoID4+IDJdLCBlW2ggKyA3NiA+PiAyXSA9IGksIGkgPSBlW2ggKyAxNiA+PiAyXSwgZVtoICsgODggPj4gMl0gPSBlW2ggKyAxMiA+PiAyXSwgZVtoICsgOTIgPj4gMl0gPSBpLCBpID0gZVtoICsgOCA+PiAyXSwgZVtoICsgODQgPj4gMl0gPSBpLCBlW2ggKyAzNiA+PiAyXSA9IGVbaCArIDMyID4+IDJdLCBlW2ggKyA2OCA+PiAyXSA9IGkgPj4+IDAgPiBkW2ggKyAtNjQgPj4gMl0gPyBpIDogMCwgaCA9IGggKyAxNDggfCAwLCBpID0gKGcgfCAwKSA9PSAocyB8IDApLCBzID0gcyArIDEgfCAwLCAhaTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBnID0gQTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIFIocCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgUihpKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpID0gZVtDICsgNzYgPj4gMl0gKyBaKEosIDU2NDQpIHwgMCwgZyA9IGVbaSArIDQyMCA+PiAyXSwgKGcgfCAwKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICBnID0gQTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoaCA9IGkgKyA0MjQgfCAwLCB3ID0gZVtpICsgNCA+PiAyXSwgaSA9IGVbaSArIDggPj4gMl0sIHMgPSAwOyBlW2ggKyA5MiA+PiAyXSA9IG0sIGVbaCArIDc2ID4+IDJdID0gMCwgZVtoICsgODAgPj4gMl0gPSAwLCBlW2ggKyA4OCA+PiAyXSA9IFMyLCBlW2ggKyA4NCA+PiAyXSA9IGksIGVbaCArIDY4ID4+IDJdID0gMCwgZVtoICsgNzIgPj4gMl0gPSAwLCBlW2ggKyAxMjAgPj4gMl0gPSBmMiwgZVtoICsgMTE2ID4+IDJdID0gcSwgZVtoICsgMTEyID4+IDJdID0gTywgZVtoICsgMTA4ID4+IDJdID0geiwgZVtoICsgMTA0ID4+IDJdID0gaiwgZVtoICsgMTAwID4+IDJdID0geCwgZVtoICsgOTYgPj4gMl0gPSBQLCBlW2ggKyAzNiA+PiAyXSA9IHcsIGggPSBoICsgMTQ4IHwgMCwgcCA9IChnIHwgMCkgPT0gKHMgfCAwKSwgcyA9IHMgKyAxIHwgMCwgIXA7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgZyA9IEE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFggPSBjICsgMzIgfCAwLCBpID0gZzsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgICAgdyA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoID0geDIgKyAxIHwgMCwgdyA9IDAsIGVbdCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIVUpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmICghdzIpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSAwLCBwID0gKFAyIHwgMCkgPT0gNDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gMSwgbCA9IDAsIHcgPSAwLCBBID0gaTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRzQoaSwgQywgSiwgdywgbywgdSwgMCksIGVbQSArIDg0ID4+IDJdID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZShBKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFtBICsgNDAgPj4gMl0gPCBmID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSAwLCBlW3kgKyAxMiA+PiAyXSA9IDAsICFrcihyLCBnMiwgQSwgaywgeSArIDEyIHwgMCwgbiwgMCwgYzIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZVt5ICsgMTIgPj4gMl0sIGVbdCA+PiAyXSA9IGEgKyBlW3QgPj4gMl0sIG4gPSBuIC0gYSB8IDAsIGwgPSBsICsgYSB8IDAsIGsgPSBrICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsZShBKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbQyArIDgwID4+IDJdLCAhKCFhIHwgbCA+Pj4gMCA8PSBhID4+PiAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IEEgKyAyNDAgfCAwLCBhID0gZyAmIHAsIHcgPSAxLCBnID0gMCwgIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IG8gKyAxIHwgMCwgKHcyIHwgMCkgPT0gKG8gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChHNChpLCBDLCBKLCBvLCBhLCB1LCBVKSwgQSA9IGkgKyBaKG8sIDI0MCkgfCAwLCBlW0EgKyA4NCA+PiAyXSA9PSAtMSB8fCAhKCFsIHwgIWVbbCA+PiAyXSkgJiYgKGEgPSBVMihkNihELCBDLCBKKSA8PCAyKSwgZVtsICsgOCA+PiAyXSA9IGEsICFhKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsZShBKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsKQogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW0EgKyA0MCA+PiAyXSA8IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IDAsIGVbeSArIDEyID4+IDJdID0gMCwgIWtyKHIsIGcyLCBBLCBrLCB5ICsgMTIgfCAwLCBuLCBVLCBjMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlW3kgKyAxMiA+PiAyXSwgZVt0ID4+IDJdID0gbCArIGVbdCA+PiAyXSwgZVtyICsgODQwID4+IDJdID0gZVtyICsgODQwID4+IDJdICsgMSwgbiA9IG4gLSBsIHwgMCwgayA9IGsgKyBsIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IDEsICFsZShBKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGRbQSArIDQwID4+IDJdIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt5ICsgMTIgPj4gMl0gPSAwLCAha3IociwgZzIsIEEsIGssIHkgKyAxMiB8IDAsIG4sIFUsIGMyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBhID0gZVt5ICsgMTIgPj4gMl0sIGVbdCA+PiAyXSA9IGEgKyBlW3QgPj4gMl0sIGVbbCA+PiAyXSAmJiAoZVtlW2wgKyA4ID4+IDJdICsgKGVbbCArIDQgPj4gMl0gPDwgMikgPj4gMl0gPSBhLCBlW2wgKyA0ID4+IDJdID0gZVtsICsgNCA+PiAyXSArIDEpLCBuID0gbiAtIGEgfCAwLCBlW3IgKyA4NDAgPj4gMl0gPSBlW3IgKyA4NDAgPj4gMl0gKyAxLCBrID0gayArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKCFsZShBKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHcgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQ2koaSwgaCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0geSArIDE2IHwgMCwgdzsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBfQShBLCBpLCByLCBmLCBrLCB0KSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBrID0gayB8IDAsIHQgPSB0IHwgMDsKICAgICAgICAgICAgICB2YXIgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gMCwgQyA9IDAsIG0gPSAwLCB5ID0gMCwgcCA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIHAgPSAoKGYgfCAwKSAhPSAwKSArIHIgfCAwLCBjID0gcCA+Pj4gMSB8IDAsIHcgPSByIC0gYyB8IDA7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSAhPSA4KSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSA3IC0gdCB8IDAsIHYgPSAoKG4gPj4+IDAgPD0gNyA/IG4gOiAwKSA8PCAyKSArIDQgfCAwLCBtID0gdCAmIC00LCBvID0gdCAmIDMsIHkgPSAodCA8PCAyKSArIGkgfCAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA9IEIgPDwgNSwgYSA9IGcgKyBpIHwgMCwgbCA9IChaKGssIEIpIDw8IDIpICsgQSB8IDAsIG4gPSAwLCBzID0gMCwgdCA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB1ID0gbiA8PCAyLCBlW3UgKyBhID4+IDJdID0gZVtsICsgdSA+PiAyXSwgQyA9IHUgfCA0LCBlW0MgKyBhID4+IDJdID0gZVtsICsgQyA+PiAyXSwgdSA9IHUgfCA4LCBlW3UgKyBhID4+IDJdID0gZVtsICsgdSA+PiAyXSwgdSA9IG4gfCAzLCBDID0gdSA8PCAyLCBlW0MgKyBhID4+IDJdID0gZVtsICsgQyA+PiAyXSwgbiA9IG4gKyA0IHwgMCwgcyA9IHMgKyA0IHwgMCwgKG0gfCAwKSAhPSAocyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gMCwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdSA9IG4gPDwgMiwgZVt1ICsgYSA+PiAyXSA9IGVbbCArIHUgPj4gMl0sIHUgPSBuLCBuID0gbiArIDEgfCAwLCBzID0gcyArIDEgfCAwLCAobyB8IDApICE9IChzIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPj4+IDAgPD0gNiAmJiBkMihnICsgeSB8IDAsIDAsIHYpLCBCID0gQiArIDEgfCAwLCAoQiB8IDApID09IChyIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGZvciAocyA9IHIgJiAtMiwgQiA9IHIgJiAxOyBhID0gKFooaywgbikgPDwgMikgKyBBIHwgMCwgbyA9IGVbYSArIDQgPj4gMl0sIGwgPSAobiA8PCA1KSArIGkgfCAwLCBlW2wgPj4gMl0gPSBlW2EgPj4gMl0sIGVbbCArIDQgPj4gMl0gPSBvLCBvID0gZVthICsgMjggPj4gMl0sIGVbbCArIDI0ID4+IDJdID0gZVthICsgMjQgPj4gMl0sIGVbbCArIDI4ID4+IDJdID0gbywgbyA9IGVbYSArIDIwID4+IDJdLCBlW2wgKyAxNiA+PiAyXSA9IGVbYSArIDE2ID4+IDJdLCBlW2wgKyAyMCA+PiAyXSA9IG8sIG8gPSBlW2EgKyAxMiA+PiAyXSwgZVtsICsgOCA+PiAyXSA9IGVbYSArIDggPj4gMl0sIGVbbCArIDEyID4+IDJdID0gbywgYSA9IG4gfCAxLCBsID0gKGEgPDwgNSkgKyBpIHwgMCwgYSA9IChaKGssIGEpIDw8IDIpICsgQSB8IDAsIG8gPSBlW2EgKyAyOCA+PiAyXSwgZVtsICsgMjQgPj4gMl0gPSBlW2EgKyAyNCA+PiAyXSwgZVtsICsgMjggPj4gMl0gPSBvLCBvID0gZVthICsgMjAgPj4gMl0sIGVbbCArIDE2ID4+IDJdID0gZVthICsgMTYgPj4gMl0sIGVbbCArIDIwID4+IDJdID0gbywgbyA9IGVbYSArIDEyID4+IDJdLCBlW2wgKyA4ID4+IDJdID0gZVthICsgOCA+PiAyXSwgZVtsICsgMTIgPj4gMl0gPSBvLCBvID0gZVthICsgNCA+PiAyXSwgZVtsID4+IDJdID0gZVthID4+IDJdLCBlW2wgKyA0ID4+IDJdID0gbywgbiA9IG4gKyAyIHwgMCwgdSA9IHUgKyAyIHwgMCwgKHMgfCAwKSAhPSAodSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFCKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBhID0gKG4gPDwgNSkgKyBpIHwgMCwgbiA9IChaKGssIG4pIDw8IDIpICsgQSB8IDAsIGwgPSBlW24gKyA0ID4+IDJdLCBlW2EgPj4gMl0gPSBlW24gPj4gMl0sIGVbYSArIDQgPj4gMl0gPSBsLCBsID0gZVtuICsgMjggPj4gMl0sIGVbYSArIDI0ID4+IDJdID0gZVtuICsgMjQgPj4gMl0sIGVbYSArIDI4ID4+IDJdID0gbCwgbCA9IGVbbiArIDIwID4+IDJdLCBlW2EgKyAxNiA+PiAyXSA9IGVbbiArIDE2ID4+IDJdLCBlW2EgKyAyMCA+PiAyXSA9IGwsIGwgPSBlW24gKyAxMiA+PiAyXSwgZVthICsgOCA+PiAyXSA9IGVbbiArIDggPj4gMl0sIGVbYSArIDEyID4+IDJdID0gbDsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGQyKGksIDAsIHIgPDwgNSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYSA9IDAsIHMgPSAhZiwgbCA9IChzIDw8IDUpICsgaSB8IDAsIHUgPSAoZiB8IDApICE9IDAsIG4gPSAodSA8PCA1KSArIGkgfCAwLCBCID0gbiArIDMyIHwgMCwgdSA9IGMgLSB1IHwgMCwgdSA9ICh1IHwgMCkgPiAodyB8IDApID8gdyA6IHUsIGhpKGwsIEIsIHcsIHUsIFcoLTEuNTg2MTM0MzE0NTM3MDQ4MykpLCBvID0gbCArIDMyIHwgMCwgdiA9IHcgLSBzIHwgMCwgdiA9IChjIHwgMCkgPCAodiB8IDApID8gYyA6IHYsIGhpKG4sIG8sIGMsIHYsIFcoLTAuMDUyOTgwMTE3NDk5ODI4MzQpKSwgaGkobCwgQiwgdywgdSwgVygwLjg4MjkxMTA4NjA4MjQ1ODUpKSwgaGkobiwgbywgYywgdiwgVygwLjQ0MzUwNjg2NjY5MzQ5NjcpKSwgdykKICAgICAgICAgICAgICAgICAgZm9yIChCID0gbiArIDI4IHwgMCwgbyA9IG4gKyAyNCB8IDAsIHYgPSBuICsgMjAgfCAwLCBtID0gbiArIDE2IHwgMCwgeSA9IG4gKyAxMiB8IDAsIGcgPSBuICsgOCB8IDAsIEMgPSBuICsgNCB8IDA7IHUgPSBhIDw8IDYsIGggPSB1ICsgbiB8IDAsIEdbaCA+PiAyXSA9IEdbaCA+PiAyXSAqIFcoMS4yMzAxNzQwNjQ2MzYyMzA1KSwgaCA9IHUgKyBDIHwgMCwgR1toID4+IDJdID0gR1toID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpLCBoID0gdSArIGcgfCAwLCBHW2ggPj4gMl0gPSBHW2ggPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIGggPSB1ICsgeSB8IDAsIEdbaCA+PiAyXSA9IEdbaCA+PiAyXSAqIFcoMS4yMzAxNzQwNjQ2MzYyMzA1KSwgaCA9IHUgKyBtIHwgMCwgR1toID4+IDJdID0gR1toID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpLCBoID0gdSArIHYgfCAwLCBHW2ggPj4gMl0gPSBHW2ggPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIGggPSB1ICsgbyB8IDAsIEdbaCA+PiAyXSA9IEdbaCA+PiAyXSAqIFcoMS4yMzAxNzQwNjQ2MzYyMzA1KSwgdSA9IHUgKyBCIHwgMCwgR1t1ID4+IDJdID0gR1t1ID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpLCBhID0gYSArIDEgfCAwLCAodyB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwID4+PiAwID49IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSBsICsgMjggfCAwLCBCID0gbCArIDI0IHwgMCwgbyA9IGwgKyAyMCB8IDAsIHAgPSBsICsgMTYgfCAwLCB2ID0gbCArIDEyIHwgMCwgbSA9IGwgKyA4IHwgMCwgeSA9IGwgKyA0IHwgMCwgYSA9IDA7IG4gPSBhIDw8IDYsIGcgPSBuICsgbCB8IDAsIEdbZyA+PiAyXSA9IEdbZyA+PiAyXSAqIFcoMC44MTI4OTMwOTI2MzIyOTM3KSwgZyA9IG4gKyB5IHwgMCwgR1tnID4+IDJdID0gR1tnID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpLCBnID0gbiArIG0gfCAwLCBHW2cgPj4gMl0gPSBHW2cgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIGcgPSBuICsgdiB8IDAsIEdbZyA+PiAyXSA9IEdbZyA+PiAyXSAqIFcoMC44MTI4OTMwOTI2MzIyOTM3KSwgZyA9IG4gKyBwIHwgMCwgR1tnID4+IDJdID0gR1tnID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpLCBnID0gbiArIG8gfCAwLCBHW2cgPj4gMl0gPSBHW2cgPj4gMl0gKiBXKDAuODEyODkzMDkyNjMyMjkzNyksIGcgPSBuICsgQiB8IDAsIEdbZyA+PiAyXSA9IEdbZyA+PiAyXSAqIFcoMC44MTI4OTMwOTI2MzIyOTM3KSwgbiA9IG4gKyB1IHwgMCwgR1tuID4+IDJdID0gR1tuID4+IDJdICogVygwLjgxMjg5MzA5MjYzMjI5MzcpLCBhID0gYSArIDEgfCAwLCAoYyB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSAhPSA4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGMgLSAxIHwgMCwgdSA9IDAsIGYgPSAoZiB8IDApICE9IDAsIHMgPSBjICYgMywgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGMsIG4gPSBBOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0IHwgMCkgIT0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBzID0gKChmIHwgMCkgIT0gMCkgPDwgMzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGZvciAoQiA9IGsgPDwgMiwgYSA9IGMsIG4gPSBBOyBvID0gZVtsICsgNCA+PiAyXSwgZVtuID4+IDJdID0gZVtsID4+IDJdLCBlW24gKyA0ID4+IDJdID0gbywgbyA9IGVbbCArIDI4ID4+IDJdLCBlW24gKyAyNCA+PiAyXSA9IGVbbCArIDI0ID4+IDJdLCBlW24gKyAyOCA+PiAyXSA9IG8sIG8gPSBlW2wgKyAyMCA+PiAyXSwgZVtuICsgMTYgPj4gMl0gPSBlW2wgKyAxNiA+PiAyXSwgZVtuICsgMjAgPj4gMl0gPSBvLCBvID0gZVtsICsgMTIgPj4gMl0sIGVbbiArIDggPj4gMl0gPSBlW2wgKyA4ID4+IDJdLCBlW24gKyAxMiA+PiAyXSA9IG8sIGwgPSBsIC0gLTY0IHwgMCwgYSA9IGEgLSAxIHwgMCwgbiA9IG4gKyBCIHwgMCwgdSA9IHUgKyAxIHwgMCwgKHMgfCAwKSAhPSAodSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBmIDw8IDMsIHQgPj4+IDAgPCAzKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBrIDw8IDI7IGYgPSBlW2wgKyA0ID4+IDJdLCBlW24gPj4gMl0gPSBlW2wgPj4gMl0sIGVbbiArIDQgPj4gMl0gPSBmLCBmID0gZVtsICsgMjggPj4gMl0sIGVbbiArIDI0ID4+IDJdID0gZVtsICsgMjQgPj4gMl0sIGVbbiArIDI4ID4+IDJdID0gZiwgZiA9IGVbbCArIDIwID4+IDJdLCBlW24gKyAxNiA+PiAyXSA9IGVbbCArIDE2ID4+IDJdLCBlW24gKyAyMCA+PiAyXSA9IGYsIGYgPSBlW2wgKyAxMiA+PiAyXSwgZVtuICsgOCA+PiAyXSA9IGVbbCArIDggPj4gMl0sIGVbbiArIDEyID4+IDJdID0gZiwgZiA9IHQgKyBuIHwgMCwgbiA9IGVbbCArIDkyID4+IDJdLCBlW2YgKyAyNCA+PiAyXSA9IGVbbCArIDg4ID4+IDJdLCBlW2YgKyAyOCA+PiAyXSA9IG4sIG4gPSBlW2wgKyA4NCA+PiAyXSwgZVtmICsgMTYgPj4gMl0gPSBlW2wgKyA4MCA+PiAyXSwgZVtmICsgMjAgPj4gMl0gPSBuLCBuID0gZVtsICsgNzYgPj4gMl0sIGVbZiArIDggPj4gMl0gPSBlW2wgKyA3MiA+PiAyXSwgZVtmICsgMTIgPj4gMl0gPSBuLCBuID0gZVtsICsgNjggPj4gMl0sIGVbZiA+PiAyXSA9IGVbbCArIDY0ID4+IDJdLCBlW2YgKyA0ID4+IDJdID0gbiwgbiA9IGVbbCArIDE1NiA+PiAyXSwgZiA9IGYgKyB0IHwgMCwgZVtmICsgMjQgPj4gMl0gPSBlW2wgKyAxNTIgPj4gMl0sIGVbZiArIDI4ID4+IDJdID0gbiwgbiA9IGVbbCArIDE0OCA+PiAyXSwgZVtmICsgMTYgPj4gMl0gPSBlW2wgKyAxNDQgPj4gMl0sIGVbZiArIDIwID4+IDJdID0gbiwgbiA9IGVbbCArIDE0MCA+PiAyXSwgZVtmICsgOCA+PiAyXSA9IGVbbCArIDEzNiA+PiAyXSwgZVtmICsgMTIgPj4gMl0gPSBuLCBuID0gZVtsICsgMTMyID4+IDJdLCBlW2YgPj4gMl0gPSBlW2wgKyAxMjggPj4gMl0sIGVbZiArIDQgPj4gMl0gPSBuLCBuID0gZVtsICsgMjIwID4+IDJdLCBmID0gZiArIHQgfCAwLCBlW2YgKyAyNCA+PiAyXSA9IGVbbCArIDIxNiA+PiAyXSwgZVtmICsgMjggPj4gMl0gPSBuLCBuID0gZVtsICsgMjEyID4+IDJdLCBlW2YgKyAxNiA+PiAyXSA9IGVbbCArIDIwOCA+PiAyXSwgZVtmICsgMjAgPj4gMl0gPSBuLCBuID0gZVtsICsgMjA0ID4+IDJdLCBlW2YgKyA4ID4+IDJdID0gZVtsICsgMjAwID4+IDJdLCBlW2YgKyAxMiA+PiAyXSA9IG4sIG4gPSBlW2wgKyAxOTYgPj4gMl0sIGVbZiA+PiAyXSA9IGVbbCArIDE5MiA+PiAyXSwgZVtmICsgNCA+PiAyXSA9IG4sIG4gPSBmICsgdCB8IDAsIGwgPSBsICsgMjU2IHwgMCwgYSA9IGEgLSA0IHwgMCwgISFhOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCF3KQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGlmIChuID0gKHMgPDwgMikgKyBpIHwgMCwgbCA9IChaKGssIGMpIDw8IDIpICsgQSB8IDAsIEEgPSB3ICYgMywgQSkKICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAwLCBpID0gayA8PCAyOyBmID0gZVtuICsgNCA+PiAyXSwgZVtsID4+IDJdID0gZVtuID4+IDJdLCBlW2wgKyA0ID4+IDJdID0gZiwgZiA9IGVbbiArIDI4ID4+IDJdLCBlW2wgKyAyNCA+PiAyXSA9IGVbbiArIDI0ID4+IDJdLCBlW2wgKyAyOCA+PiAyXSA9IGYsIGYgPSBlW24gKyAyMCA+PiAyXSwgZVtsICsgMTYgPj4gMl0gPSBlW24gKyAxNiA+PiAyXSwgZVtsICsgMjAgPj4gMl0gPSBmLCBmID0gZVtuICsgMTIgPj4gMl0sIGVbbCArIDggPj4gMl0gPSBlW24gKyA4ID4+IDJdLCBlW2wgKyAxMiA+PiAyXSA9IGYsIG4gPSBuIC0gLTY0IHwgMCwgdyA9IHcgLSAxIHwgMCwgbCA9IGkgKyBsIHwgMCwgYSA9IGEgKyAxIHwgMCwgKEEgfCAwKSAhPSAoYSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmIChjIC0gciA+Pj4gMCA+IDQyOTQ5NjcyOTIpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZm9yIChpID0gayA8PCAyOyBBID0gZVtuICsgNCA+PiAyXSwgZVtsID4+IDJdID0gZVtuID4+IDJdLCBlW2wgKyA0ID4+IDJdID0gQSwgQSA9IGVbbiArIDI4ID4+IDJdLCBlW2wgKyAyNCA+PiAyXSA9IGVbbiArIDI0ID4+IDJdLCBlW2wgKyAyOCA+PiAyXSA9IEEsIEEgPSBlW24gKyAyMCA+PiAyXSwgZVtsICsgMTYgPj4gMl0gPSBlW24gKyAxNiA+PiAyXSwgZVtsICsgMjAgPj4gMl0gPSBBLCBBID0gZVtuICsgMTIgPj4gMl0sIGVbbCArIDggPj4gMl0gPSBlW24gKyA4ID4+IDJdLCBlW2wgKyAxMiA+PiAyXSA9IEEsIHIgPSBlW24gKyA5MiA+PiAyXSwgQSA9IGkgKyBsIHwgMCwgZVtBICsgMjQgPj4gMl0gPSBlW24gKyA4OCA+PiAyXSwgZVtBICsgMjggPj4gMl0gPSByLCByID0gZVtuICsgODQgPj4gMl0sIGVbQSArIDE2ID4+IDJdID0gZVtuICsgODAgPj4gMl0sIGVbQSArIDIwID4+IDJdID0gciwgciA9IGVbbiArIDc2ID4+IDJdLCBlW0EgKyA4ID4+IDJdID0gZVtuICsgNzIgPj4gMl0sIGVbQSArIDEyID4+IDJdID0gciwgciA9IGVbbiArIDY4ID4+IDJdLCBlW0EgPj4gMl0gPSBlW24gKyA2NCA+PiAyXSwgZVtBICsgNCA+PiAyXSA9IHIsIHIgPSBlW24gKyAxNTYgPj4gMl0sIEEgPSBBICsgaSB8IDAsIGVbQSArIDI0ID4+IDJdID0gZVtuICsgMTUyID4+IDJdLCBlW0EgKyAyOCA+PiAyXSA9IHIsIHIgPSBlW24gKyAxNDggPj4gMl0sIGVbQSArIDE2ID4+IDJdID0gZVtuICsgMTQ0ID4+IDJdLCBlW0EgKyAyMCA+PiAyXSA9IHIsIHIgPSBlW24gKyAxNDAgPj4gMl0sIGVbQSArIDggPj4gMl0gPSBlW24gKyAxMzYgPj4gMl0sIGVbQSArIDEyID4+IDJdID0gciwgciA9IGVbbiArIDEzMiA+PiAyXSwgZVtBID4+IDJdID0gZVtuICsgMTI4ID4+IDJdLCBlW0EgKyA0ID4+IDJdID0gciwgciA9IGVbbiArIDIyMCA+PiAyXSwgQSA9IEEgKyBpIHwgMCwgZVtBICsgMjQgPj4gMl0gPSBlW24gKyAyMTYgPj4gMl0sIGVbQSArIDI4ID4+IDJdID0gciwgciA9IGVbbiArIDIxMiA+PiAyXSwgZVtBICsgMTYgPj4gMl0gPSBlW24gKyAyMDggPj4gMl0sIGVbQSArIDIwID4+IDJdID0gciwgciA9IGVbbiArIDIwNCA+PiAyXSwgZVtBICsgOCA+PiAyXSA9IGVbbiArIDIwMCA+PiAyXSwgZVtBICsgMTIgPj4gMl0gPSByLCByID0gZVtuICsgMTk2ID4+IDJdLCBlW0EgPj4gMl0gPSBlW24gKyAxOTIgPj4gMl0sIGVbQSArIDQgPj4gMl0gPSByLCBsID0gQSArIGkgfCAwLCBuID0gbiArIDI1NiB8IDAsIHcgPSB3IC0gNCB8IDAsICEhdzsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF80KGksIEEsIHcsIGMsIGssIHMsIHQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBHZShBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDA7CiAgICAgICAgICAgICAgayA9IGVbQSArIDMyID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChrKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAobCA9IGVbQSArIDE2ID4+IDJdLCAobCB8IDApID4gNSkgewogICAgICAgICAgICAgICAgICAgIGsgPSBsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgciA9IGVbQSArIDIwID4+IDJdOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPj0gNSkgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtBID4+IDJdLCBrID0gZVtpID4+IDJdLCBlW0EgPj4gMl0gPSBpICsgNCwgYSA9IHIgLSA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICgociB8IDApIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgayA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAtMSwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBuID0gLTEsIHQgPSByIC0gMSB8IDAsIG8gPSB0ICYgMTsKICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgociB8IDApID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAwLCBmID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IHQgJiAtMiwgayA9IDAsIHQgPSBpLCBmID0gcjsgZVtBID4+IDJdID0gdCArIDEsIGcgPSBJW3QgfCAwXSwgaSA9IHQgKyAyIHwgMCwgZVtBID4+IDJdID0gaSwgZVtBICsgMjAgPj4gMl0gPSBmIC0gMSwgdCA9IElbdCArIDEgfCAwXSwgZiA9IGYgLSAyIHwgMCwgZVtBICsgMjAgPj4gMl0gPSBmLCBuID0gKCgyNTUgPDwgayBeIC0xKSAmIG4gfCBnIDw8IGspICYgKDY1MjgwIDw8IGsgXiAtMSkgfCB0IDw8IChrIHwgOCksIGsgPSBrICsgMTYgfCAwLCB0ID0gaSwgaCA9IGggKyAyIHwgMCwgKHUgfCAwKSAhPSAoaCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbyAmJiAodCA9IGkgKyAxIHwgMCwgZVtBID4+IDJdID0gdCwgaSA9IElbaSB8IDBdLCBlW0EgKyAyMCA+PiAyXSA9IGYgLSAxLCBuID0gKDI1NSA8PCBrIF4gLTEpICYgbiB8IGkgPDwgaywgaSA9IHQpLCByID0gKHIgPDwgMykgLSA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbQSA+PiAyXSA9IGkgKyAxLCBrID0gKDI1NSA8PCByIF4gLTEpICYgbiB8IChJW2kgfCAwXSB8IDE1KSA8PCByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlW0EgKyAyMCA+PiAyXSA9IGE7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyAyNCA+PiAyXSwgciA9IGsgPj4+IDI0IHwgMCwgZVtBICsgMjQgPj4gMl0gPSAociB8IDApID09IDI1NSwgYSA9IGsgPj4+IDE2ICYgMjU1LCBvID0gKGEgfCAwKSA9PSAyNTUsIG4gPSBrICYgMjU1LCB0ID0gKG4gfCAwKSA9PSAyNTUsIHUgPSBpICsgdCB8IDAsIGkgPSBrID4+PiA4ICYgMjU1LCBmID0gKGkgfCAwKSA9PSAyNTUsIHUgPSBvICsgKHUgKyBmIHwgMCkgfCAwLCBrID0gKGwgLSB1IHwgMCkgKyAzMiB8IDAsIGVbQSArIDE2ID4+IDJdID0gaywgZyA9IGVbQSArIDEyID4+IDJdLCBpID0gciB8IChhIHwgKGkgfCBuIDw8ICh0ID8gNyA6IDgpKSA8PCAoZiA/IDcgOiA4KSkgPDwgKG8gPyA3IDogOCksIHIgPSAodSAtIGwgfCAwKSArIDMyIHwgMCwgbiA9IHIgJiAzMSwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyAociA9IGkgPDwgbiwgdCA9IDApIDogKHIgPSAoMSA8PCBuKSAtIDEgJiBpID4+PiAzMiAtIG4sIHQgPSBpIDw8IG4pLCBlW0EgKyA4ID4+IDJdID0gdCB8IGVbQSArIDggPj4gMl0sIGVbQSArIDEyID4+IDJdID0gciB8IGcsIChrIHwgMCkgPj0gNikKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSBlW0EgKyAyOCA+PiAyXSwgciA9IGVbKGYgPDwgMikgKyAzNTg4OCA+PiAyXSwgdCA9IGVbQSArIDggPj4gMl0sIGkgPSBlW0EgKyAxMiA+PiAyXSwgbiA9IGk7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDAsIGkgPSAoLTEgPDwgciBeIC0xKSA8PCAxLCByID0gMSwgZiA9ICgoZiB8IDApID49IDExID8gMTEgOiBmKSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYSA9IHQsIGwgPSA2MyAtIHIgfCAwLCBpID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSBuID4+PiBpIHwgMCA6IGkgPSAoKDEgPDwgaSkgLSAxICYgbikgPDwgMzIgLSBpIHwgYSA+Pj4gaSwgaSA9IChpICYgKC0xIDw8IHIgXiAtMSkpIDw8IDEgfCAxLCByID0gciArIDEgfCAwLCBrID0gayAtIHIgfCAwLCBmID0gKChmIHwgMCkgPD0gMSA/IDEgOiBmKSAtIDEgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbQSArIDE2ID4+IDJdID0gaywgZVtBICsgMjggPj4gMl0gPSBmLCBsID0gdCwgZiA9IHIgJiAzMSwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyAociA9IHQgPDwgZiwgdCA9IDApIDogKHIgPSAoMSA8PCBmKSAtIDEgJiBsID4+PiAzMiAtIGYgfCBuIDw8IGYsIHQgPSBsIDw8IGYpLCBlW0EgKyA4ID4+IDJdID0gdCwgZVtBICsgMTIgPj4gMl0gPSByLCBuID0gZVtBICsgNDQgPj4gMl0gfCBpID4+IDMxLCBlW0EgKyA0MCA+PiAyXSA9IGVbQSArIDQwID4+IDJdICYgLTY0IHwgaSwgZVtBICsgNDQgPj4gMl0gPSBuLCAoayB8IDApIDwgNikgewogICAgICAgICAgICAgICAgICBrID0gMTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSBlW0EgKyAyOCA+PiAyXSwgciA9IGVbKGYgPDwgMikgKyAzNTg4OCA+PiAyXSwgdCA9IGVbQSArIDggPj4gMl0sIGkgPSBlW0EgKyAxMiA+PiAyXSwgbiA9IGk7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDAsIGkgPSAoLTEgPDwgciBeIC0xKSA8PCAxLCByID0gMSwgZiA9ICgoZiB8IDApID49IDExID8gMTEgOiBmKSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYSA9IHQsIGwgPSA2MyAtIHIgfCAwLCBpID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSBuID4+PiBpIHwgMCA6IGkgPSAoKDEgPDwgaSkgLSAxICYgbikgPDwgMzIgLSBpIHwgYSA+Pj4gaSwgaSA9IChpICYgKC0xIDw8IHIgXiAtMSkpIDw8IDEgfCAxLCByID0gciArIDEgfCAwLCBrID0gayAtIHIgfCAwLCBmID0gKChmIHwgMCkgPD0gMSA/IDEgOiBmKSAtIDEgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbQSArIDE2ID4+IDJdID0gaywgZVtBICsgMjggPj4gMl0gPSBmLCBsID0gdCwgZiA9IHIgJiAzMSwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyAociA9IHQgPDwgZiwgdCA9IDApIDogKHIgPSAoMSA8PCBmKSAtIDEgJiBsID4+PiAzMiAtIGYgfCBuIDw8IGYsIHQgPSBsIDw8IGYpLCBlW0EgKyA4ID4+IDJdID0gdCwgZVtBICsgMTIgPj4gMl0gPSByLCBuID0gZVtBICsgNDQgPj4gMl0sIGVbQSArIDQwID4+IDJdID0gZVtBICsgNDAgPj4gMl0gJiAtODA2NSB8IGkgPDwgNywgZVtBICsgNDQgPj4gMl0gPSBpID4+IDMxIDw8IDcgfCBpID4+PiAyNSB8IG4sIChrIHwgMCkgPCA2KSB7CiAgICAgICAgICAgICAgICAgIGsgPSAyOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZiA9IGVbQSArIDI4ID4+IDJdLCByID0gZVsoZiA8PCAyKSArIDM1ODg4ID4+IDJdLCB0ID0gZVtBICsgOCA+PiAyXSwgaSA9IGVbQSArIDEyID4+IDJdLCBuID0gaTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgayA9IGsgLSAxIHwgMCwgaSA9ICgtMSA8PCByIF4gLTEpIDw8IDEsIHIgPSAxLCBmID0gKChmIHwgMCkgPj0gMTEgPyAxMSA6IGYpICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBhID0gdCwgbCA9IDYzIC0gciB8IDAsIGkgPSBsICYgMzEsIChsICYgNjMpID4+PiAwID49IDMyID8gaSA9IG4gPj4+IGkgfCAwIDogaSA9ICgoMSA8PCBpKSAtIDEgJiBuKSA8PCAzMiAtIGkgfCBhID4+PiBpLCBpID0gKGkgJiAoLTEgPDwgciBeIC0xKSkgPDwgMSB8IDEsIHIgPSByICsgMSB8IDAsIGsgPSBrIC0gciB8IDAsIGYgPSAoKGYgfCAwKSA8PSAxID8gMSA6IGYpIC0gMSB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtBICsgMTYgPj4gMl0gPSBrLCBlW0EgKyAyOCA+PiAyXSA9IGYsIGwgPSB0LCBmID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IChyID0gdCA8PCBmLCB0ID0gMCkgOiAociA9ICgxIDw8IGYpIC0gMSAmIGwgPj4+IDMyIC0gZiB8IG4gPDwgZiwgdCA9IGwgPDwgZiksIGVbQSArIDggPj4gMl0gPSB0LCBlW0EgKyAxMiA+PiAyXSA9IHIsIG4gPSBlW0EgKyA0NCA+PiAyXSwgZVtBICsgNDAgPj4gMl0gPSBlW0EgKyA0MCA+PiAyXSAmIC0xMDMyMTkzIHwgaSA8PCAxNCwgZVtBICsgNDQgPj4gMl0gPSBpID4+IDMxIDw8IDE0IHwgaSA+Pj4gMTggfCBuLCAoayB8IDApIDwgNikgewogICAgICAgICAgICAgICAgICBrID0gMzsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSBlW0EgKyAyOCA+PiAyXSwgciA9IGVbKGYgPDwgMikgKyAzNTg4OCA+PiAyXSwgdCA9IGVbQSArIDggPj4gMl0sIGkgPSBlW0EgKyAxMiA+PiAyXSwgbiA9IGk7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDAsIGkgPSAoLTEgPDwgciBeIC0xKSA8PCAxLCByID0gMSwgZiA9ICgoZiB8IDApID49IDExID8gMTEgOiBmKSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYSA9IHQsIGwgPSA2MyAtIHIgfCAwLCBpID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSBuID4+PiBpIHwgMCA6IGkgPSAoKDEgPDwgaSkgLSAxICYgbikgPDwgMzIgLSBpIHwgYSA+Pj4gaSwgaSA9IChpICYgKC0xIDw8IHIgXiAtMSkpIDw8IDEgfCAxLCByID0gciArIDEgfCAwLCBrID0gayAtIHIgfCAwLCBmID0gKChmIHwgMCkgPD0gMSA/IDEgOiBmKSAtIDEgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbQSArIDE2ID4+IDJdID0gaywgZVtBICsgMjggPj4gMl0gPSBmLCBsID0gdCwgZiA9IHIgJiAzMSwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyAociA9IHQgPDwgZiwgdCA9IDApIDogKHIgPSAoMSA8PCBmKSAtIDEgJiBsID4+PiAzMiAtIGYgfCBuIDw8IGYsIHQgPSBsIDw8IGYpLCBlW0EgKyA4ID4+IDJdID0gdCwgZVtBICsgMTIgPj4gMl0gPSByLCBuID0gZVtBICsgNDQgPj4gMl0sIGVbQSArIDQwID4+IDJdID0gZVtBICsgNDAgPj4gMl0gJiAtMTMyMTIwNTc3IHwgaSA8PCAyMSwgZVtBICsgNDQgPj4gMl0gPSBpID4+IDMxIDw8IDIxIHwgaSA+Pj4gMTEgfCBuLCAoayB8IDApIDwgNikgewogICAgICAgICAgICAgICAgICBrID0gNDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSBlW0EgKyAyOCA+PiAyXSwgciA9IGVbKGYgPDwgMikgKyAzNTg4OCA+PiAyXSwgdCA9IGVbQSArIDggPj4gMl0sIGkgPSBlW0EgKyAxMiA+PiAyXSwgbiA9IGk7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDAsIGkgPSAoLTEgPDwgciBeIC0xKSA8PCAxLCByID0gMSwgZiA9ICgoZiB8IDApID49IDExID8gMTEgOiBmKSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYSA9IHQsIGwgPSA2MyAtIHIgfCAwLCBpID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSBuID4+PiBpIHwgMCA6IGkgPSAoKDEgPDwgaSkgLSAxICYgbikgPDwgMzIgLSBpIHwgYSA+Pj4gaSwgaSA9IChpICYgKC0xIDw8IHIgXiAtMSkpIDw8IDEgfCAxLCByID0gciArIDEgfCAwLCBrID0gayAtIHIgfCAwLCBmID0gKChmIHwgMCkgPD0gMSA/IDEgOiBmKSAtIDEgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbQSArIDE2ID4+IDJdID0gaywgZVtBICsgMjggPj4gMl0gPSBmLCBsID0gdCwgZiA9IHIgJiAzMSwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyAociA9IHQgPDwgZiwgdCA9IDApIDogKHIgPSAoMSA8PCBmKSAtIDEgJiBsID4+PiAzMiAtIGYgfCBuIDw8IGYsIHQgPSBsIDw8IGYpLCBlW0EgKyA4ID4+IDJdID0gdCwgZVtBICsgMTIgPj4gMl0gPSByLCBuID0gZVtBICsgNDQgPj4gMl0gJiAtNCwgZVtBICsgNDAgPj4gMl0gPSBlW0EgKyA0MCA+PiAyXSAmIDI2ODQzNTQ1NSB8IGkgPDwgMjgsIGVbQSArIDQ0ID4+IDJdID0gaSA+PiAzMSA8PCAyOCB8IGkgPj4+IDQgfCBuLCAoayB8IDApIDwgNikgewogICAgICAgICAgICAgICAgICBrID0gNTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGwgPSBlW0EgKyAyOCA+PiAyXSwgciA9IGVbKGwgPDwgMikgKyAzNTg4OCA+PiAyXSwgZiA9IGVbQSArIDggPj4gMl0sIGkgPSBlW0EgKyAxMiA+PiAyXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgdCA9IGsgLSAxIHwgMCwgbiA9ICgtMSA8PCByIF4gLTEpIDw8IDEsIHIgPSAxLCBrID0gKChsIHwgMCkgPj0gMTEgPyAxMSA6IGwpICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBhID0gZiwgdCA9IDYzIC0gciB8IDAsIG4gPSB0ICYgMzEsICh0ICYgNjMpID4+PiAwID49IDMyID8gdCA9IGkgPj4+IG4gfCAwIDogdCA9ICgoMSA8PCBuKSAtIDEgJiBpKSA8PCAzMiAtIG4gfCBhID4+PiBuLCBuID0gKHQgJiAoLTEgPDwgciBeIC0xKSkgPDwgMSB8IDEsIHIgPSByICsgMSB8IDAsIHQgPSBrIC0gciB8IDAsIGsgPSAoKGwgfCAwKSA8PSAxID8gMSA6IGwpIC0gMSB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtBICsgMTYgPj4gMl0gPSB0LCBlW0EgKyAyOCA+PiAyXSA9IGssIGwgPSBmLCBrID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IChyID0gZiA8PCBrLCBmID0gMCkgOiAociA9ICgxIDw8IGspIC0gMSAmIGwgPj4+IDMyIC0gayB8IGkgPDwgaywgZiA9IGwgPDwgayksIGVbQSArIDggPj4gMl0gPSBmLCBlW0EgKyAxMiA+PiAyXSA9IHIsIGYgPSBlW0EgKyA0NCA+PiAyXSAmIC01MDUsIGVbQSArIDQwID4+IDJdID0gZVtBICsgNDAgPj4gMl0sIGVbQSArIDQ0ID4+IDJdID0gbiA8PCAzIHwgZiwgayA9IDYsICh0IHwgMCkgPCA2KQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgbCA9IGVbQSArIDI4ID4+IDJdLCByID0gZVsobCA8PCAyKSArIDM1ODg4ID4+IDJdLCBmID0gZVtBICsgOCA+PiAyXSwgaSA9IGVbQSArIDEyID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBrID0gdCAtIDEgfCAwLCBuID0gKC0xIDw8IHIgXiAtMSkgPDwgMSwgciA9IDEsIHQgPSAoKGwgfCAwKSA+PSAxMSA/IDExIDogbCkgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGEgPSBmLCBrID0gNjMgLSByIHwgMCwgbiA9IGsgJiAzMSwgKGsgJiA2MykgPj4+IDAgPj0gMzIgPyBhID0gaSA+Pj4gbiB8IDAgOiBhID0gKCgxIDw8IG4pIC0gMSAmIGkpIDw8IDMyIC0gbiB8IGEgPj4+IG4sIG4gPSAoYSAmICgtMSA8PCByIF4gLTEpKSA8PCAxIHwgMSwgciA9IHIgKyAxIHwgMCwgayA9IHQgLSByIHwgMCwgdCA9ICgobCB8IDApIDw9IDEgPyAxIDogbCkgLSAxIHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlW0EgKyAxNiA+PiAyXSA9IGssIGVbQSArIDI4ID4+IDJdID0gdCwgbCA9IGYsIHQgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gKHIgPSBmIDw8IHQsIHQgPSAwKSA6IChyID0gKDEgPDwgdCkgLSAxICYgbCA+Pj4gMzIgLSB0IHwgaSA8PCB0LCB0ID0gbCA8PCB0KSwgZVtBICsgOCA+PiAyXSA9IHQsIGVbQSArIDEyID4+IDJdID0gciwgdCA9IGVbQSArIDQ0ID4+IDJdICYgLTY0NTEzLCBlW0EgKyA0MCA+PiAyXSA9IGVbQSArIDQwID4+IDJdLCBlW0EgKyA0NCA+PiAyXSA9IG4gPDwgMTAgfCB0LCAoayB8IDApIDwgNikgewogICAgICAgICAgICAgICAgICBrID0gNzsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSBlW0EgKyAyOCA+PiAyXSwgciA9IGVbKGYgPDwgMikgKyAzNTg4OCA+PiAyXSwgdCA9IGVbQSArIDggPj4gMl0sIGkgPSBlW0EgKyAxMiA+PiAyXSwgbiA9IGk7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDAsIGkgPSAoLTEgPDwgciBeIC0xKSA8PCAxLCByID0gMSwgZiA9ICgoZiB8IDApID49IDExID8gMTEgOiBmKSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYSA9IHQsIGwgPSA2MyAtIHIgfCAwLCBpID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSBuID4+PiBpIHwgMCA6IGkgPSAoKDEgPDwgaSkgLSAxICYgbikgPDwgMzIgLSBpIHwgYSA+Pj4gaSwgaSA9IChpICYgKC0xIDw8IHIgXiAtMSkpIDw8IDEgfCAxLCByID0gciArIDEgfCAwLCBrID0gayAtIHIgfCAwLCBmID0gKChmIHwgMCkgPD0gMSA/IDEgOiBmKSAtIDEgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSBrLCBlW0EgKyAyOCA+PiAyXSA9IGYsIGsgPSB0LCBmID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IChyID0gayA8PCBmLCB0ID0gMCkgOiAociA9ICgxIDw8IGYpIC0gMSAmIGsgPj4+IDMyIC0gZiB8IG4gPDwgZiwgdCA9IGsgPDwgZiksIGVbQSArIDggPj4gMl0gPSB0LCBlW0EgKyAxMiA+PiAyXSA9IHIsIG4gPSBlW0EgKyA0NCA+PiAyXSAmIC04MjU3NTM3LCBlW0EgKyA0MCA+PiAyXSA9IGVbQSArIDQwID4+IDJdLCBlW0EgKyA0NCA+PiAyXSA9IGkgPDwgMTcgfCBuLCBrID0gODsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGVbQSArIDMyID4+IDJdID0gayAtIDEsIG4gPSBlW0EgKyA0NCA+PiAyXSwgciA9IG4gPj4+IDcgfCAwLCBpID0gZVtBICsgNDAgPj4gMl0sIGVbQSArIDQwID4+IDJdID0gKG4gJiAxMjcpIDw8IDI1IHwgaSA+Pj4gNywgZVtBICsgNDQgPj4gMl0gPSByLCBpICYgMTI3OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGJBKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSBXKDApLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSBXKDApLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gVygwKSwgSCA9IFcoMCksIEogPSAwLCBFID0gMCwgRCA9IDAsIFUgPSAwOwogICAgICAgICAgICAgIEUgPSBYIC0gMTYgfCAwLCBYID0gRSwgcyA9IGVbQSArIDE1NiA+PiAyXSwgbyA9IGVbQSArIDcyID4+IDJdLCBjID0gZVtvICsgMTYgPj4gMl0sIGEgPSBlW28gKyAyNCA+PiAyXSwgayA9IGVbYSArIDI0ID4+IDJdLCBuID0gZVthICsgNCA+PiAyXSwgdSA9IGVbYSA+PiAyXSwgYSA9IGVbaSArIDU2ID4+IDJdLCBpID0gZVtpICsgNjAgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbQSArIDEwOCA+PiAyXSwgIWgpIHsKICAgICAgICAgICAgICAgICAgICBoID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtBICsgMTA0ID4+IDJdLCAhbCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBmb3IgKGYgPSAxLCBnID0gRltBICsgMTgwIHwgMF0gJiAxID8gMTQ5IDogMTUwLCBwID0gVyhXKCsoYSA+Pj4gMCkgKyArKGkgfCAwKSAqIDQyOTQ5NjcyOTYpIC8gVyhaKGwsIGgpID4+PiAwKSksIG0gPSArKFooaywgYykgPj4+IDApLCBIID0gVyhaKG4sIHUpIDw8IDMgPj4+IDApLCBhID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGEgKyAxIHwgMCwgayA9IDAsIGYpIHsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gaywgayA9IGkgKyAxIHwgMCwgdCA9IFcobzJbZyB8IDBdKHMpKSwgQiA9IGVbcyArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID0gVyh0IC8gVyhCID4+PiAwKSksIGwgPSBlW0EgKyA4NCA+PiAyXSwgYyA9IGVbQSArIDkyID4+IDJdLCBmID0gbCArIFooYywgaykgfCAwLCBuID0gZVtvICsgOCA+PiAyXSwgZiA9IChmIHwgMCkgPCAobiB8IDApID8gZiA6IG4sIG4gPSBsICsgWihpLCBjKSB8IDAsIGkgPSBlW28gPj4gMl0sIEogPSBtICogKyhmIC0gKChpIHwgMCkgPCAobiB8IDApID8gbiA6IGkpID4+PiAwKSwgZiA9IGVbQSArIDg4ID4+IDJdLCBsID0gZVtBICsgOTYgPj4gMl0sIG4gPSBmICsgWihsLCB1KSB8IDAsIGkgPSBlW28gKyAxMiA+PiAyXSwgYyA9IChpIHwgMCkgPiAobiB8IDApID8gbiA6IGksIG4gPSBmICsgWihhLCBsKSB8IDAsIGkgPSBlW28gKyA0ID4+IDJdLCBKID0gSiAqICsoYyAtICgoaSB8IDApIDwgKG4gfCAwKSA/IG4gOiBpKSA+Pj4gMCksIGYgPSBzICsgMjAgfCAwLCAoQiB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSBCICYgLTIsIGkgPSAwOyB0ID0gR1tmID4+IDJdLCB0ID4gVygwKSAmJiAoR1tmID4+IDJdID0gVyhKIC8gK1codCAqIEgpKSAtIHYpLCB0ID0gR1tmICsgNCA+PiAyXSwgdCA+IFcoMCkgJiYgKEdbZiArIDQgPj4gMl0gPSBXKEogLyArVyh0ICogSCkpIC0gdiksIGYgPSBmICsgOCB8IDAsIGkgPSBpICsgMiB8IDAsIChuIHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoQiAmIDEpIHx8ICh0ID0gR1tmID4+IDJdLCAhKHQgPiBXKDApKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIEdbZiA+PiAyXSA9IFcoSiAvICtXKHQgKiBIKSkgLSB2OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gcyArIDU2NDQgfCAwLCBsID0gZVtBICsgMTA0ID4+IDJdLCAhKGwgPj4+IDAgPiBrID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGggPSBlW0EgKyAxMDggPj4gMl0sIGYgPSBsOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSB1LCAhKGggPj4+IDAgPiBhID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtBICsgMTU2ID4+IDJdLCAhaCkgewogICAgICAgICAgICAgICAgICAgIGggPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCFsKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGZvciAoSCA9IFcocCArIFcoMikpLCBrID0gYTsgOyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKEMgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgdCA9IEdbayArIDIwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID4gVygwKSkgfHwgKHQgPSBXKHQgLSBwKSwgR1trICsgMjAgPj4gMl0gPSB0LCAhKHQgPCBXKDMwKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDIwID4+IDJdID0gMTEwNjI0NzY4MDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGYgPSBrICsgMjQgfCAwLCBuID0gZVtrICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gLSAzID4+PiAwID4gNDI5NDk2NzI5MykKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSAhPSAzKQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IChuICYgLTIpIC0gNCB8IDAsIGcgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGcsIHQgPSBHW2YgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHQgPiBXKDApKSB8fCAodiA9IFcodCAtIHApLCBHW2YgPj4gMl0gPSB2LCB0ID0gR1tmIC0gNCA+PiAyXSwgISh2IDwgVyh0ICsgVygxMCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1tmID4+IDJdID0gdCArIFcoMjApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IEdbZiArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHQgPiBXKDApKSB8fCAodiA9IFcodCAtIHApLCBHW2YgKyA0ID4+IDJdID0gdiwgdCA9IEdbZiA+PiAyXSwgISh2IDwgVyh0ICsgVygxMCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1tmICsgNCA+PiAyXSA9IHQgKyBXKDIwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gaSArIDIgfCAwLCBmID0gZiArIDggfCAwLCAoaSB8IDApID09ICh1IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobiAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBHW2YgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID4gVygwKSkgfHwgKHYgPSBXKHQgLSBwKSwgR1tmID4+IDJdID0gdiwgdCA9IEdbZiAtIDQgPj4gMl0sICEodiA8IFcodCArIFcoMTApKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICBHW2YgPj4gMl0gPSB0ICsgVygyMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHQgPSBHW2YgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHQgPiBXKDApKSB8fCAodiA9IFcodCAtIEgpLCBHW2YgPj4gMl0gPSB2LCB0ID0gR1tmIC0gNCA+PiAyXSwgISh2IDwgVyh0ICsgVygxMCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgR1tmID4+IDJdID0gdCArIFcoMjApOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBrICsgNTY0NCB8IDAsIEMgPSBDICsgMSB8IDAsIChDIHwgMCkgPT0gKGwgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh3ID0gdyArIDEgfCAwLCAodyB8IDApID09IChoIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYSA9IGVbQSArIDE1NiA+PiAyXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKEMgPSBlW28gKyAxNiA+PiAyXSwgQykgewogICAgICAgICAgICAgICAgZm9yIChpID0gZVtBICsgOTYgPj4gMl0sIEIgPSBpIC0gMSB8IDAsIHkgPSAwIC0gIWkgfCAwLCBpID0gZVtBICsgOTIgPj4gMl0sIGcgPSBpIC0gMSB8IDAsIGMgPSAwIC0gIWkgfCAwLCBmID0gZVtvICsgMjQgPj4gMl0sIGkgPSAwLCBuID0gMCwgdSA9IDA7IGwgPSBuLCBrID0gdSwgRCA9IGVbZiArIDI0ID4+IDJdLCBuID0gZVtmICsgNCA+PiAyXSwgbyA9IG4gKyBCIHwgMCwgdSA9IHksIG4gPSBuMChvLCBuID4+PiAwID4gbyA+Pj4gMCA/IHUgKyAxIHwgMCA6IHUsIG4sIDApLCBvID0gZVtmID4+IDJdLCB3ID0gbyArIGcgfCAwLCB1ID0gYywgcyA9IGwsIGwgPSBkMChELCAwLCBkMChuLCAwLCBuMCh3LCBvID4+PiAwID4gdyA+Pj4gMCA/IHUgKyAxIHwgMCA6IHUsIG8sIDApLCAwKSwgcTIpLCBuID0gcyArIGwgfCAwLCB1ID0gcTIgKyBrIHwgMCwgdSA9IG4gPj4+IDAgPCBsID4+PiAwID8gdSArIDEgfCAwIDogdSwgZiA9IGYgKyA1MiB8IDAsIGkgPSBpICsgMSB8IDAsIChDIHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBtID0gKCsobiA+Pj4gMCkgKyArKHUgPj4+IDApICogNDI5NDk2NzI5NikgKiAxLjQgKiAwLjEyNTsKICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgaWYgKG0gPCAxODQ0Njc0NDA3MzcwOTU1MmUzICYgbSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaSA9IH5+bSA+Pj4gMCwgUjIobSkgPj0gMSA/IHUgPSB+fihtID4gMCA/IFdBKE5lKG0gKiAyMzI4MzA2NDM2NTM4Njk2M2UtMjYpLCA0Mjk0OTY3Mjk1KSA6ICRpKChtIC0gKyh+fm0gPj4+IDAgPj4+IDApKSAqIDIzMjgzMDY0MzY1Mzg2OTYzZS0yNikpID4+PiAwIDogdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpID0gMCwgdSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuID0gaSArIDUwMCB8IDAsIHUgPSBuID4+PiAwIDwgNTAwID8gdSArIDEgfCAwIDogdTsKICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIG4gPSA1MDAsIHUgPSAwOwogICAgICAgICAgICAgIGlmIChoID0gWihlW0EgKyAxMDQgPj4gMl0sIGgpLCBoKSB7CiAgICAgICAgICAgICAgICBpZiAoZyA9IDAsIGYgPSBhLCBpID0gMCwgaCA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICBmb3IgKGwgPSBoICYgLTQsIHMgPSAwOyBrID0gZVtmICsgNTU5MiA+PiAyXSwgayA9IGkgPj4+IDAgPiBrID4+PiAwID8gaSA6IGssIGkgPSBlW2YgKyAxMTIzNiA+PiAyXSwgayA9IGkgPj4+IDAgPCBrID4+PiAwID8gayA6IGksIGkgPSBlW2YgKyAxNjg4MCA+PiAyXSwgayA9IGkgPj4+IDAgPCBrID4+PiAwID8gayA6IGksIGkgPSBlW2YgKyAyMjUyNCA+PiAyXSwgaSA9IGkgPj4+IDAgPCBrID4+PiAwID8gayA6IGksIGYgPSBmICsgMjI1NzYgfCAwLCBzID0gcyArIDQgfCAwLCAobCB8IDApICE9IChzIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAobCA9IGggJiAzLCBsKQogICAgICAgICAgICAgICAgICBmb3IgKDsgayA9IGVbZiArIDU1OTIgPj4gMl0sIGkgPSBpID4+PiAwID4gayA+Pj4gMCA/IGkgOiBrLCBmID0gZiArIDU2NDQgfCAwLCBnID0gZyArIDEgfCAwLCAobCB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBjID0gWihpLCAxMik7CiAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBjID0gMDsKICAgICAgICAgICAgICBpZiAoKEcyW0EgKyA4MCA+PiAxXSAtIDMgJiA2NTUzNSkgPj4+IDAgPj0gNCkgewogICAgICAgICAgICAgICAgaWYgKHcgPSBlW2VbQSArIDcyID4+IDJdICsgMTYgPj4gMl0sIFUgPSB3IC0gMSB8IDAsIGYgPSAxMiwgISghaCB8ICF3KSkgewogICAgICAgICAgICAgICAgICBmb3IgKG8gPSB3ICYgLTIsIEIgPSB3ICYgMSwgRCA9IHcgLSAxIHwgMCwgcyA9IDAsIGwgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgIGlmICh5ID0gZVsoWihsLCA1NjQ0KSArIGEgfCAwKSArIDU1ODQgPj4gMl0sIGYgPSAwLCBDID0gMCwgRCkKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBpID0gNSwgZyA9IDUsIGsgPSB5ICsgWihmLCAxMDgwKSB8IDAsIEZbayB8IDBdICYgMSAmJiAoZyA9IGVbayArIDQgPj4gMl0gKyA1IHwgMCksIGsgPSB5ICsgWihmIHwgMSwgMTA4MCkgfCAwLCBGW2sgfCAwXSAmIDEgJiYgKGkgPSBlW2sgKyA0ID4+IDJdICsgNSB8IDApLCBrID0gZyA+Pj4gMCA8IHMgPj4+IDAgPyBzIDogZywgcyA9IGkgPj4+IDAgPCBrID4+PiAwID8gayA6IGksIGYgPSBmICsgMiB8IDAsIEMgPSBDICsgMiB8IDAsIChvIHwgMCkgIT0gKEMgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaWYgKEIgJiYgKGkgPSA1LCBrID0geSArIFooZiwgMTA4MCkgfCAwLCBGW2sgfCAwXSAmIDEgJiYgKGkgPSBlW2sgKyA0ID4+IDJdICsgNSB8IDApLCBzID0gaSA+Pj4gMCA8IHMgPj4+IDAgPyBzIDogaSksIGwgPSBsICsgMSB8IDAsIChoIHwgMCkgPT0gKGwgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGZvciAoeSA9IHcgJiAtMiwgbyA9IHcgJiAxLCBrID0gMCwgdyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEMgPSBlWyhaKHcsIDU2NDQpICsgYSB8IDApICsgNTU4NCA+PiAyXSwgZiA9IDAsIGwgPSAwLCBEKQogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPSA1LCBnID0gNSwgQiA9IEMgKyBaKGYsIDEwODApIHwgMCwgRltCIHwgMF0gJiAxICYmIChnID0gZVtCICsgNCA+PiAyXSArIDUgfCAwKSwgQiA9IEMgKyBaKGYgfCAxLCAxMDgwKSB8IDAsIEZbQiB8IDBdICYgMSAmJiAoaSA9IGVbQiArIDQgPj4gMl0gKyA1IHwgMCksIGsgPSBrID4+PiAwID4gZyA+Pj4gMCA/IGsgOiBnLCBrID0gaSA+Pj4gMCA8IGsgPj4+IDAgPyBrIDogaSwgZiA9IGYgKyAyIHwgMCwgbCA9IGwgKyAyIHwgMCwgKHkgfCAwKSAhPSAobCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBpZiAobyAmJiAoaSA9IDUsIGYgPSBDICsgWihmLCAxMDgwKSB8IDAsIEZbZiB8IDBdICYgMSAmJiAoaSA9IGVbZiArIDQgPj4gMl0gKyA1IHwgMCksIGsgPSBpID4+PiAwIDwgayA+Pj4gMCA/IGsgOiBpKSwgdyA9IHcgKyAxIHwgMCwgKGggfCAwKSA9PSAodyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZiA9IChrICsgcyB8IDApICsgMTIgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYyA9IFooZiwgVSkgKyBjIHwgMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbCA9IEEsIHkgPSB1ICsgMSB8IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoaCkgewogICAgICAgICAgICAgICAgICAgIG8gPSBoICYgMywgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj4+IDAgPCA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZm9yIChCID0gaCAmIC00LCBmID0gMCwgZyA9IDA7IGsgPSBlW2EgKyA0MjAgPj4gMl0sIGYgPSBmID4+PiAwID4gayA+Pj4gMCA/IGYgOiBrLCBrID0gZVthICsgNjA2NCA+PiAyXSwgZiA9IGYgPj4+IDAgPiBrID4+PiAwID8gZiA6IGssIGsgPSBlW2EgKyAxMTcwOCA+PiAyXSwgZiA9IGYgPj4+IDAgPiBrID4+PiAwID8gZiA6IGssIGsgPSBlW2EgKyAxNzM1MiA+PiAyXSwgZiA9IGYgPj4+IDAgPiBrID4+PiAwID8gZiA6IGssIGEgPSBhICsgMjI1NzYgfCAwLCBnID0gZyArIDQgfCAwLCAoQiB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobykKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBrID0gZVthICsgNDIwID4+IDJdLCBmID0gZiA+Pj4gMCA+IGsgPj4+IDAgPyBmIDogaywgYSA9IGEgKyA1NjQ0IHwgMCwgaSA9IGkgKyAxIHwgMCwgKG8gfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChaKGYsIDkpICsgYyB8IDApICsgMTMgfCAwLCAhZVtBICsgNjAgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IEEgKyA4MCB8IDAsIGYgPSAwLCBpID0gMDsgYSA9IGQ2KGVbQSArIDcyID4+IDJdLCBjLCBpKSwgZiA9IGYgPj4+IDAgPiBhID4+PiAwID8gZiA6IGEsIGkgPSBpICsgMSB8IDAsIGkgPj4+IDAgPCBaKGVbQSArIDEwNCA+PiAyXSwgZVtBICsgMTA4ID4+IDJdKSA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGYgPSAwLCBrID0gYyArIDEzIHwgMCwgIWVbQSArIDYwID4+IDJdKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhID0gWihmLCA1KSArIGsgfCAwLCBrID0gMCwgaSA9IGYgKyAxNjM4MSB8IDAsIGsgPSBpID4+PiAwIDwgMTYzODEgPyAxIDogaywgaSA9IChaKG4wKGksIGssIDE2MzgyLCAwKSwgNikgKyBhIHwgMCkgKyAxIHwgMCwgZVtBICsgNjQgPj4gMl0gPSBpLCBrID0gaSArIGEgfCAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpID0gaywgaSA9IGkgKyBuIHwgMCwgdSA9IGsgPj4+IDAgPiBpID4+PiAwID8geSA6IHUsIGsgPSBpLCBpID0gIXUgJiAoaSB8IDApID09IC0xIHwgKHUgfCAwKSAhPSAwLCBuID0gaSA/IC0xIDogaywgYSA9IGkgPyAwIDogdSwgZVtsICsgNDggPj4gMl0gPSBuLCBpID0gVTIobiksIGVbQSArIDQ0ID4+IDJdID0gaTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIWkpIHsKICAgICAgICAgICAgICAgICAgZVtFID4+IDJdID0gKGEgJiAxMDQ4NTc1KSA8PCAxMiB8IG4gPj4+IDIwLCBRKHIsIDEsIDE2MzgxLCBFKSwgZiA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsICFlW0EgKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmIChpID0gVTIoWihlW0EgKyA0MCA+PiAyXSwgNikpLCBlW0EgKyAzMiA+PiAyXSA9IGksICFpKSB7CiAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVtBICsgMzYgPj4gMl0gPSBpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IEUgKyAxNiB8IDAsIGYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG00KEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMCwgRCA9IDAsIFUgPSAwOwogICAgICAgICAgICAgIEMgPSBYIC0gMTYgfCAwLCBYID0gQywgcCA9IFooZVtBICsgMTA0ID4+IDJdLCBlW0EgKyAxMDggPj4gMl0pOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghcCkgewogICAgICAgICAgICAgICAgICBmID0gMTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEUgPSBlW0EgKyAyMDggPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyAyMDQgPj4gMl0gIT0gKGYgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUShyLCAxLCAzMjcyLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gZVtBICsgMTA4ID4+IDJdLCBoID0gZVtBICsgMTA0ID4+IDJdLCBEID0gZiArIDEgfCAwLCBlW0MgPj4gMl0gPSBELCBlW0MgKyA0ID4+IDJdID0gWihvLCBoKSwgUShyLCA0LCAxNzg2NywgQyksIGVbQSArIDEyID4+IDJdID0gMCwgbyA9IGVbQSArIDIwOCA+PiAyXSwgZVtvICsgMTIgPj4gMl0gPSBlWyhlW0EgKyAxNTYgPj4gMl0gKyBaKGYsIDU2NDQpIHwgMCkgKyA1NTkyID4+IDJdLCBlW0EgKyA4ID4+IDJdID0gMCwgIUFyKG8sIGVbQSArIDIwNCA+PiAyXSwgMSwgNTIsIHIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbQSArIDIwOCA+PiAyXSwgdCA9IGVbZVtuICsgMjQgPj4gMl0gKyAxNiA+PiAyXSwgIXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsIChwIHwgMCkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGVbZVtFICsgMjQgPj4gMl0gKyAyNCA+PiAyXSwgaCA9IGVbZVtlW0UgKyAyMCA+PiAyXSA+PiAyXSArIDIwID4+IDJdLCBzID0gMCwgdCA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IHQgJiAtNCwgZyA9IDA7IGwgPSBlWyhvICsgWihmLCA1MikgfCAwKSArIDQ0ID4+IDJdLCBhID0gaCArIFooZiwgNzYpIHwgMCwgZVthICsgNDAgPj4gMl0gPSAwLCBlW2EgKyAzNiA+PiAyXSA9IGwsIGwgPSBmIHwgMSwgYSA9IGVbKG8gKyBaKGwsIDUyKSB8IDApICsgNDQgPj4gMl0sIGwgPSBoICsgWihsLCA3NikgfCAwLCBlW2wgKyA0MCA+PiAyXSA9IDAsIGVbbCArIDM2ID4+IDJdID0gYSwgbCA9IGYgfCAyLCBhID0gZVsobyArIFoobCwgNTIpIHwgMCkgKyA0NCA+PiAyXSwgbCA9IGggKyBaKGwsIDc2KSB8IDAsIGVbbCArIDQwID4+IDJdID0gMCwgZVtsICsgMzYgPj4gMl0gPSBhLCBsID0gZiB8IDMsIGEgPSBlWyhvICsgWihsLCA1MikgfCAwKSArIDQ0ID4+IDJdLCBsID0gaCArIFoobCwgNzYpIHwgMCwgZVtsICsgNDAgPj4gMl0gPSAwLCBlW2wgKyAzNiA+PiAyXSA9IGEsIGYgPSBmICsgNCB8IDAsIGcgPSBnICsgNCB8IDAsICh1IHwgMCkgIT0gKGcgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgJiAzLCAhdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZyA9IGVbKG8gKyBaKGYsIDUyKSB8IDApICsgNDQgPj4gMl0sIHUgPSBoICsgWihmLCA3NikgfCAwLCBlW3UgKyA0MCA+PiAyXSA9IDAsIGVbdSArIDM2ID4+IDJdID0gZywgZiA9IGYgKyAxIHwgMCwgcyA9IHMgKyAxIHwgMCwgKHQgfCAwKSAhPSAocyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChINihlW2VbZVtFICsgMjAgPj4gMl0gPj4gMl0gKyAyMCA+PiAyXSArIFooZiwgNzYpIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGYgKyAxIHwgMCwgbiA9IGVbQSArIDIwOCA+PiAyXSwgZiA+Pj4gMCA8IGRbZVtuICsgMjQgPj4gMl0gKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsIFEociwgMSwgMzM1NiwgMCksIGspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IDAsIGYgPSAwLCBvID0gZVtuICsgMjQgPj4gMl0sIHMgPSBlW28gKyAxNiA+PiAyXSwgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaCA9IGVbbyArIDI0ID4+IDJdLCBvID0gZVtlW2VbbiArIDIwID4+IDJdID4+IDJdICsgMjAgPj4gMl07IHcgPSBmLCBmID0gZVtoICsgMjQgPj4gMl0sIGYgPSAoZiA+Pj4gMyB8IDApICsgKChmICYgNykgIT0gMCkgfCAwLCBmID0gdyArIFooWihlW28gKyAxMiA+PiAyXSAtIGVbbyArIDQgPj4gMl0gfCAwLCBlW28gKyA4ID4+IDJdIC0gZVtvID4+IDJdIHwgMCksIChmIHwgMCkgPT0gMyA/IDQgOiBmKSB8IDAsIG8gPSBvICsgNzYgfCAwLCBoID0gaCArIDUyIHwgMCwgdCA9IHQgKyAxIHwgMCwgKHMgfCAwKSAhPSAodCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGYsIChwIHwgMCkgIT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA+Pj4gMCA+IFUgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVSA9IGYsIG8gPSBvMChrLCBmKSwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayAmJiBSKGspLCBmID0gMCwgUShyLCAxLCA1OTI4LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gaywgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gZVtBICsgMjA4ID4+IDJdLCBmID0gZVtzICsgMjQgPj4gMl0sIGVbZiArIDE2ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobSA9IDAsIGsgPSBvOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlW2YgKyAyNCA+PiAyXSArIFoobSwgNTIpIHwgMCwgbiA9IGVbYyA+PiAyXSwgZyA9IG4gPj4gMzEsIHUgPSBuIC0gMSB8IDAsIHYgPSBlW2YgPj4gMl0sIHQgPSBlW2YgKyA4ID4+IDJdIC0gdiB8IDAsIGEgPSB0LCBsID0gdSArIHQgfCAwLCB3ID0gZyAtICFuIHwgMCwgdCA9IHcgKyAodCA+PiAzMSkgfCAwLCB0ID0gejAobCwgbCA+Pj4gMCA8IGEgPj4+IDAgPyB0ICsgMSB8IDAgOiB0LCBuLCBnKSwgbCA9IHQsIEggPSBlW2VbZVtzICsgMjAgPj4gMl0gPj4gMl0gKyAyMCA+PiAyXSArIFoobSwgNzYpIHwgMCwgQiA9IGVbSCArIDggPj4gMl0sIHQgPSBlW0ggPj4gMl0sIGEgPSBCIC0gdCB8IDAsIHkgPSBsIC0gYSB8IDAsIEogPSBlW2MgKyA0NCA+PiAyXSwgdyA9ICh2ID4+IDMxKSArIHcgfCAwLCB1ID0gdSArIHYgfCAwLCB3ID0gdSA+Pj4gMCA8IHYgPj4+IDAgPyB3ICsgMSB8IDAgOiB3LCB2ID0gKHQgLSB6MCh1LCB3LCBuLCBnKSA8PCAyKSArIEogfCAwLCB1ID0gZVtIICsgNCA+PiAyXSwgbiA9IGVbYyArIDQgPj4gMl0sIGcgPSBlW2YgKyA0ID4+IDJdLCB3ID0gZywgZiA9IG4gKyBnIHwgMCwgSiA9IG4gPj4gMzEsIGcgPSBKICsgKGcgPj4gMzEpIHwgMCwgZyA9IGYgPj4+IDAgPCB3ID4+PiAwID8gZyArIDEgfCAwIDogZywgZiA9IChaKGwsIHUgLSB6MChmIC0gMSB8IDAsIGcgLSAhZiB8IDAsIG4sIEopIHwgMCkgPDwgMikgKyB2IHwgMCwgbiA9IGVbSCArIDEyID4+IDJdLCBnID0gbiAtIHUgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGwgPSBlW2MgKyAyNCA+PiAyXSwgbCA9IChsID4+PiAzIHwgMCkgKyAoKGwgJiA3KSAhPSAwKSB8IDAsICgobCB8IDApID09IDMgPyA0IDogbCkgLSAxIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgPT0gKHUgfCAwKSB8ICh0IHwgMCkgPT0gKEIgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gYSAmIC04LCB1ID0gYSAmIDcsIG4gPSAwLCBhID0gdCAtIEIgPj4+IDAgPiA0Mjk0OTY3Mjg4OyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSAwLCAhYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbayA+PiAyXSA9IGVbZiA+PiAyXSwgZVtrICsgNCA+PiAyXSA9IGVbZiArIDQgPj4gMl0sIGVbayArIDggPj4gMl0gPSBlW2YgKyA4ID4+IDJdLCBlW2sgKyAxMiA+PiAyXSA9IGVbZiArIDEyID4+IDJdLCBlW2sgKyAxNiA+PiAyXSA9IGVbZiArIDE2ID4+IDJdLCBlW2sgKyAyMCA+PiAyXSA9IGVbZiArIDIwID4+IDJdLCBlW2sgKyAyNCA+PiAyXSA9IGVbZiArIDI0ID4+IDJdLCBlW2sgKyAyOCA+PiAyXSA9IGVbZiArIDI4ID4+IDJdLCBrID0gayArIDMyIHwgMCwgZiA9IGYgKyAzMiB8IDAsIHQgPSB0ICsgOCB8IDAsIChsIHwgMCkgIT0gKHQgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gMCwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbayA+PiAyXSA9IGVbZiA+PiAyXSwgayA9IGsgKyA0IHwgMCwgZiA9IGYgKyA0IHwgMCwgdCA9IHQgKyAxIHwgMCwgKHUgfCAwKSAhPSAodCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSAoeSA8PCAyKSArIGYgfCAwLCBuID0gbiArIDEgfCAwLCAoZyB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gKG4gfCAwKSA9PSAodSB8IDApIHwgKHQgfCAwKSA9PSAoQiB8IDApLCBlW2MgKyAzMiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBhICYgLTgsIHUgPSBhICYgNywgbiA9IDAsIGEgPSB0IC0gQiA+Pj4gMCA+IDQyOTQ5NjcyODg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IDAsICFhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgRltrIHwgMF0gPSBlW2YgPj4gMl0sIEZbayArIDEgfCAwXSA9IGVbZiArIDQgPj4gMl0sIEZbayArIDIgfCAwXSA9IGVbZiArIDggPj4gMl0sIEZbayArIDMgfCAwXSA9IGVbZiArIDEyID4+IDJdLCBGW2sgKyA0IHwgMF0gPSBlW2YgKyAxNiA+PiAyXSwgRltrICsgNSB8IDBdID0gZVtmICsgMjAgPj4gMl0sIEZbayArIDYgfCAwXSA9IGVbZiArIDI0ID4+IDJdLCBGW2sgKyA3IHwgMF0gPSBlW2YgKyAyOCA+PiAyXSwgZiA9IGYgKyAzMiB8IDAsIGsgPSBrICsgOCB8IDAsIHQgPSB0ICsgOCB8IDAsIChsIHwgMCkgIT0gKHQgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gMCwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEZbayB8IDBdID0gZVtmID4+IDJdLCBmID0gZiArIDQgfCAwLCBrID0gayArIDEgfCAwLCB0ID0gdCArIDEgfCAwLCAodSB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9ICh5IDw8IDIpICsgZiB8IDAsIG4gPSBuICsgMSB8IDAsIChnIHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gYSAmIC04LCB1ID0gYSAmIDcsIG4gPSAwLCBhID0gdCAtIEIgPj4+IDAgPiA0Mjk0OTY3Mjg4OyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gMCwgIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgRltrIHwgMF0gPSBlW2YgPj4gMl0sIEZbayArIDEgfCAwXSA9IGVbZiArIDQgPj4gMl0sIEZbayArIDIgfCAwXSA9IGVbZiArIDggPj4gMl0sIEZbayArIDMgfCAwXSA9IGVbZiArIDEyID4+IDJdLCBGW2sgKyA0IHwgMF0gPSBlW2YgKyAxNiA+PiAyXSwgRltrICsgNSB8IDBdID0gZVtmICsgMjAgPj4gMl0sIEZbayArIDYgfCAwXSA9IGVbZiArIDI0ID4+IDJdLCBGW2sgKyA3IHwgMF0gPSBlW2YgKyAyOCA+PiAyXSwgZiA9IGYgKyAzMiB8IDAsIGsgPSBrICsgOCB8IDAsIHQgPSB0ICsgOCB8IDAsIChsIHwgMCkgIT0gKHQgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSAwLCB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEZbayB8IDBdID0gZVtmID4+IDJdLCBmID0gZiArIDQgfCAwLCBrID0gayArIDEgfCAwLCB0ID0gdCArIDEgfCAwLCAodSB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gKHkgPDwgMikgKyBmIHwgMCwgbiA9IG4gKyAxIHwgMCwgKGcgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gKG4gfCAwKSA9PSAodSB8IDApIHwgKHQgfCAwKSA9PSAoQiB8IDApLCBlW2MgKyAzMiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBhICYgLTgsIHUgPSBhICYgNywgbiA9IDAsIGEgPSB0IC0gQiA+Pj4gMCA+IDQyOTQ5NjcyODg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSAwLCAhYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB1MltrID4+IDFdID0gZVtmID4+IDJdLCB1MltrICsgMiA+PiAxXSA9IGVbZiArIDQgPj4gMl0sIHUyW2sgKyA0ID4+IDFdID0gZVtmICsgOCA+PiAyXSwgdTJbayArIDYgPj4gMV0gPSBlW2YgKyAxMiA+PiAyXSwgdTJbayArIDggPj4gMV0gPSBlW2YgKyAxNiA+PiAyXSwgdTJbayArIDEwID4+IDFdID0gZVtmICsgMjAgPj4gMl0sIHUyW2sgKyAxMiA+PiAxXSA9IGVbZiArIDI0ID4+IDJdLCB1MltrICsgMTQgPj4gMV0gPSBlW2YgKyAyOCA+PiAyXSwgayA9IGsgKyAxNiB8IDAsIGYgPSBmICsgMzIgfCAwLCB0ID0gdCArIDggfCAwLCAobCB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gMCwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB1MltrID4+IDFdID0gZVtmID4+IDJdLCBrID0gayArIDIgfCAwLCBmID0gZiArIDQgfCAwLCB0ID0gdCArIDEgfCAwLCAodSB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gKHkgPDwgMikgKyBmIHwgMCwgbiA9IG4gKyAxIHwgMCwgKGcgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gYSAmIC04LCB1ID0gYSAmIDcsIG4gPSAwLCBhID0gdCAtIEIgPj4+IDAgPiA0Mjk0OTY3Mjg4OyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IDAsICFhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB1MltrID4+IDFdID0gZVtmID4+IDJdLCB1MltrICsgMiA+PiAxXSA9IGVbZiArIDQgPj4gMl0sIHUyW2sgKyA0ID4+IDFdID0gZVtmICsgOCA+PiAyXSwgdTJbayArIDYgPj4gMV0gPSBlW2YgKyAxMiA+PiAyXSwgdTJbayArIDggPj4gMV0gPSBlW2YgKyAxNiA+PiAyXSwgdTJbayArIDEwID4+IDFdID0gZVtmICsgMjAgPj4gMl0sIHUyW2sgKyAxMiA+PiAxXSA9IGVbZiArIDI0ID4+IDJdLCB1MltrICsgMTQgPj4gMV0gPSBlW2YgKyAyOCA+PiAyXSwgayA9IGsgKyAxNiB8IDAsIGYgPSBmICsgMzIgfCAwLCB0ID0gdCArIDggfCAwLCAobCB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSAwLCB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB1MltrID4+IDFdID0gZVtmID4+IDJdLCBrID0gayArIDIgfCAwLCBmID0gZiArIDQgfCAwLCB0ID0gdCArIDEgfCAwLCAodSB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSAoeSA8PCAyKSArIGYgfCAwLCBuID0gbiArIDEgfCAwLCAoZyB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtID0gbSArIDEgfCAwLCBmID0gZVtzICsgMjQgPj4gMl0sICEobSA+Pj4gMCA8IGRbZiArIDE2ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlW0EgKyAyMDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVE0KHMsIG8sIGgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghTTQoQSwgaSwgcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gRCwgKHAgfCAwKSAhPSAoZiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgaykKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChmID0gMSwgIWspCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIFIoayk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmID0gMCwgUShyLCAxLCAzMzA5LCAwKSwgUihvKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBDICsgMTYgfCAwLCBmIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB5NChBLCBpLCByLCBmLCBrLCB0LCBuLCBsLCBhKSB7CiAgICAgICAgICAgICAgdmFyIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMCwgeSA9IDAsIHAgPSAwLCBIID0gMCwgSiA9IDAsIEUgPSAwLCBEID0gMDsKICAgICAgICAgICAgICBCID0gWCAtIDMyIHwgMCwgWCA9IEIsIGVbQiArIDI0ID4+IDJdID0gdCwgQyA9IGVbKFooZVtmICsgMjggPj4gMl0sIDc2KSArIGkgfCAwKSArIDI4ID4+IDJdICsgWihlW2YgKyAzMiA+PiAyXSwgMTUyKSB8IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCEoZVtmICsgNDAgPj4gMl0gfCAhZVtDICsgMjQgPj4gMl0pKQogICAgICAgICAgICAgICAgICBmb3IgKHUgPSBDICsgMjggfCAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3UgKyAxMiA+PiAyXSA9PSBlW3UgKyA0ID4+IDJdIHwgZVt1ICsgOCA+PiAyXSA9PSBlW3UgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbZiArIDM2ID4+IDJdLCBpID4+PiAwID49IGRbdSArIDI0ID4+IDJdIC8gNDAgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgUShhLCAxLCA0ODA1LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVt1ICsgMjAgPj4gMl0gKyBaKGksIDQwKSB8IDAsIFppKGVbaSArIDMyID4+IDJdKSwgWmkoZVtpICsgMzYgPj4gMl0pLCB3ID0gWihlW2kgKyAyMCA+PiAyXSwgZVtpICsgMTYgPj4gMl0pLCAhdykKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVtpICsgMjQgPj4gMl0sIHcgPj4+IDAgPj0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gdyAmIC04LCBvID0gMDsgZVtpICsgNDg4ID4+IDJdID0gMCwgZVtpICsgNDkyID4+IDJdID0gMCwgZVtpICsgNDI0ID4+IDJdID0gMCwgZVtpICsgNDI4ID4+IDJdID0gMCwgZVtpICsgMzYwID4+IDJdID0gMCwgZVtpICsgMzY0ID4+IDJdID0gMCwgZVtpICsgMjk2ID4+IDJdID0gMCwgZVtpICsgMzAwID4+IDJdID0gMCwgZVtpICsgMjMyID4+IDJdID0gMCwgZVtpICsgMjM2ID4+IDJdID0gMCwgZVtpICsgMTY4ID4+IDJdID0gMCwgZVtpICsgMTcyID4+IDJdID0gMCwgZVtpICsgMTA0ID4+IDJdID0gMCwgZVtpICsgMTA4ID4+IDJdID0gMCwgZVtpICsgNDAgPj4gMl0gPSAwLCBlW2kgKyA0NCA+PiAyXSA9IDAsIGkgPSBpICsgNTEyIHwgMCwgbyA9IG8gKyA4IHwgMCwgKGMgfCAwKSAhPSAobyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSAwLCB3ID0gdyAmIDcsICF3KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbaSArIDQwID4+IDJdID0gMCwgZVtpICsgNDQgPj4gMl0gPSAwLCBpID0gaSAtIC02NCB8IDAsIG8gPSBvICsgMSB8IDAsICh3IHwgMCkgIT0gKG8gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh1ID0gdSArIDM2IHwgMCwgZyA9IGcgKyAxIHwgMCwgIShnID4+PiAwIDwgZFtDICsgMjQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHcgPSB0OwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIShJW3IgfCAwXSAmIDIpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGlmIChsID4+PiAwIDw9IDUpIHsKICAgICAgICAgICAgICAgICAgICBRKGEsIDIsIDY4MDYsIDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCEoSVt0IHwgMF0gPT0gMjU1ICYgSVt0ICsgMSB8IDBdID09IDE0NSkpIHsKICAgICAgICAgICAgICAgICAgICBRKGEsIDIsIDY4NDgsIDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgdyA9IHQgKyA2IHwgMCwgZVtCICsgMjQgPj4gMl0gPSB3OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGggPSBVMigyMCksICFoKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoRltBICsgMTA4IHwgMF0gJiAxKSB7CiAgICAgICAgICAgICAgICAgICAgdyA9IGVbQSArIDQwID4+IDJdLCBjID0gQSArIDQ0IHwgMCwgbCA9IEEgKyA0MCB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoSVtyICsgNTY0MCB8IDBdICYgMikgewogICAgICAgICAgICAgICAgICAgIHcgPSBlW3IgKyA1MTY4ID4+IDJdLCBjID0gciArIDUxODAgfCAwLCBsID0gciArIDUxNjggfCAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVtCICsgMjggPj4gMl0gPSAodCArIGwgfCAwKSAtIHcsIGMgPSBCICsgMjggfCAwLCBsID0gQiArIDI0IHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChBID0gZVtjID4+IDJdLCBlW2ggKyAxMiA+PiAyXSA9IDAsIGVbaCArIDE2ID4+IDJdID0gMCwgZVtoICsgOCA+PiAyXSA9IHcsIGVbaCA+PiAyXSA9IHcsIGVbaCArIDQgPj4gMl0gPSBBICsgdywgIUgxKGgsIDEpKSB7CiAgICAgICAgICAgICAgICAgIGo2KGgpLCBBID0gZVtoICsgOCA+PiAyXSwgaSA9IGVbaCA+PiAyXSwgSTEoaCksIGkgPSAoQSAtIGkgfCAwKSArIHcgfCAwOwogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoSVtyIHwgMF0gJiA0KSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbbCA+PiAyXSArIChlW2MgPj4gMl0gLSBpIHwgMCkgPj4+IDAgPD0gMSkgewogICAgICAgICAgICAgICAgICAgICAgUShhLCAyLCA3MjM3LCAwKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghKElbaSB8IDBdID09IDI1NSAmIElbaSArIDEgfCAwXSA9PSAxNDYpKSB7CiAgICAgICAgICAgICAgICAgICAgICBRKGEsIDIsIDcyNzksIDApOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW2MgPj4gMl0gPSBlW2MgPj4gMl0gKyAoZVtsID4+IDJdIC0gaSB8IDApLCBlW2wgPj4gMl0gPSBpLCBlW2sgPj4gMl0gPSAwLCBlW24gPj4gMl0gPSBlW0IgKyAyNCA+PiAyXSAtIHQsIEogPSAxOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbQyArIDI0ID4+IDJdKQogICAgICAgICAgICAgICAgICBmb3IgKHYgPSBDICsgMjggfCAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgIGkgPSBlW2YgKyAzNiA+PiAyXSwgdSA9IGVbdiArIDIwID4+IDJdOwogICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3YgKyAxMiA+PiAyXSA9PSBlW3YgKyA0ID4+IDJdIHwgZVt2ICsgOCA+PiAyXSA9PSBlW3YgPj4gMl0gfHwgKHkgPSB1ICsgWihpLCA0MCkgfCAwLCBFID0gWihlW3kgKyAyMCA+PiAyXSwgZVt5ICsgMTYgPj4gMl0pLCAhRSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSBlW3kgKyAyNCA+PiAyXSwgcCA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbdSArIDQwID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBHNihoLCBlW3kgKyAzMiA+PiAyXSwgcCwgZVtmICsgNDAgPj4gMl0gKyAxIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gSDEoaCwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt1ICsgMzYgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW3UgKyA0MCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgQSA9IGksIGkgPSBpICsgMSB8IDAsICFHNihoLCBlW3kgKyAzNiA+PiAyXSwgcCwgQSk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbdiArIDI4ID4+IDJdLCBlW3UgKyAzMiA+PiAyXSA9IDMsIGVbdSArIDI0ID4+IDJdID0gaSwgZVt1ICsgMjggPj4gMl0gPSAoaSAtIEEgfCAwKSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSDEoaCwgMSkgfHwgKEEgPSAyLCAhSDEoaCwgMSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBIMShoLCAyKSwgKEEgfCAwKSAhPSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBBICsgMyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IEgxKGgsIDUpLCAoQSB8IDApICE9IDMxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBBICsgNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gSDEoaCwgNykgKyAzNyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZVt1ICsgMzYgPj4gMl0gPSBBLCBpID0gMDsgQSA9IGksIGkgPSBpICsgMSB8IDAsICEhSDEoaCwgMSk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW3UgKyAzMiA+PiAyXSA9IEEgKyBlW3UgKyAzMiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gZVt1ICsgNDAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVsoZVtyICsgNTU4NCA+PiAyXSArIFooZVtmICsgMjggPj4gMl0sIDEwODApIHwgMCkgKyAxNiA+PiAyXSwgIWVbdSArIDQ4ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gbzAoZVt1ID4+IDJdLCAyNDApLCAhQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3UgPj4gMl0gPSBBLCBkMihBICsgWihlW3UgKyA0OCA+PiAyXSwgMjQpIHwgMCwgMCwgMjQwKSwgZVt1ICsgNDggPj4gMl0gPSAxMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlW3UgPj4gMl0sIEEgPSBvLCBlW0EgPj4gMl0gPSAwLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBICsgMTYgPj4gMl0gPSAwLCBlW0EgKyAyMCA+PiAyXSA9IDAsIGVbQSArIDggPj4gMl0gPSAwLCBlW0EgKyAxMiA+PiAyXSA9IDAsIEEgPSAwLCBpID0gaSAmIDQgPyAxIDogaSAmIDEgPyAxMCA6IDEwOTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVt1ID4+IDJdLCBnID0gQSAtIDEgfCAwLCBvID0gaSArIFooZywgMjQpIHwgMCwgZVtvICsgNCA+PiAyXSAhPSBlW28gKyAxMiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBlWyhlW3IgKyA1NTg0ID4+IDJdICsgWihlW2YgKyAyOCA+PiAyXSwgMTA4MCkgfCAwKSArIDE2ID4+IDJdLCBnID0gZVt1ICsgNDggPj4gMl0sIGcgPj4+IDAgPCBBICsgMSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBnICsgMTAgfCAwLCBpID0gbzAoaSwgWihnLCAyNCkpLCAhaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdSA+PiAyXSA9IGksIGQyKGkgKyBaKGVbdSArIDQ4ID4+IDJdLCAyNCkgfCAwLCAwLCAyNDApLCBlW3UgKyA0OCA+PiAyXSA9IGcsIGkgPSBlW3UgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBaKEEsIDI0KSArIGkgfCAwLCBnID0gbywgZVtnID4+IDJdID0gMCwgZVtnICsgNCA+PiAyXSA9IDAsIGVbZyArIDE2ID4+IDJdID0gMCwgZVtnICsgMjAgPj4gMl0gPSAwLCBlW2cgKyA4ID4+IDJdID0gMCwgZVtnICsgMTIgPj4gMl0gPSAwLCBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyAmIDQgfHwgKGkgPSAxMDksICEocyAmIDEpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2cgLSAxMiA+PiAyXSwgaSA9IChpIHwgMCkgPT0gMSB8fCAoaSB8IDApID09IDEwID8gMiA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBBLCBlW28gKyAxMiA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IGVbdSArIDM2ID4+IDJdLCBJWyhlW3IgKyA1NTg0ID4+IDJdICsgWihlW2YgKyAyOCA+PiAyXSwgMTA4MCkgfCAwKSArIDE2IHwgMF0gJiA2NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBaKGcsIDI0KSwgbSA9IGcgPyBBIDogMSwgZVsocyArIGVbdSA+PiAyXSB8IDApICsgMTYgPj4gMl0gPSBtLCBIID0gZVt1ICsgMzIgPj4gMl0sIG8gPSAwLCBpID0gQSwgbSA+Pj4gMCA+PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG8gPSBvICsgMSB8IDAsIG0gPSBpID4+PiAwID4gMywgaSA9IGkgPj4+IDEgfCAwLCAhIW07ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gbyArIEggfCAwLCBpID4+PiAwID49IDMzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0IgKyAxNiA+PiAyXSA9IGksIFEoYSwgMSwgMjc1MzAsIEIgKyAxNiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBIMShoLCBpKSwgaSA9IGVbdSA+PiAyXSwgcyA9IHMgKyBpIHwgMCwgZVtzICsgMjAgPj4gMl0gPSBvLCBBID0gQSAtIGVbcyArIDE2ID4+IDJdIHwgMCwgKEEgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGVbKGVbciArIDU1ODQgPj4gMl0gKyBaKGVbZiArIDI4ID4+IDJdLCAxMDgwKSB8IDApICsgMTYgPj4gMl0sIHMgPSBlW3UgKyA0OCA+PiAyXSwgcyA+Pj4gMCA8IGcgKyAyID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IHMgKyAxMCB8IDAsIGkgPSBvMChpLCBaKHMsIDI0KSksICFpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt1ID4+IDJdID0gaSwgZDIoaSArIFooZVt1ICsgNDggPj4gMl0sIDI0KSB8IDAsIDAsIDI0MCksIGVbdSArIDQ4ID4+IDJdID0gcywgaSA9IGVbdSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBnICsgMSB8IDAsIGkgPSBpICsgWihnLCAyNCkgfCAwLCBlW2kgPj4gMl0gPSAwLCBlW2kgKyA0ID4+IDJdID0gMCwgZVtpICsgMTYgPj4gMl0gPSAwLCBlW2kgKyAyMCA+PiAyXSA9IDAsIGVbaSArIDggPj4gMl0gPSAwLCBlW2kgKyAxMiA+PiAyXSA9IDAsIG8gJiA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2kgKyAxMiA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyAmIDEgPyAobyA9IGksIGkgPSBlW2kgLSAxMiA+PiAyXSwgZVtvICsgMTIgPj4gMl0gPSAoaSB8IDApID09IDEgfHwgKGkgfCAwKSA9PSAxMCA/IDIgOiAxKSA6IGVbaSArIDEyID4+IDJdID0gMTA5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBaKGcsIDI0KSwgbyA9IHMgKyBlW3UgPj4gMl0gfCAwLCBpID0gZVtvICsgMTIgPj4gMl0gLSBlW28gKyA0ID4+IDJdIHwgMCwgaSA9IChBIHwgMCkgPiAoaSB8IDApID8gaSA6IEEsIGVbbyArIDE2ID4+IDJdID0gaSwgbSA9IGVbdSArIDMyID4+IDJdLCBvID0gMCwgaSA+Pj4gMCA+PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBvID0gbyArIDEgfCAwLCBIID0gaSA+Pj4gMCA+IDMsIGkgPSBpID4+PiAxIHwgMCwgISFIOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gbyArIG0gfCAwLCBpID4+PiAwID49IDMzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtCID4+IDJdID0gaSwgUShhLCAxLCAyNzUzMCwgQik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IEgxKGgsIGkpLCBpID0gZVt1ID4+IDJdLCBzID0gcyArIGkgfCAwLCBlW3MgKyAyMCA+PiAyXSA9IG8sIEEgPSBBIC0gZVtzICsgMTYgPj4gMl0gfCAwLCAoQSB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBlWyhlW3IgKyA1NTg0ID4+IDJdICsgWihlW2YgKyAyOCA+PiAyXSwgMTA4MCkgfCAwKSArIDE2ID4+IDJdLCBzID0gZVt1ICsgNDggPj4gMl0sIHMgPj4+IDAgPCBnICsgMiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gcyArIDEwIHwgMCwgaSA9IG8wKGksIFoocywgMjQpKSwgIWkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdSA+PiAyXSA9IGksIGQyKGkgKyBaKGVbdSArIDQ4ID4+IDJdLCAyNCkgfCAwLCAwLCAyNDApLCBlW3UgKyA0OCA+PiAyXSA9IHMsIGkgPSBlW3UgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBnICsgMSB8IDAsIGkgPSBpICsgWihnLCAyNCkgfCAwLCBlW2kgPj4gMl0gPSAwLCBlW2kgKyA0ID4+IDJdID0gMCwgZVtpICsgMTYgPj4gMl0gPSAwLCBlW2kgKyAyMCA+PiAyXSA9IDAsIGVbaSArIDggPj4gMl0gPSAwLCBlW2kgKyAxMiA+PiAyXSA9IDAsIG8gJiA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtpICsgMTIgPj4gMl0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gJiAxID8gKG8gPSBpLCBpID0gZVtpIC0gMTIgPj4gMl0sIGVbbyArIDEyID4+IDJdID0gKGkgfCAwKSA9PSAxIHx8IChpIHwgMCkgPT0gMTAgPyAyIDogMSkgOiBlW2kgKyAxMiA+PiAyXSA9IDEwOTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgSTEoaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IHUgLSAtNjQgfCAwLCBwID0gcCArIDEgfCAwLCAoRSB8IDApID09IChwIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh2ID0gdiArIDM2IHwgMCwgRCA9IEQgKyAxIHwgMCwgIShEID4+PiAwIDwgZFtDICsgMjQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghajYoaCkpIHsKICAgICAgICAgICAgICAgICAgSTEoaCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBBID0gZVtoICsgOCA+PiAyXSwgaSA9IGVbaCA+PiAyXSwgSTEoaCksIGkgPSAoQSAtIGkgfCAwKSArIHcgfCAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIShJW3IgfCAwXSAmIDQpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGlmIChlW2wgPj4gMl0gKyAoZVtjID4+IDJdIC0gaSB8IDApID4+PiAwIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgICBRKGEsIDIsIDcyMzcsIDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCEoSVtpIHwgMF0gPT0gMjU1ICYgSVtpICsgMSB8IDBdID09IDE0NikpIHsKICAgICAgICAgICAgICAgICAgICBRKGEsIDIsIDcyNzksIDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaSA9IGkgKyAyIHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVbYyA+PiAyXSA9IGVbYyA+PiAyXSArIChlW2wgPj4gMl0gLSBpIHwgMCksIGVbbCA+PiAyXSA9IGksIEogPSAxLCBlW2sgPj4gMl0gPSAxLCBlW24gPj4gMl0gPSBlW0IgKyAyNCA+PiAyXSAtIHQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gQiArIDMyIHwgMCwgSjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiAkQShBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IFcoMCksIHMgPSAwLCB3ID0gMDsKICAgICAgICAgICAgICBhID0gWCAtIDQ4IHwgMCwgWCA9IGEsIGVbQSArIDggPj4gMl0gPSAxOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgZiA9IGEgKyA0MCB8IDA7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoKGkxKGksIGYsIDIsIHIpIHwgMCkgIT0gMiB8fCAoaDIoZiwgYSArIDQ0IHwgMCwgMiksIGVbYSArIDQ0ID4+IDJdICE9IDY1MzU5KSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gPSAyLCBmID0gZVtpICsgNTYgPj4gMl0sIGsgPSBmIC0gMiB8IDAsIGYgPSBlW2kgKyA2MCA+PiAyXSAtIChmID4+PiAwIDwgMikgfCAwLCB0ID0gZVtBICsgMjAwID4+IDJdLCBlW3QgPj4gMl0gPSBrLCBlW3QgKyA0ID4+IDJdID0gZiwgZVthICsgMTYgPj4gMl0gPSBrLCBlW2EgKyAyMCA+PiAyXSA9IGYsIFEociwgNCwgMjQxMjQsIGEgKyAxNiB8IDApLCB0ID0gZVtBICsgMjAwID4+IDJdLCBvID0gZVt0ID4+IDJdLCBrID0gZVt0ICsgMjQgPj4gMl0sIGYgPSBrICsgMSB8IDAsIG4gPSBlW3QgKyAzMiA+PiAyXSwgZiA+Pj4gMCA8PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBuID0gZVt0ICsgMjggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBoID0gVyhXKG4gPj4+IDApICsgVygxMDApKTsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA8IFcoNDI5NDk2NzI5NikgJiBoID49IFcoMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IH5+aCA+Pj4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVt0ICsgMzIgPj4gMl0gPSBmLCBuID0gbzAoZVt0ICsgMjggPj4gMl0sIFooZiwgMjQpKSwgbikgewogICAgICAgICAgICAgICAgICAgICAgZVt0ICsgMjggPj4gMl0gPSBuLCBrID0gZVt0ICsgMjQgPj4gMl0sIGYgPSBrICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBSKGVbdCArIDI4ID4+IDJdKSwgZVt0ICsgMzIgPj4gMl0gPSAwLCBlW3QgKyAyNCA+PiAyXSA9IDAsIGVbdCArIDI4ID4+IDJdID0gMCwgUShyLCAxLCA2NDEwLCAwKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBRKHIsIDEsIDI4MDA2LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoayA9IFooaywgMjQpICsgbiB8IDAsIGVbayArIDE2ID4+IDJdID0gMiwgZVtrICsgOCA+PiAyXSA9IG8sIGVbayArIDEyID4+IDJdID0gbyA+PiAzMSwgdTJbayA+PiAxXSA9IDY1MzU5LCBlW3QgKyAyNCA+PiAyXSA9IGYsIChpMShpLCBlW0EgKyAxNiA+PiAyXSwgMiwgcikgfCAwKSAhPSAyKSB7CiAgICAgICAgICAgICAgICAgIFEociwgMSwgNDM1MiwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaDIoZVtBICsgMTYgPj4gMl0sIGEgKyA0MCB8IDAsIDIpOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW2EgKyA0MCA+PiAyXSwgKG4gfCAwKSAhPSA2NTQyNCkgewogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gMzEzNDQsIG4gPj4+IDAgPD0gNjUyNzkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW2EgPj4gMl0gPSBuLCBRKHIsIDEsIDQxNDksIGEpLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBmID0gaywgdCA9IGVbZiA+PiAyXSwgISEodCAmJiAoayA9IGYgKyAxMiB8IDAsICh0IHwgMCkgIT0gKG4gfCAwKSkpOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gMiwgUShyLCAyLCA2MzU4LCAwKSwgayA9IDQzNTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkxKGksIGVbQSArIDE2ID4+IDJdLCAyLCByKSB8IDApICE9IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgyKGVbQSArIDE2ID4+IDJdLCBhICsgNDQgfCAwLCAyKSwgdCA9IDMxMzQ0LCBuID0gZVthICsgNDQgPj4gMl0sIG4gPj4+IDAgPj0gNjUyODApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGYgPSB0LCBnID0gZVtmID4+IDJdLCAhIShnICYmICh0ID0gZiArIDEyIHwgMCwgKG4gfCAwKSAhPSAoZyB8IDApKSk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGVbZiArIDQgPj4gMl0gJiBlW0EgKyA4ID4+IDJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSA4ODk4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSA9PSA2NTQyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVthICsgNDAgPj4gMl0gPSA2NTQyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gZVtpICsgNTYgPj4gMl0sIHQgPSBlW0EgKyAyMDAgPj4gMl0sIGYgPSBlW3QgKyAyNCA+PiAyXSwgbiA9IGYgKyAxIHwgMCwgayA9IGVbdCArIDMyID4+IDJdLCBuID4+PiAwIDw9IGsgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBlW3QgKyAyOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBXKFcoayA+Pj4gMCkgKyBXKDEwMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoIDwgVyg0Mjk0OTY3Mjk2KSAmIGggPj0gVygwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gfn5oID4+PiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3QgKyAzMiA+PiAyXSA9IGYsIGsgPSBvMChlW3QgKyAyOCA+PiAyXSwgWihmLCAyNCkpLCBrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3QgKyAyOCA+PiAyXSA9IGssIGYgPSBlW3QgKyAyNCA+PiAyXSwgbiA9IGYgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIoZVt0ICsgMjggPj4gMl0pLCBlW3QgKyAzMiA+PiAyXSA9IDAsIGVbdCArIDI0ID4+IDJdID0gMCwgZVt0ICsgMjggPj4gMl0gPSAwLCBrID0gNjQxMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB1ICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkxKGksIGVbQSArIDE2ID4+IDJdLCAyLCByKSB8IDApICE9IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKHIsIDEsIGssIDApLCBRKHIsIDEsIDIwMzgzLCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSBaKGYsIDI0KSArIGsgfCAwLCBlW2YgKyAxNiA+PiAyXSA9IHUsIGsgPSBvIC0gdSB8IDAsIGVbZiArIDggPj4gMl0gPSBrLCBlW2YgKyAxMiA+PiAyXSA9IGsgPj4gMzEsIHUyW2YgPj4gMV0gPSAwLCBlW3QgKyAyNCA+PiAyXSA9IG4sIGVbYSArIDQwID4+IDJdID0gZywgbiA9IDMxMzQ0OyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IG4sIHQgPSBlW2YgPj4gMl0sICF0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gZiArIDEyIHwgMCwgKHQgfCAwKSA9PSAoZyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlW2YgKyA0ID4+IDJdICYgZVtBICsgOCA+PiAyXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEociwgMSwgODg5OCwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpMShpLCBlW0EgKyAxNiA+PiAyXSwgMiwgcikgfCAwKSAhPSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKHIsIDEsIDQzNTIsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoMihlW0EgKyAxNiA+PiAyXSwgYSArIDM2IHwgMCwgMiksIGsgPSBlW2EgKyAzNiA+PiAyXSwgayA+Pj4gMCA8PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKHIsIDEsIDEwMDE1LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGsgLSAyIHwgMCwgZVthICsgMzYgPj4gMl0gPSBrLCBuID0gZVtBICsgMTYgPj4gMl0sIGRbQSArIDIwID4+IDJdIDwgayA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBvMChuLCBrKSwgIW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUihlW0EgKyAxNiA+PiAyXSksIGVbQSArIDE2ID4+IDJdID0gMCwgZVtBICsgMjAgPj4gMl0gPSAwLCBRKHIsIDEsIDg0NzQsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gbiwgayA9IGVbYSArIDM2ID4+IDJdLCBlW0EgKyAyMCA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gaTEoaSwgbiwgaywgciksIChrIHwgMCkgIT0gZVthICsgMzYgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEociwgMSwgNDM1MiwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobzJbZVtmICsgOCA+PiAyXV0oQSwgZVtBICsgMTYgPj4gMl0sIGssIHIpIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEociwgMSwgNDM3MCwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbaSArIDU2ID4+IDJdLCBnID0gZVthICsgMzYgPj4gMl0sIGYgPSBlW0EgKyAyMDAgPj4gMl0sIHUgPSBlW2YgKyAyNCA+PiAyXSwgayA9IHUgKyAxIHwgMCwgbiA9IGVbZiArIDMyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID4+PiAwIDw9IG4gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbZiArIDI4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IFcoVyhuID4+PiAwKSArIFcoMTAwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoIDwgVyg0Mjk0OTY3Mjk2KSAmIGggPj0gVygwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB+fmggPj4+IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2YgKyAzMiA+PiAyXSA9IGssIG4gPSBvMChlW2YgKyAyOCA+PiAyXSwgWihrLCAyNCkpLCAhbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbZiArIDI4ID4+IDJdID0gbiwgdSA9IGVbZiArIDI0ID4+IDJdLCBrID0gdSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IFoodSwgMjQpICsgbiB8IDAsIGVbbiArIDE2ID4+IDJdID0gZyArIDQsIG8gPSAobyAtIGcgfCAwKSAtIDQgfCAwLCBlW24gKyA4ID4+IDJdID0gbywgZVtuICsgMTIgPj4gMl0gPSBvID4+IDMxLCB1MltuID4+IDFdID0gdCwgZVtmICsgMjQgPj4gMl0gPSBrLCAoaTEoaSwgZVtBICsgMTYgPj4gMl0sIDIsIHIpIHwgMCkgIT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUShyLCAxLCA0MzUyLCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9ICh0IHwgMCkgPT0gNjUzNzIgPyAxIDogdywgbCA9ICh0IHwgMCkgPT0gNjUzNjIgPyAxIDogbCwgcyA9ICh0IHwgMCkgPT0gNjUzNjEgPyAxIDogcywgaDIoZVtBICsgMTYgPj4gMl0sIGEgKyA0MCB8IDAsIDIpLCBuID0gZVthICsgNDAgPj4gMl0sIChuIHwgMCkgIT0gNjU0MjQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChzKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBRKHIsIDEsIDgyODYsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICghbCkgewogICAgICAgICAgICAgICAgICAgIFEociwgMSwgODMzMiwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCF3KSB7CiAgICAgICAgICAgICAgICAgICAgUShyLCAxLCA4Mzc4LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB0ID0gMCwgdSA9IDAsIHMgPSAwLCBvID0gWCAtIDE2IHwgMCwgWCA9IG8sIHcgPSAxOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoRltBICsgMTg4IHwgMF0gJiAxKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyAxMTIgPj4gMl0sICFrKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbQSArIDExNiA+PiAyXSArIChzIDw8IDMpIHwgMCwgbCA9IGVbZiA+PiAyXSwgbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW2YgKyA0ID4+IDJdLCBmID0gdCAtIG4gfCAwLCBmID0gdCA+Pj4gMCA+PSBmID4+PiAwID8gZiA6IDAsIHQgPj4+IDAgPCBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IG4gLSB0IHwgMCwgbiA9IHQgKyBsIHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA8IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoMihuLCBvICsgMTIgfCAwLCA0KSwgdCA9IGVbbyArIDEyID4+IDJdLCBsID0gayAtIDQgfCAwLCBnID0gdCA+Pj4gMCA+IGwgPj4+IDAsIGYgPSBnID8gdCAtIGwgfCAwIDogZiwgayA9IGwgLSB0IHwgMCwgdSA9IHQgKyB1IHwgMCwgbiA9ICgoZyA/IDAgOiB0KSArIG4gfCAwKSArIDQgfCAwLCAhKHQgPj4+IDAgPCBsID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBlW0EgKyAxMTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBzICsgMSB8IDAsICEocyA+Pj4gMCA8IGsgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0KQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAwLCBRKHIsIDEsIDUzMzIsIDApOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgdyA9IDAsIFEociwgMSwgOTE0NiwgMCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodCA9IFUyKHUpLCBlW0EgKyAxMzYgPj4gMl0gPSB0LCAhdCkgewogICAgICAgICAgICAgICAgICAgICAgdyA9IDAsIFEociwgMSwgNjk4NiwgMCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlW0EgKyAxMjQgPj4gMl0gPSB1LCBsID0gZVtBICsgMTE2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtBICsgMTEyID4+IDJdLCBmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IDAsIHQgPSAwLCB1ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IHUgPDwgMywgZyA9IHMgKyBsIHwgMCwgbiA9IGVbZyA+PiAyXSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGVbQSArIDEzNiA+PiAyXSArIHQgfCAwLCBmID0gZVtnICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPj4+IDAgPD0gayA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyKGwsIG4sIGYpLCB0ID0gdCArIGYgfCAwLCBrID0gayAtIGYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChGMihsLCBuLCBrKSwgdCA9IHQgKyBrIHwgMCwgbCA9IGYgLSBrIHwgMCwgayA9IGsgKyBuIHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA8IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoMihrLCBvICsgOCB8IDAsIDQpLCBrID0gayArIDQgfCAwLCBuID0gZVtBICsgMTM2ID4+IDJdICsgdCB8IDAsIGYgPSBsIC0gNCB8IDAsIGwgPSBlW28gKyA4ID4+IDJdLCBmID4+PiAwIDwgbCA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjIobiwgaywgZiksIHQgPSB0ICsgZiB8IDAsIGsgPSBlW28gKyA4ID4+IDJdIC0gZiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRjIobiwgaywgbCksIG4gPSBlW28gKyA4ID4+IDJdLCB0ID0gbiArIHQgfCAwLCBrID0gayArIG4gfCAwLCBsID0gZiAtIG4gfCAwLCAhbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUihlW3MgKyBlW0EgKyAxMTYgPj4gMl0gPj4gMl0pLCBsID0gZVtBICsgMTE2ID4+IDJdLCBmID0gcyArIGwgfCAwLCBlW2YgPj4gMl0gPSAwLCBlW2YgKyA0ID4+IDJdID0gMCwgZiA9IGVbQSArIDExMiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSB1ICsgMSB8IDAsICEodSA+Pj4gMCA8IGYgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGVbQSArIDEyNCA+PiAyXSwgdCA9IGVbQSArIDEzNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDE0NCA+PiAyXSA9IHUsIGVbQSArIDEyMCA+PiAyXSA9IHQsIGVbQSArIDExMiA+PiAyXSA9IDAsIFIobCksIGVbQSArIDExNiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3ID0gMCwgUShyLCAxLCA5MTQ2LCAwKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoWCA9IG8gKyAxNiB8IDAsICF3KSB7CiAgICAgICAgICAgICAgICAgICAgUShyLCAxLCAxODEwMSwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgUShyLCA0LCAyMjgxMywgMCksIHIgPSBlW0EgKyAyMDAgPj4gMl0sIGYgPSBlW2kgKyA1NiA+PiAyXSwgZiA9IGYgLSAyIHwgMCwgZVtyICsgOCA+PiAyXSA9IGYsIGVbciArIDEyID4+IDJdID0gMCwgZVtBICsgOCA+PiAyXSA9IDgsIEEgPSAxOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgUihlW2YgKyAyOCA+PiAyXSksIGVbZiArIDMyID4+IDJdID0gMCwgZVtmICsgMjQgPj4gMl0gPSAwLCBlW2YgKyAyOCA+PiAyXSA9IDAsIFEociwgMSwgNjQxMCwgMCksIEEgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGEgKyA0OCB8IDAsIEEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGtyKEEsIGksIHIsIGYsIGssIHQsIG4sIGwpIHsKICAgICAgICAgICAgICB2YXIgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMCwgeSA9IDAsIHAgPSAwLCBIID0gMCwgSiA9IDAsIEUgPSAwLCBEID0gMCwgVSA9IDAsIFAgPSAwLCB4ID0gMCwgeiA9IDAsIGogPSAwLCBPID0gMCwgcSA9IDAsIGYyID0gMCwgbjIgPSAwOwogICAgICAgICAgICAgIHMgPSBYIC0gODAgfCAwLCBYID0gcywgdSA9IGVbciArIDMyID4+IDJdLCBnID0gZVsoZVtBICsgMjAgPj4gMl0gKyBaKGVbciArIDI4ID4+IDJdLCA3NikgfCAwKSArIDI4ID4+IDJdLCBIID0gZVtyICsgNDAgPj4gMl0sIG0gPSBlW3IgKyAzNiA+PiAyXTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoSVtpIHwgMF0gJiAyKSB7CiAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAwIDw9IDUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBlW3MgKyA2OCA+PiAyXSA9IDYsIGVbcyArIDY0ID4+IDJdID0gdCwgUShsLCAxLCAyMjg4NCwgcyAtIC02NCB8IDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgRltmIHwgMF0gPSAyNTUsIEZbZiArIDEgfCAwXSA9IDE0NSwgRltmICsgMiB8IDBdID0gMCwgRltmICsgMyB8IDBdID0gNCwgRltmICsgNCB8IDBdID0gZVtBICsgODQwID4+IDJdID4+PiA4LCBGW2YgKyA1IHwgMF0gPSBlW0EgKyA4NDAgPj4gMl0sIHQgPSB0IC0gNiB8IDAsIEEgPSBmICsgNiB8IDA7CiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgQSA9IGY7CiAgICAgICAgICAgICAgICB5ID0gQTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChDID0gZyArIFoodSwgMTUyKSB8IDAsICEoIWVbQyArIDI0ID4+IDJdIHwgSCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IEMgKyAyOCB8IDAsIGcgPSBaKG0sIDQwKTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVt1ICsgMTIgPj4gMl0gPT0gZVt1ICsgNCA+PiAyXSB8IGVbdSArIDggPj4gMl0gPT0gZVt1ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBaKGVbQyArIDIwID4+IDJdLCBlW0MgKyAxNiA+PiAyXSksIEEgPj4+IDAgPD0gbSA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gZyArIGVbdSArIDIwID4+IDJdIHwgMCwgWmkoZVtBICsgMzIgPj4gMl0pLCBaaShlW0EgKyAzNiA+PiAyXSksIG8gPSBaKGVbQSArIDIwID4+IDJdLCBlW0EgKyAxNiA+PiAyXSksICFvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gMDsgaCA9IGVbQSArIDI0ID4+IDJdICsgWihyLCA1MikgfCAwLCBlW2ggKyA0MCA+PiAyXSA9IDAsICQ2KGVbQSArIDM2ID4+IDJdLCByLCBlW3UgKyAyOCA+PiAyXSAtIGVbaCArIDI4ID4+IDJdIHwgMCksIHIgPSByICsgMSB8IDAsIChvIHwgMCkgIT0gKHIgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gdSArIDM2IHwgMCwgdyA9IHcgKyAxIHwgMCwgISh3ID4+PiAwIDwgZFtDICsgMjQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gVTIoMjApLCAhYSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2EgKyAxMiA+PiAyXSA9IDAsIGVbYSArIDE2ID4+IDJdID0gOCwgZVthICsgOCA+PiAyXSA9IHksIGVbYSA+PiAyXSA9IHksIGVbYSArIDQgPj4gMl0gPSB0ICsgeSwgb2UoYSwgMSksIGggPSBDICsgMjggfCAwLCBlW0MgKyAyNCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gSCArIDEgfCAwLCBPID0gWihtLCA0MCksIHggPSBaKEgsIDI0KSwgYyA9IGg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbYyArIDEyID4+IDJdID09IGVbYyArIDQgPj4gMl0gfCBlW2MgKyA4ID4+IDJdID09IGVbYyA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gWihlW0MgKyAyMCA+PiAyXSwgZVtDICsgMTYgPj4gMl0pLCBBID4+PiAwIDw9IG0gPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCA9IGVbYyArIDIwID4+IDJdICsgTyB8IDAsIFAgPSBaKGVbcCArIDIwID4+IDJdLCBlW3AgKyAxNiA+PiAyXSksICFQKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gZVtwICsgMjQgPj4gMl0sIEEgPSAwOyBlW3IgKyA0MCA+PiAyXSB8ICFlW2VbciArIDQgPj4gMl0gKyB4ID4+IDJdIHx8ICQ2KGVbcCArIDMyID4+IDJdLCBBLCBIKSwgciA9IHIgKyA1MiB8IDAsIEEgPSBBICsgMSB8IDAsIChQIHwgMCkgIT0gKEEgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEIgPSBlW3AgKyAyNCA+PiAyXSwgSiA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSBlW0IgKyA0ID4+IDJdICsgeCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbQiArIDQwID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXNihhLCBlW3AgKyAzMiA+PiAyXSwgSiwgaik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZShhLCBlW0UgPj4gMl0gIT0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbRSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtCICsgNDAgPj4gMl0gfHwgKGVbQiArIDMyID4+IDJdID0gMywgVzYoYSwgZVtwICsgMzYgPj4gMl0sIEosIDk5OSksIHIgPSBlW0UgPj4gMl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAociAtIDEgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2UoYSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplKGEsIDIsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPD0gNSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZShhLCByIC0gMyB8IDEyLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDw9IDM2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplKGEsIHIgLSA2IHwgNDgwLCA5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwID4gMTY0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemUoYSwgciAtIDM3IHwgNjU0MDgsIDE2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IDAsIGcgPSAwLCB1ID0gMCwgdiA9IGVbQiArIDQwID4+IDJdLCBEID0gdiArIGVbRSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPj4+IDAgPj0gRCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocSA9IEQgLSAxIHwgMCwgdyA9IGVbQiArIDggPj4gMl0gKyBaKHYsIDI0KSB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBnICsgMSB8IDAsIEEgPSBlW3cgKyAxNiA+PiAyXSArIEEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoRlt3ICsgMjAgfCAwXSAmIDEgfCAodiB8IDApID09IChxIHwgMCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVID0gMSwgbyA9IDAsIChBIHwgMCkgPj0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGcgPSBvLCBvID0gbyArIDEgfCAwLCBVID0gQSA+Pj4gMCA+IDMsIEEgPSBBID4+PiAxIHwgMCwgISFVOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUgPSBnICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gMCwgQSA9IDAsIChyIHwgMCkgPj0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG8gPSBBLCBBID0gQSArIDEgfCAwLCBmMiA9IHIgPj4+IDAgPiAzLCByID0gciA+Pj4gMSB8IDAsICEhZjI7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IG8gXiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBBICsgKFUgLSBlW0IgKyAzMiA+PiAyXSB8IDApIHwgMCwgdSA9IChBIHwgMCkgPCAodSB8IDApID8gdSA6IEEsIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gdyArIDI0IHwgMCwgdiA9IHYgKyAxIHwgMCwgKEQgfCAwKSA9PSAodiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSB1LCAociB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgb2UoYSwgMSksIG8gPSByID4+PiAwID4gMSwgciA9IHIgLSAxIHwgMCwgISFvOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9lKGEsIDApLCBlW0IgKyAzMiA+PiAyXSA9IGVbQiArIDMyID4+IDJdICsgdSwgdiA9IGVbQiArIDQwID4+IDJdLCBEID4+PiAwIDw9IHYgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodyA9IGVbQiArIDggPj4gMl0gKyBaKHYsIDI0KSB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZyArIDEgfCAwLCBBID0gZVt3ICsgMTYgPj4gMl0gKyBBIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoRlt3ICsgMjAgfCAwXSAmIDEgfCAoKGVbQiArIDQwID4+IDJdICsgZVtFID4+IDJdIHwgMCkgLSAxIHwgMCkgPT0gKHYgfCAwKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gMCwgbyA9IDAsIChyIHwgMCkgPj0gMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbyA9IG8gKyAxIHwgMCwgdSA9IHIgPj4+IDAgPiAzLCByID0gciA+Pj4gMSB8IDAsICEhdTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZShhLCBBLCBlW0IgKyAzMiA+PiAyXSArIG8gfCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA9IHcgKyAyNCB8IDAsIHYgPSB2ICsgMSB8IDAsIChEIHwgMCkgPT0gKHYgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCID0gQiArIDUyIHwgMCwgSiA9IEogKyAxIHwgMCwgKFAgfCAwKSA9PSAoSiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9IGMgKyAzNiB8IDAsIHogPSB6ICsgMSB8IDAsICEoeiA+Pj4gMCA8IGRbQyArIDI0ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB1ID0gZVthICsgMTIgPj4gMl0sIEEgPSB1IDw8IDggJiA2NTI4MCwgZVthICsgMTIgPj4gMl0gPSBBLCBlW2EgKyAxNiA+PiAyXSA9IChBIHwgMCkgPT0gNjUyODAgPyA3IDogOCwgciA9IGVbYSArIDggPj4gMl0sIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA+PSBkW2EgKyA0ID4+IDJdIHx8IChlW2EgKyA4ID4+IDJdID0gciArIDEsIEZbciB8IDBdID0gdSwgQSA9IDEsIGVbYSArIDE2ID4+IDJdICE9IDcpIHx8ICh1ID0gZVthICsgMTIgPj4gMl0sIEEgPSB1IDw8IDggJiA2NTI4MCwgZVthICsgMTIgPj4gMl0gPSBBLCBlW2EgKyAxNiA+PiAyXSA9IChBIHwgMCkgPT0gNjUyODAgPyA3IDogOCwgciA9IGVbYSArIDggPj4gMl0sIEEgPSAwLCByID4+PiAwID49IGRbYSArIDQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgIGVbYSArIDggPj4gMl0gPSByICsgMSwgRltyIHwgMF0gPSB1LCBBID0gMTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghQSkgewogICAgICAgICAgICAgICAgICAgICAgICBJMShhKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gZVthICsgOCA+PiAyXSAtIGVbYSA+PiAyXSB8IDAsIEkxKGEpLCBvID0gdCAtIEEgfCAwLCBnID0gQSArIHkgfCAwLCBJW2kgfCAwXSAmIDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPj4+IDAgPD0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVbcyArIDIwID4+IDJdID0gMiwgZVtzICsgMTYgPj4gMl0gPSBvLCBRKGwsIDEsIDIyODg0LCBzICsgMTYgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEZbZyB8IDBdID0gMjU1LCBGW2cgKyAxIHwgMF0gPSAxNDYsIG8gPSBvIC0gMiB8IDAsIGcgPSBnICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtDICsgMjQgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSAwLCAobiB8IDApID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBaKG0sIDQwKSwgbiA9IFooSCwgMjQpOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtoICsgMTIgPj4gMl0gPT0gZVtoICsgNCA+PiAyXSB8IGVbaCArIDggPj4gMl0gPT0gZVtoID4+IDJdIHx8IChBID0gdCArIGVbaCArIDIwID4+IDJdIHwgMCwgdSA9IFooZVtBICsgMjAgPj4gMl0sIGVbQSArIDE2ID4+IDJdKSwgIXUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IGVbQSArIDI0ID4+IDJdLCB3ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IG4gKyBlW3IgKyA0ID4+IDJdIHwgMCwgZVtpID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IGVbaSArIDQgPj4gMl0sIG8gPj4+IDAgPCBBID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IEYyKGcsIGVbaSArIDE2ID4+IDJdLCBBKSwgZVtyICsgNDAgPj4gMl0gPSBlW3IgKyA0MCA+PiAyXSArIGVbaSA+PiAyXSwgaSA9IGVbaSArIDQgPj4gMl0sIG8gPSBvIC0gaSB8IDAsIGcgPSBBICsgaSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciArIDUyIHwgMCwgdyA9IHcgKyAxIHwgMCwgKHUgfCAwKSA9PSAodyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gaCArIDM2IHwgMCwgYyA9IGMgKyAxIHwgMCwgIShjID4+PiAwIDwgZFtDICsgMjQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBaKG0sIDQwKSwgdCA9IFooSCwgMjQpOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2ggKyAxMiA+PiAyXSA9PSBlW2ggKyA0ID4+IDJdIHwgZVtoICsgOCA+PiAyXSA9PSBlW2ggPj4gMl0gfHwgKEEgPSBpICsgZVtoICsgMjAgPj4gMl0gfCAwLCBuID0gWihlW0EgKyAyMCA+PiAyXSwgZVtBICsgMTYgPj4gMl0pLCAhbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBlW0EgKyAyNCA+PiAyXSwgdSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gdCArIGVbciArIDQgPj4gMl0gfCAwLCB5ID0gZVtBID4+IDJdLCB5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBlW0EgKyA0ID4+IDJdLCBvID4+PiAwIDwgQSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3IgKyA0MCA+PiAyXSA9IHkgKyBlW3IgKyA0MCA+PiAyXSwgbyA9IG8gLSBBIHwgMCwgZyA9IEEgKyBnIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgKyA1MiB8IDAsIHUgPSB1ICsgMSB8IDAsIChuIHwgMCkgPT0gKHUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBoICsgMzYgfCAwLCBjID0gYyArIDEgfCAwLCAhKGMgPj4+IDAgPCBkW0MgKyAyNCA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZVtrID4+IDJdID0gZVtrID4+IDJdICsgKGcgLSBmIHwgMCksIG4yID0gMTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVbcyArIDUyID4+IDJdID0gQSwgZVtzICsgNDggPj4gMl0gPSBtLCBRKGwsIDEsIDQyNzIsIHMgKyA0OCB8IDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVtzICsgMzYgPj4gMl0gPSBBLCBlW3MgKyAzMiA+PiAyXSA9IG0sIFEobCwgMSwgNDI3MiwgcyArIDMyIHwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBlW3MgKyA0ID4+IDJdID0gQSwgZVtzID4+IDJdID0gbywgUShsLCAxLCAyMjg4NCwgcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gcyArIDgwIHwgMCwgbjI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcUEoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMCwgeSA9IDAsIHAgPSAwLCBIID0gMCwgSiA9IDAsIEUgPSAwLCBEID0gMCwgVSA9IDAsIFAgPSAwLCB4ID0gMCwgeiA9IDAsIGogPSAwLCBPID0gMCwgcSA9IDAsIGYyID0gMCwgbjIgPSAwLCBnMiA9IDAsIHcyID0gMCwgYzIgPSAwLCBtMiA9IDAsIHAyID0gMCwgWTIgPSAwLCBYMiA9IDAsIEQyID0gMCwgUzIgPSAwLCBQMiA9IDAsIHgyID0gMCwgejIgPSAwLCBMMiA9IDAsIGUwID0gMCwgaTAgPSAwLCByMCA9IDAsIGswID0gMCwgdDAgPSAwOwogICAgICAgICAgICAgIGlmIChpID0gMCwgZVtBICsgNDAgPj4gMl0gPSAwLCBxID0gWihlW0EgKyAxMDggPj4gMl0sIGVbQSArIDEwNCA+PiAyXSksIHEpCiAgICAgICAgICAgICAgICBmb3IgKHYgPSBBICsgODAgfCAwLCBwID0gZVtBICsgNzIgPj4gMl0sIHIgPSBlW0EgKyAxNTYgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgIGogPSAwLCB0ID0gZVt2ICsgMTYgPj4gMl0sIGEgPSBlW3YgKyAyNCA+PiAyXSwgdSA9IChpID4+PiAwKSAvIChhID4+PiAwKSB8IDAsIGYgPSBlW3YgKyA4ID4+IDJdICsgWih0LCB1KSB8IDAsIHQgPSBmICsgdCB8IDAsIHQgPSBmID4+PiAwID4gdCA+Pj4gMCA/IC0xIDogdCwgZyA9IGVbcCArIDEyID4+IDJdLCBIID0gdCA+Pj4gMCA8IGcgPj4+IDAgPyB0IDogZywgdCA9IGVbdiArIDEyID4+IDJdLCBQID0gaSwgaSA9IGVbdiArIDQgPj4gMl0gKyBaKHQsIGkgLSBaKGEsIHUpIHwgMCkgfCAwLCB0ID0gaSArIHQgfCAwLCB0ID0gaSA+Pj4gMCA+IHQgPj4+IDAgPyAtMSA6IHQsIGEgPSBlW3AgKyA4ID4+IDJdLCBKID0gdCA+Pj4gMCA8IGEgPj4+IDAgPyB0IDogYSwgdCA9IGVbcCArIDQgPj4gMl0sIEUgPSBmID4+PiAwID4gdCA+Pj4gMCA/IGYgOiB0LCBmID0gZVtwID4+IDJdLCBEID0gaSA+Pj4gMCA+IGYgPj4+IDAgPyBpIDogZiwgZjIgPSBlW3YgKyA3NiA+PiAyXSwgTyA9IGVbcCArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFPKSB7CiAgICAgICAgICAgICAgICAgICAgICBzID0gMjE0NzQ4MzY0NywgQyA9IDAsIHQgPSAwLCB3ID0gMjE0NzQ4MzY0NzsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAocDIgPSBIIC0gMSB8IDAsIFkyID0gMCAtICFIIHwgMCwgWDIgPSBKIC0gMSB8IDAsIEQyID0gMCAtICFKIHwgMCwgbjIgPSBFIC0gMSB8IDAsIFMyID0gMCAtICFFIHwgMCwgZzIgPSBEIC0gMSB8IDAsIFAyID0gMCAtICFEIHwgMCwgVSA9IGVbKGYyICsgWihQLCA1NjQ0KSB8IDApICsgNTU4NCA+PiAyXSwgeCA9IGVbcCArIDI0ID4+IDJdLCBzID0gMjE0NzQ4MzY0NywgQyA9IDAsIHQgPSAwLCB3ID0gMjE0NzQ4MzY0NzsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIGYgPSBZMiwgYSA9IGVbeCArIDQgPj4gMl0sIGkgPSBhICsgcDIgfCAwLCBnID0gbjAoaSwgaSA+Pj4gMCA8IGEgPj4+IDAgPyBmICsgMSB8IDAgOiBmLCBhLCAwKSwgZiA9IEQyLCB1ID0gZVt4ID4+IDJdLCBpID0gdSArIFgyIHwgMCwgbCA9IG4wKGksIGkgPj4+IDAgPCB1ID4+PiAwID8gZiArIDEgfCAwIDogZiwgdSwgMCksIGYgPSBTMiwgaSA9IGEgKyBuMiB8IDAsIGYgPSBpID4+PiAwIDwgbjIgPj4+IDAgPyBmICsgMSB8IDAgOiBmLCBrID0gbjAoaSwgZiwgYSwgMCksIGYgPSBQMiwgaSA9IHUgKyBnMiB8IDAsIGYgPSBpID4+PiAwIDwgZzIgPj4+IDAgPyBmICsgMSB8IDAgOiBmLCBmID0gbjAoaSwgZiwgdSwgMCksIHogPSBlW1UgKyA0ID4+IDJdLCBpID0gejsKICAgICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPj0gaSA+Pj4gMCAmJiAoaSA9IHQsICF6KSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHgyID0gVSArIDk0NCB8IDAsIHoyID0gVSArIDgxMiB8IDAsIHcyID0gZyAtIDEgfCAwLCBMMiA9IDAgLSAhZyB8IDAsIGUwID0gbCAtIDEgfCAwLCBpMCA9IDAgLSAhbCB8IDAsIGMyID0gayAtIDEgfCAwLCByMCA9IDAgLSAhayB8IDAsIGswID0gZiAtIDEgfCAwLCB0MCA9IDAgLSAhZiB8IDAsIHQgPSAwLCBnID0gMDsgbCA9ICh0IF4gLTEpICsgeiB8IDAsIGsgPSBsICYgMzEsIChsICYgNjMpID4+PiAwID49IDMyID8gKGYgPSAxIDw8IGssIG4gPSAwKSA6IChuID0gMSA8PCBrLCBmID0gbiAtIDEgJiAxID4+PiAzMiAtIGspLCBtID0gbiwgaCA9IG0sIGsgPSBoICsgZTAgfCAwLCBvID0gZiwgZiA9IGYgKyBpMCB8IDAsIGYgPSBrID4+PiAwIDwgaCA+Pj4gMCA/IGYgKyAxIHwgMCA6IGYsIG4gPSAwLCBCID0gdCA8PCAyLCBoID0gZVtCICsgejIgPj4gMl0sIHkgPSBrLCBrID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IHkgPSBmID4+PiBrIHwgMCA6IHkgPSAoKDEgPDwgaykgLSAxICYgZikgPDwgMzIgLSBrIHwgeSA+Pj4gaywgayA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyAoZiA9IC0xIDw8IGssIGsgPSAwKSA6IChmID0gKDEgPDwgaykgLSAxICYgLTEgPj4+IDMyIC0gaywgayA9IC0xIDw8IGssIGYgPSBmIHwgayksIGMgPSBrIF4gLTEsIGsgPSB5ICsgYyB8IDAsIGYgPSAoZiBeIC0xKSArIG4gfCAwLCBmID0gayA+Pj4gMCA8IGMgPj4+IDAgPyBmICsgMSB8IDAgOiBmLCBuID0gaywgayA9IGggJiAzMSwgKGggJiA2MykgPj4+IDAgPj0gMzIgPyBrID0gZiA+Pj4gayB8IDAgOiBrID0gKCgxIDw8IGspIC0gMSAmIGYpIDw8IDMyIC0gayB8IG4gPj4+IGssIGYgPSBvICsgdDAgfCAwLCBuID0gbSArIGswIHwgMCwgZiA9IG4gPj4+IDAgPCBtID4+PiAwID8gZiArIDEgfCAwIDogZiwgYyA9IGssIGsgPSBsICYgMzEsIChsICYgNjMpID4+PiAwID49IDMyID8gZiA9IGYgPj4+IGsgfCAwIDogZiA9ICgoMSA8PCBrKSAtIDEgJiBmKSA8PCAzMiAtIGsgfCBuID4+PiBrLCB5ID0gKGYgfCAwKSAhPSAoeSB8IDApID8gYyAtIChmID4+PiBoIHwgMCkgJiAtMSA+Pj4gaCA6IDAsIGYgPSBvICsgTDIgfCAwLCBuID0gbSArIHcyIHwgMCwgZiA9IG4gPj4+IDAgPCB3MiA+Pj4gMCA/IGYgKyAxIHwgMCA6IGYsIGMgPSAwLCBrID0gZVtCICsgeDIgPj4gMl0sIEIgPSBuLCBuID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/IEIgPSBmID4+PiBuIHwgMCA6IEIgPSAoKDEgPDwgbikgLSAxICYgZikgPDwgMzIgLSBuIHwgQiA+Pj4gbiwgbiA9IGsgJiAzMSwgKGsgJiA2MykgPj4+IDAgPj0gMzIgPyAoZiA9IC0xIDw8IG4sIG4gPSAwKSA6IChmID0gKDEgPDwgbikgLSAxICYgLTEgPj4+IDMyIC0gbiwgbiA9IC0xIDw8IG4sIGYgPSBmIHwgbiksIG0yID0gbiBeIC0xLCBuID0gQiArIG0yIHwgMCwgZiA9IChmIF4gLTEpICsgYyB8IDAsIGYgPSBuID4+PiAwIDwgbTIgPj4+IDAgPyBmICsgMSB8IDAgOiBmLCBjID0gbiwgbiA9IGsgJiAzMSwgKGsgJiA2MykgPj4+IDAgPj0gMzIgPyBuID0gZiA+Pj4gbiB8IDAgOiBuID0gKCgxIDw8IG4pIC0gMSAmIGYpIDw8IDMyIC0gbiB8IGMgPj4+IG4sIGYgPSBvICsgcjAgfCAwLCBvID0gbSArIGMyIHwgMCwgZiA9IG8gPj4+IDAgPCBjMiA+Pj4gMCA/IGYgKyAxIHwgMCA6IGYsIG0gPSBuLCBuID0gbywgbyA9IGwgJiAzMSwgKGwgJiA2MykgPj4+IDAgPj0gMzIgPyBmID0gZiA+Pj4gbyB8IDAgOiBmID0gKCgxIDw8IG8pIC0gMSAmIGYpIDw8IDMyIC0gbyB8IG4gPj4+IG8sIGYgPSBaKChmIHwgMCkgIT0gKEIgfCAwKSA/IG0gLSAoZiA+Pj4gayB8IDApICYgLTEgPj4+IGsgOiAwLCB5KSwgQyA9IGYgPj4+IDAgPiBDID4+PiAwID8gZiA6IEMsIGYgPSBrICsgbCB8IDAsIGsgPSBmICYgMzEsIChmICYgNjMpID4+PiAwID49IDMyID8gKGYgPSBhIDw8IGssIGsgPSAwKSA6IChmID0gKDEgPDwgaykgLSAxICYgYSA+Pj4gMzIgLSBrLCBrID0gYSA8PCBrKSwgdyA9IGYgfHwgayA+Pj4gMCA+IHcgPj4+IDAgPyB3IDogaywgZiA9IGwgKyBoIHwgMCwgbCA9IGYgJiAzMSwgKGYgJiA2MykgPj4+IDAgPj0gMzIgPyAoZiA9IHUgPDwgbCwgbCA9IDApIDogKGYgPSAoMSA8PCBsKSAtIDEgJiB1ID4+PiAzMiAtIGwsIGwgPSB1IDw8IGwpLCBzID0gZiB8fCBsID4+PiAwID4gcyA+Pj4gMCA/IHMgOiBsLCBmID0gZywgdCA9IHQgKyAxIHwgMCwgZiA9IHQgPyBmIDogZiArIDEgfCAwLCBnID0gZiwgISEoKHQgfCAwKSAhPSAoeiB8IDApIHwgZik7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKFUgPSBVICsgMTA4MCB8IDAsIHggPSB4ICsgNTIgfCAwLCBqID0gaiArIDEgfCAwLCAoTyB8IDApID09IChqIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpID0gZjIgKyBaKFAsIDU2NDQpIHwgMCwgYSA9IGVbaSArIDQyMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgIGlmIChJW2kgKyA1NjQwIHwgMF0gJiA0KSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgNDkyID4+IDJdID0gMCwgZVtpICsgNTQ0ID4+IDJdID0gdywgZVtpICsgNTQwID4+IDJdID0gcywgZVtpICsgNTM2ID4+IDJdID0gSCwgZVtpICsgNTMyID4+IDJdID0gRSwgZVtpICsgNTI4ID4+IDJdID0gSiwgZVtpICsgNTI0ID4+IDJdID0gRCwgZVtpICsgNTIwID4+IDJdID0gQywgZVtpICsgNTA0ID4+IDJdID0gMCwgZVtpICsgNTE2ID4+IDJdID0gZVtpICsgNDQwID4+IDJdLCBmID0gZVtpICsgNDI4ID4+IDJdLCBlW2kgKyA0OTYgPj4gMl0gPSBlW2kgKyA0MjQgPj4gMl0sIGVbaSArIDUwMCA+PiAyXSA9IGYsIGYgPSBlW2kgKyA0MzYgPj4gMl0sIGVbaSArIDUwOCA+PiAyXSA9IGVbaSArIDQzMiA+PiAyXSwgZVtpICsgNTEyID4+IDJdID0gZiwgZVtpICsgNDYwID4+IDJdID0gZVtpICsgNDU2ID4+IDJdLCBhIC0gMSA+Pj4gMCA+IDQyOTQ5NjcyOTMpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSBpICsgNTcyIHwgMCwgdCA9IDE7IGVbZiArIDgwID4+IDJdID0gMCwgZVtmICsgMTIwID4+IDJdID0gdywgZVtmICsgMTE2ID4+IDJdID0gcywgZVtmICsgMTEyID4+IDJdID0gSCwgZVtmICsgMTA4ID4+IDJdID0gRSwgZVtmICsgMTA0ID4+IDJdID0gSiwgZVtmICsgMTAwID4+IDJdID0gRCwgZVtmICsgOTYgPj4gMl0gPSBDLCBpID0gZVtmICsgNCA+PiAyXSwgZVtmICsgNzIgPj4gMl0gPSBlW2YgPj4gMl0sIGVbZiArIDc2ID4+IDJdID0gaSwgaSA9IGVbZiArIDE2ID4+IDJdLCBlW2YgKyA4OCA+PiAyXSA9IGVbZiArIDEyID4+IDJdLCBlW2YgKyA5MiA+PiAyXSA9IGksIGkgPSBlW2YgKyA4ID4+IDJdLCBlW2YgKyA4NCA+PiAyXSA9IGksIGVbZiArIDM2ID4+IDJdID0gZVtmICsgMzIgPj4gMl0sIGVbZiArIDY4ID4+IDJdID0gaSA+Pj4gMCA+IGRbZiArIC02NCA+PiAyXSA/IGkgOiAwLCBmID0gZiArIDE0OCB8IDAsIGkgPSAodCB8IDApID09IChhIHwgMCksIHQgPSB0ICsgMSB8IDAsICFpOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSBpICsgNDI0IHwgMCwgdSA9IGVbaSArIDQgPj4gMl0sIGcgPSBlW2kgKyA4ID4+IDJdLCBpID0gMDsgZVtmICsgOTIgPj4gMl0gPSBPLCBlW2YgKyA3NiA+PiAyXSA9IDAsIGVbZiArIDgwID4+IDJdID0gMCwgZVtmICsgODggPj4gMl0gPSB0LCBlW2YgKyA4NCA+PiAyXSA9IGcsIGVbZiArIDY4ID4+IDJdID0gMCwgZVtmICsgNzIgPj4gMl0gPSAwLCBlW2YgKyAxMjAgPj4gMl0gPSB3LCBlW2YgKyAxMTYgPj4gMl0gPSBzLCBlW2YgKyAxMTIgPj4gMl0gPSBILCBlW2YgKyAxMDggPj4gMl0gPSBFLCBlW2YgKyAxMDQgPj4gMl0gPSBKLCBlW2YgKyAxMDAgPj4gMl0gPSBELCBlW2YgKyA5NiA+PiAyXSA9IEMsIGVbZiArIDM2ID4+IDJdID0gdSwgZiA9IGYgKyAxNDggfCAwLCBsID0gKGkgfCAwKSAhPSAoYSB8IDApLCBpID0gaSArIDEgfCAwLCAhIWw7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCB0ID0gMDsgZiA9IG9yKHYsIGksIFApLCBlW0EgKyA0MCA+PiAyXSA9IGYgKyBlW0EgKyA0MCA+PiAyXSwgdCA9IGYgKyB0IHwgMCwgaSA9IGkgKyAxIHwgMCwgaSA+Pj4gMCA8PSBkW3IgKyA0MjAgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyA1NTkyID4+IDJdID0gdCwgciA9IHIgKyA1NjQ0IHwgMCwgaSA9IFAgKyAxIHwgMCwgKHEgfCAwKSA9PSAoaSB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG5yKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDA7CiAgICAgICAgICAgICAgdyA9IFoociwgNSksIHUgPSAociA8PCAyKSArIGkgfCAwLCBrID0gZVtBID4+IDJdLCB0ID0gZVtBICsgMTIgPj4gMl0gPDwgNSwgbCA9IGsgKyB0IHwgMCwgZyA9IGsgLSB0IHwgMCwgayA9IGVbQSArIDE2ID4+IDJdLCBvID0gZVtBICsgMjggPj4gMl0sIGEgPSBlW0EgKyAyMCA+PiAyXSwgYyA9IGVbQSArIDggPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoaSAmIDE1IHwgZiA+Pj4gMCA8IDggfCBsICYgMTUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+PSBhID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICByOgogICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmIC0gMSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gayArIDEgfCAwLCBhIC0gayAmIDEgJiYgKG4gPSBsICsgKGsgPDwgNikgfCAwLCBrID0gKGsgPDwgMikgKyBpIHwgMCwgR1tuID4+IDJdID0gR1trID4+IDJdLCBHW24gKyA0ID4+IDJdID0gR1trICsgKHIgPDwgMikgPj4gMl0sIGsgPSB0KSwgKHQgfCAwKSA9PSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdCA9IGwgKyAoayA8PCA2KSB8IDAsIG4gPSAoayA8PCAyKSArIGkgfCAwLCBHW3QgPj4gMl0gPSBHW24gPj4gMl0sIHYgPSB0LCB0ID0gciA8PCAyLCBHW3YgKyA0ID4+IDJdID0gR1t0ICsgbiA+PiAyXSwgbiA9IGsgKyAxIHwgMCwgdSA9IGwgKyAobiA8PCA2KSB8IDAsIG4gPSAobiA8PCAyKSArIGkgfCAwLCBHW3UgPj4gMl0gPSBHW24gPj4gMl0sIEdbdSArIDQgPj4gMl0gPSBHW3QgKyBuID4+IDJdLCBrID0gayArIDIgfCAwLCAoYSB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gaywgdSA9IGEgLSBrICYgMywgdSkKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBHW2wgKyAodCA8PCA2KSA+PiAyXSA9IEdbKHQgPDwgMikgKyBpID4+IDJdLCB0ID0gdCArIDEgfCAwLCBuID0gbiArIDEgfCAwLCAodSB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIGlmIChrIC0gYSA+Pj4gMCA+IDQyOTQ5NjcyOTIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGZvciAoOyBHW2wgKyAodCA8PCA2KSA+PiAyXSA9IEdbKHQgPDwgMikgKyBpID4+IDJdLCBrID0gdCArIDEgfCAwLCBHW2wgKyAoayA8PCA2KSA+PiAyXSA9IEdbKGsgPDwgMikgKyBpID4+IDJdLCBrID0gdCArIDIgfCAwLCBHW2wgKyAoayA8PCA2KSA+PiAyXSA9IEdbKGsgPDwgMikgKyBpID4+IDJdLCBrID0gdCArIDMgfCAwLCBHW2wgKyAoayA8PCA2KSA+PiAyXSA9IEdbKGsgPDwgMikgKyBpID4+IDJdLCB0ID0gdCArIDQgfCAwLCAoYSB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChrID4+PiAwID49IGEgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZm9yIChzID0gciA8PCA0LCBoID0gWihyLCAxMiksIEMgPSByIDw8IDM7IHQgPSBsICsgKGsgPDwgNikgfCAwLCBuID0gKGsgPDwgMikgKyBpIHwgMCwgR1t0ID4+IDJdID0gR1tuID4+IDJdLCBCID0gciA8PCAyLCBHW3QgKyA0ID4+IDJdID0gR1tCICsgbiA+PiAyXSwgR1t0ICsgOCA+PiAyXSA9IEdbbiArIEMgPj4gMl0sIEdbdCArIDEyID4+IDJdID0gR1tuICsgaCA+PiAyXSwgR1t0ICsgMTYgPj4gMl0gPSBHW24gKyBzID4+IDJdLCBuID0gayArIHcgPDwgMiwgR1t0ICsgMjAgPj4gMl0gPSBHW24gKyBpID4+IDJdLCBuID0gbiArIHUgfCAwLCBHW3QgKyAyNCA+PiAyXSA9IEdbbiA+PiAyXSwgR1t0ICsgMjggPj4gMl0gPSBHW24gKyBCID4+IDJdLCBrID0gayArIDEgfCAwLCAoYSB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHMgPSByIDw8IDQsIGggPSBaKHIsIDEyKSwgQyA9IHIgPDwgMywgQiA9IChmIHwgMCkgPT0gNSwgdiA9IChmIHwgMCkgPT0gNzsgOyApIHsKICAgICAgICAgICAgICAgICAgdCA9IGwgKyAoayA8PCA2KSB8IDAsIG4gPSAoayA8PCAyKSArIGkgfCAwLCBHW3QgPj4gMl0gPSBHW24gPj4gMl0sIG0gPSByIDw8IDIsIEdbdCArIDQgPj4gMl0gPSBHW24gKyBtID4+IDJdLCBHW3QgKyA4ID4+IDJdID0gR1tuICsgQyA+PiAyXTsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID09IDMgfHwgKEdbdCArIDEyID4+IDJdID0gR1tuICsgaCA+PiAyXSwgKGYgfCAwKSA9PSA0KSB8fCAoR1t0ICsgMTYgPj4gMl0gPSBHW24gKyBzID4+IDJdLCBCKSB8fCAobiA9IGsgKyB3IDw8IDIsIEdbdCArIDIwID4+IDJdID0gR1tuICsgaSA+PiAyXSwgKGYgfCAwKSA9PSA2KSB8fCAobiA9IG4gKyB1IHwgMCwgR1t0ICsgMjQgPj4gMl0gPSBHW24gPj4gMl0sIHYpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBHW3QgKyAyOCA+PiAyXSA9IEdbbiArIG0gPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGsgPSBrICsgMSB8IDAsIChhIHwgMCkgPT0gKGsgfCAwKSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbCA9IGcgKyAzMiB8IDAsIGkgPSAoYyA8PCAyKSArIGkgfCAwLCBhID0gaSArIChyIDw8IDIpIHwgMCwgayA9IGVbQSArIDI0ID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChpICYgMTUgfCBmID4+PiAwIDwgOCB8IGwgJiAxNSkgewogICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+PSBvID4+PiAwKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGk6CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmIC0gMSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBrICsgMSB8IDAsIG8gLSBrICYgMSAmJiAoZiA9IGwgKyAoayA8PCA2KSB8IDAsIGsgPSBpICsgKGsgPDwgMikgfCAwLCBHW2YgPj4gMl0gPSBHW2sgPj4gMl0sIEdbZiArIDQgPj4gMl0gPSBHW2sgKyAociA8PCAyKSA+PiAyXSwgayA9IEEpLCAoQSB8IDApID09IChvIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEEgPSBsICsgKGsgPDwgNikgfCAwLCBmID0gaSArIChrIDw8IDIpIHwgMCwgR1tBID4+IDJdID0gR1tmID4+IDJdLCB0ID0gQSwgQSA9IHIgPDwgMiwgR1t0ICsgNCA+PiAyXSA9IEdbQSArIGYgPj4gMl0sIGYgPSBrICsgMSB8IDAsIHQgPSBsICsgKGYgPDwgNikgfCAwLCBmID0gaSArIChmIDw8IDIpIHwgMCwgR1t0ID4+IDJdID0gR1tmID4+IDJdLCBHW3QgKyA0ID4+IDJdID0gR1tBICsgZiA+PiAyXSwgayA9IGsgKyAyIHwgMCwgKG8gfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGssIEEgPSBvIC0gayAmIDMsIEEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMDsgR1tsICsgKHQgPDwgNikgPj4gMl0gPSBHW2kgKyAodCA8PCAyKSA+PiAyXSwgdCA9IHQgKyAxIHwgMCwgbiA9IG4gKyAxIHwgMCwgKEEgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrIC0gbyA+Pj4gMCA+IDQyOTQ5NjcyOTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEdbbCArICh0IDw8IDYpID4+IDJdID0gR1tpICsgKHQgPDwgMikgPj4gMl0sIEEgPSB0ICsgMSB8IDAsIEdbbCArIChBIDw8IDYpID4+IDJdID0gR1tpICsgKEEgPDwgMikgPj4gMl0sIEEgPSB0ICsgMiB8IDAsIEdbbCArIChBIDw8IDYpID4+IDJdID0gR1tpICsgKEEgPDwgMikgPj4gMl0sIEEgPSB0ICsgMyB8IDAsIEdbbCArIChBIDw8IDYpID4+IDJdID0gR1tpICsgKEEgPDwgMikgPj4gMl0sIHQgPSB0ICsgNCB8IDAsIChvIHwgMCkgIT0gKHQgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmb3IgKG4gPSByIDw8IDQsIHUgPSBaKHIsIDEyKSwgZyA9IHIgPDwgMywgYyA9IChmIHwgMCkgPT0gNSwgcyA9IChmIHwgMCkgPT0gNzsgOyApIHsKICAgICAgICAgICAgICAgICAgICBBID0gbCArIChrIDw8IDYpIHwgMCwgdCA9IGkgKyAoayA8PCAyKSB8IDAsIEdbQSA+PiAyXSA9IEdbdCA+PiAyXSwgaCA9IHIgPDwgMiwgR1tBICsgNCA+PiAyXSA9IEdbaCArIHQgPj4gMl0sIEdbQSArIDggPj4gMl0gPSBHW3QgKyBnID4+IDJdOwogICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID09IDMgfHwgKEdbQSArIDEyID4+IDJdID0gR1t0ICsgdSA+PiAyXSwgKGYgfCAwKSA9PSA0KSB8fCAoR1tBICsgMTYgPj4gMl0gPSBHW3QgKyBuID4+IDJdLCBjKSB8fCAodCA9IGsgKyB3IDw8IDIsIEdbQSArIDIwID4+IDJdID0gR1t0ICsgaSA+PiAyXSwgKGYgfCAwKSA9PSA2KSB8fCAodCA9IHQgKyBhIHwgMCwgR1tBICsgMjQgPj4gMl0gPSBHW3QgPj4gMl0sIHMpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgR1tBICsgMjggPj4gMl0gPSBHW3QgKyBoID4+IDJdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGsgKyAxIHwgMCwgKG8gfCAwKSA9PSAoayB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChrID4+PiAwID49IG8gPj4+IDApCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKHQgPSByIDw8IDQsIG4gPSBaKHIsIDEyKSwgdSA9IHIgPDwgMzsgQSA9IGwgKyAoayA8PCA2KSB8IDAsIGYgPSBpICsgKGsgPDwgMikgfCAwLCBHW0EgPj4gMl0gPSBHW2YgPj4gMl0sIGcgPSByIDw8IDIsIEdbQSArIDQgPj4gMl0gPSBHW2cgKyBmID4+IDJdLCBHW0EgKyA4ID4+IDJdID0gR1tmICsgdSA+PiAyXSwgR1tBICsgMTIgPj4gMl0gPSBHW2YgKyBuID4+IDJdLCBHW0EgKyAxNiA+PiAyXSA9IEdbZiArIHQgPj4gMl0sIGYgPSBrICsgdyA8PCAyLCBHW0EgKyAyMCA+PiAyXSA9IEdbZiArIGkgPj4gMl0sIGYgPSBmICsgYSB8IDAsIEdbQSArIDI0ID4+IDJdID0gR1tmID4+IDJdLCBHW0EgKyAyOCA+PiAyXSA9IEdbZiArIGcgPj4gMl0sIGsgPSBrICsgMSB8IDAsIChvIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGVrKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gMCwgQyA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFyIHwgKCFBIHwgIWkpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgMTYgPj4gMl0gLSAxNjM4NSA+Pj4gMCA8PSA0Mjk0OTUwOTExKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFEoZiwgMSwgODA4NywgMCksIDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFJNChlW0EgPj4gMl0sIGksIHIsIGYpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgNjQgPj4gMl0gPSAxLCBlW0EgKyA1NiA+PiAyXSA9IDE3ODU3Mzc3NjAsIGVbQSArIDYwID4+IDJdID0gMCwgayA9IFUyKDQpLCBlW0EgKyA2OCA+PiAyXSA9IGssICFrIHx8IChlW2sgPj4gMl0gPSAxNzg1NzM3NzYwLCBrID0gZVtyICsgMTYgPj4gMl0sIGVbQSArIDIwID4+IDJdID0gaywgZyA9IFUyKFooaywgMTIpKSwgZVtBICsgNzIgPj4gMl0gPSBnLCAhZykpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gZVtyICsgMTIgPj4gMl0gLSBlW3IgKyA0ID4+IDJdLCBlW0EgKyAxMiA+PiAyXSA9IGVbciArIDggPj4gMl0gLSBlW3IgPj4gMl0sIGwgPSBlW3IgKyAyNCA+PiAyXSwgbiA9IGVbbCArIDI0ID4+IDJdLCBlW0EgKyAyNCA+PiAyXSA9IChuICsgKGVbbCArIDMyID4+IDJdIDw8IDcpIHwgMCkgLSAxOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW3IgKyAxNiA+PiAyXSwgdSA+Pj4gMCA+PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB1IC0gMSB8IDAsIGEgPSB0ICYgMywgayA9IDEsIHUgLSAyID4+PiAwID49IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGggPSB0ICYgLTQ7IHQgPSBsICsgWihrLCA1MikgfCAwLCAobiB8IDApICE9IGVbdCArIDI0ID4+IDJdICYmIChlW0EgKyAyNCA+PiAyXSA9IDI1NSksIChuIHwgMCkgIT0gZVt0ICsgNzYgPj4gMl0gJiYgKGVbQSArIDI0ID4+IDJdID0gMjU1KSwgKG4gfCAwKSAhPSBlW3QgKyAxMjggPj4gMl0gJiYgKGVbQSArIDI0ID4+IDJdID0gMjU1KSwgKG4gfCAwKSAhPSBlW3QgKyAxODAgPj4gMl0gJiYgKGVbQSArIDI0ID4+IDJdID0gMjU1KSwgayA9IGsgKyA0IHwgMCwgbyA9IG8gKyA0IHwgMCwgKGggfCAwKSAhPSAobyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IChuIHwgMCkgIT0gZVsobCArIFooaywgNTIpIHwgMCkgKyAyNCA+PiAyXSAmJiAoZVtBICsgMjQgPj4gMl0gPSAyNTUpLCBrID0gayArIDEgfCAwLCB0ID0gdCArIDEgfCAwLCAoYSB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDM2ID4+IDJdID0gMCwgZVtBICsgMjggPj4gMl0gPSA3LCBlW0EgKyAzMiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMzYgPj4gMl0gPSAwLCBlW0EgKyAyOCA+PiAyXSA9IDcsIGVbQSArIDMyID4+IDJdID0gMCwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gMCwgayA9IDAsICh1IHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gdSAmIC0yLCBhID0gMDsgdCA9IGwgKyBaKGssIDUyKSB8IDAsIGVbKGcgKyBaKGssIDEyKSB8IDApICsgOCA+PiAyXSA9IChlW3QgKyAyNCA+PiAyXSArIChlW3QgKyAzMiA+PiAyXSA8PCA3KSB8IDApIC0gMSwgaCA9IGsgfCAxLCB0ID0gbCArIFooaCwgNTIpIHwgMCwgZVsoZyArIFooaCwgMTIpIHwgMCkgKyA4ID4+IDJdID0gKGVbdCArIDI0ID4+IDJdICsgKGVbdCArIDMyID4+IDJdIDw8IDcpIHwgMCkgLSAxLCBrID0gayArIDIgfCAwLCBhID0gYSArIDIgfCAwLCAobyB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoISh1ICYgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBzID0gZyArIFooaywgMTIpIHwgMCwgayA9IGwgKyBaKGssIDUyKSB8IDAsIGVbcyArIDggPj4gMl0gPSAoZVtrICsgMjQgPj4gMl0gKyAoZVtrICsgMzIgPj4gMl0gPDwgNykgfCAwKSAtIDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbciArIDMyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgNDAgPj4gMl0gPSAyLCBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyA0MCA+PiAyXSA9IDEsIGsgPSBlW3IgKyAyMCA+PiAyXSwgayAtIDEgPj4+IDAgPiAyKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrICsgMTUgfCAwOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZVtBICsgNDggPj4gMl0gPSBrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAobikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gMCwgdCA9IDAsIGEgPSAwLCBrID0gMCwgdSAtIDEgPj4+IDAgPj0gMykKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2ID0gdSAmIC00LCBvID0gMDsgcyA9IGsgfCAxLCBnID0gRzJbKGwgKyBaKHMsIDUyKSB8IDApICsgNDggPj4gMV0sIHcgPSBrIHwgMiwgaCA9IEcyWyhsICsgWih3LCA1MikgfCAwKSArIDQ4ID4+IDFdLCBCID0gayB8IDMsIGMgPSBHMlsobCArIFooQiwgNTIpIHwgMCkgKyA0OCA+PiAxXSwgQyA9IHMsIHMgPSBHMlsobCArIFooaywgNTIpIHwgMCkgKyA0OCA+PiAxXSwgdCA9IGMgPyBCIDogaCA/IHcgOiBnID8gQyA6IHMgPyBrIDogdCwgYSA9ICgoKCgocyB8IDApICE9IDApICsgYSB8IDApICsgKChnIHwgMCkgIT0gMCkgfCAwKSArICgoaCB8IDApICE9IDApIHwgMCkgKyAoKGMgfCAwKSAhPSAwKSB8IDAsIGsgPSBrICsgNCB8IDAsIG8gPSBvICsgNCB8IDAsICh2IHwgMCkgIT0gKG8gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gdSAmIDMsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBnID0gRzJbKGwgKyBaKGssIDUyKSB8IDApICsgNDggPj4gMV0sIHQgPSBnID8gayA6IHQsIGsgPSBrICsgMSB8IDAsIGEgPSAoKGcgfCAwKSAhPSAwKSArIGEgfCAwLCBuID0gbiArIDEgfCAwLCAobyB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBrID0gMjIzNjM7CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVtBICsgNDggPj4gMl0gLSAxNiB8IDAsIGsgPj4+IDAgPiAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDIyMjA2OwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlWyhrIDw8IDIpICsgMzE3NzYgPj4gMl0sIHUgPj4+IDAgPD0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAyMDgwODsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAwIDwgbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAyMjI4MDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gVTIoOCksIGVbQSArIDExNiA+PiAyXSA9IGssICFrIHx8IChsID0gVTIoWihlW3IgKyAxNiA+PiAyXSwgNikpLCBrID0gZVtBICsgMTE2ID4+IDJdLCBlW2sgPj4gMl0gPSBsLCAhbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW3IgKyAxNiA+PiAyXSwgdTJbayArIDQgPj4gMV0gPSB1LCBrID0gMCwgbiAtIDEgPj4+IDAgPj0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBuICYgLTQsIG8gPSAwOyBmID0gbCArIFooaywgNikgfCAwLCB0ID0gayB8IDEsIHUyW2YgKyA0ID4+IDFdID0gdCwgdTJbZiArIDIgPj4gMV0gPSAwLCB1MltmID4+IDFdID0gaywgZiA9IGwgKyBaKHQsIDYpIHwgMCwgYSA9IGsgfCAyLCB1MltmICsgNCA+PiAxXSA9IGEsIHUyW2YgKyAyID4+IDFdID0gMCwgdTJbZiA+PiAxXSA9IHQsIGYgPSBsICsgWihhLCA2KSB8IDAsIHQgPSBrIHwgMywgdTJbZiArIDQgPj4gMV0gPSB0LCB1MltmICsgMiA+PiAxXSA9IDAsIHUyW2YgPj4gMV0gPSBhLCBmID0gbCArIFoodCwgNikgfCAwLCBrID0gayArIDQgfCAwLCB1MltmICsgNCA+PiAxXSA9IGssIHUyW2YgKyAyID4+IDFdID0gMCwgdTJbZiA+PiAxXSA9IHQsIG8gPSBvICsgNCB8IDAsIChnIHwgMCkgIT0gKG8gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBuICYgMywgdCA9IDA7IGEgPSBsICsgWihrLCA2KSB8IDAsIGYgPSBrICsgMSB8IDAsIHUyW2EgKyA0ID4+IDFdID0gZiwgdTJbYSArIDIgPj4gMV0gPSAwLCB1MlthID4+IDFdID0gaywgayA9IGYsIHQgPSB0ICsgMSB8IDAsIChvIHwgMCkgIT0gKHQgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPj4+IDAgPj0gdSA+Pj4gMCB8fCAoZiA9IG4gKyAxIHwgMCwgayA9IGVbciArIDI0ID4+IDJdLCB1IC0gbiAmIDEgJiYgKHIgPSBHMlsoayArIFoobiwgNTIpIHwgMCkgKyA0OCA+PiAxXSwgdCA9IGwgKyBaKG4sIDYpIHwgMCwgdTJbdCA+PiAxXSA9IG4sIHUyW3QgKyA0ID4+IDFdID0gciA/IDAgOiAtMSwgdTJbdCArIDIgPj4gMV0gPSByID8gMSA6IC0xLCBuID0gZiksIChmIHwgMCkgPT0gKHUgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHQgPSBrICsgWihuLCA1MikgfCAwLCBmID0gRzJbdCArIDQ4ID4+IDFdLCByID0gbCArIFoobiwgNikgfCAwLCB1MltyID4+IDFdID0gbiwgdTJbciArIDQgPj4gMV0gPSBmID8gMCA6IC0xLCB1MltyICsgMiA+PiAxXSA9IGYgPyAxIDogLTEsIGYgPSBHMlt0ICsgMTAwID4+IDFdLCB1MltyICsgNiA+PiAxXSA9IG4gKyAxLCB1MltyICsgMTAgPj4gMV0gPSBmID8gMCA6IC0xLCB1MltyICsgOCA+PiAxXSA9IGYgPyAxIDogLTEsIG4gPSBuICsgMiB8IDAsICh1IHwgMCkgIT0gKG4gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIFEoZiwgMiwgaywgMCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVbQSArIDQ0ID4+IDJdID0gMCwgZVtBICsgNTIgPj4gMl0gPSAwLCBlW0EgKyA5NiA+PiAyXSA9IGVbaSArIDE4NjkyID4+IDJdLCBrID0gMTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gayB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gUShmLCAxLCA4MjAwLCAwKSwgMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFEoZiwgMSwgODE1NiwgMCksIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcDQoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMDsKICAgICAgICAgICAgICBrID0gWCAtIDE3NiB8IDAsIFggPSBrOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChpICYgMzg0KSB7CiAgICAgICAgICAgICAgICAgIF8wKDk2NTcsIDExLCAxLCByKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmIDEpIHx8IChuID0gZVtBICsgNzIgPj4gMl0sICFuKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoZiA9IFggLSA4MCB8IDAsIFggPSBmLCBfMCgzNjA2LCAxMywgMSwgciksIEZbZiArIDc5IHwgMF0gPSAwLCBGW2YgKyA3OCB8IDBdID0gOSwgdCA9IGVbbiArIDQgPj4gMl0sIGVbZiArIDY4ID4+IDJdID0gZVtuID4+IDJdLCBlW2YgKyA3MiA+PiAyXSA9IHQsIGEgPSBmICsgNzggfCAwLCBlW2YgKyA2NCA+PiAyXSA9IGEsIEkwKHIsIDE3MTc1LCBmIC0gLTY0IHwgMCksIHQgPSBlW24gKyAxMiA+PiAyXSwgZVtmICsgNTIgPj4gMl0gPSBlW24gKyA4ID4+IDJdLCBlW2YgKyA1NiA+PiAyXSA9IHQsIGVbZiArIDQ4ID4+IDJdID0gYSwgSTAociwgMTcxNDAsIGYgKyA0OCB8IDApLCBlW2YgKyAzNiA+PiAyXSA9IGVbbiArIDE2ID4+IDJdLCBlW2YgKyAzMiA+PiAyXSA9IGEsIEkwKHIsIDE2ODk4LCBmICsgMzIgfCAwKSwgISghZVtuICsgMjQgPj4gMl0gfCAhZVtuICsgMTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgIGZvciAoOyBnID0gZiArIDc4IHwgMCwgZVtmICsgMTYgPj4gMl0gPSBnLCBlW2YgKyAyMCA+PiAyXSA9IGwsIEkwKHIsIDM2MzgsIGYgKyAxNiB8IDApLCBhID0gZVtuICsgMjQgPj4gMl0sIHQgPSBYIC0gNDggfCAwLCBYID0gdCwgRlt0ICsgNDYgfCAwXSA9IDksIEZbdCArIDQ3IHwgMF0gPSAwLCBGW3QgKyA0NSB8IDBdID0gOSwgdSA9IFoobCwgNTIpICsgYSB8IDAsIGEgPSBlW3UgKyA0ID4+IDJdLCBlW3QgKyAzNiA+PiAyXSA9IGVbdSA+PiAyXSwgZVt0ICsgNDAgPj4gMl0gPSBhLCBhID0gdCArIDQ1IHwgMCwgZVt0ICsgMzIgPj4gMl0gPSBhLCBJMChyLCAxNjgzMCwgdCArIDMyIHwgMCksIGVbdCArIDIwID4+IDJdID0gZVt1ICsgMjQgPj4gMl0sIGVbdCArIDE2ID4+IDJdID0gYSwgSTAociwgMTcwOTIsIHQgKyAxNiB8IDApLCBlW3QgKyA0ID4+IDJdID0gZVt1ICsgMzIgPj4gMl0sIGVbdCA+PiAyXSA9IGEsIEkwKHIsIDE3MDY1LCB0KSwgWCA9IHQgKyA0OCB8IDAsIGVbZiA+PiAyXSA9IGcsIEkwKHIsIDM1MTYsIGYpLCBsID0gbCArIDEgfCAwLCBsID4+PiAwIDwgZFtuICsgMTYgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgXzAoMzUyNCwgMiwgMSwgciksIFggPSBmICsgODAgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIShpICYgMikgfCAhZVtBICsgNzIgPj4gMl0gfHwgKF8wKDM3NDUsIDM2LCAxLCByKSwgbiA9IGVbQSArIDg4ID4+IDJdLCBlW2sgKyAxNjAgPj4gMl0gPSBlW0EgKyA4NCA+PiAyXSwgZVtrICsgMTY0ID4+IDJdID0gbiwgSTAociwgMTcxNTcsIGsgKyAxNjAgfCAwKSwgbiA9IGVbQSArIDk2ID4+IDJdLCBlW2sgKyAxNDQgPj4gMl0gPSBlW0EgKyA5MiA+PiAyXSwgZVtrICsgMTQ4ID4+IDJdID0gbiwgSTAociwgMTY4MTIsIGsgKyAxNDQgfCAwKSwgbiA9IGVbQSArIDEwOCA+PiAyXSwgZVtrICsgMTI4ID4+IDJdID0gZVtBICsgMTA0ID4+IDJdLCBlW2sgKyAxMzIgPj4gMl0gPSBuLCBJMChyLCAxNzA0OSwgayArIDEyOCB8IDApLCBxNChlW0EgKyAxMiA+PiAyXSwgZVtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdLCByKSwgXzAoMzUyNCwgMiwgMSwgcikpOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIShpICYgOCkgfCAhZVtBICsgNzIgPj4gMl0gfHwgKG4gPSBaKGVbQSArIDEwNCA+PiAyXSwgZVtBICsgMTA4ID4+IDJdKSwgIW4pKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGVbQSArIDE1NiA+PiAyXTsgcTQoZiwgZVtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdLCByKSwgZiA9IGYgKyA1NjQ0IHwgMCwgbyA9IG8gKyAxIHwgMCwgKG4gfCAwKSAhPSAobyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCEoaSAmIDE2KSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmIChsID0gZVtBICsgMjAwID4+IDJdLCBfMCgzNzA3LCAzNywgMSwgciksIG4gPSBlW2wgPj4gMl0sIGkgPSBlW2wgKyA0ID4+IDJdLCBBID0gZVtsICsgMTIgPj4gMl0sIGVbayArIDEyMCA+PiAyXSA9IGVbbCArIDggPj4gMl0sIGVbayArIDEyNCA+PiAyXSA9IEEsIGVbayArIDExMiA+PiAyXSA9IG4sIGVbayArIDExNiA+PiAyXSA9IGksIEkwKHIsIDkyNDYsIGsgKyAxMTIgfCAwKSwgXzAoMzY4OSwgMTcsIDEsIHIpLCAhKCFlW2wgKyAyOCA+PiAyXSB8ICFlW2wgKyAyNCA+PiAyXSkpCiAgICAgICAgICAgICAgICAgIGZvciAoZiA9IDA7IEEgPSBlW2wgKyAyOCA+PiAyXSArIFooZiwgMjQpIHwgMCwgdCA9IEcyW0EgPj4gMV0sIG4gPSBlW0EgKyA4ID4+IDJdLCBpID0gZVtBICsgMTIgPj4gMl0sIGVbayArIDk2ID4+IDJdID0gZVtBICsgMTYgPj4gMl0sIGVbayArIDg4ID4+IDJdID0gbiwgZVtrICsgOTIgPj4gMl0gPSBpLCBlW2sgKyA4MCA+PiAyXSA9IHQsIEkwKHIsIDE3MDE4LCBrICsgODAgfCAwKSwgZiA9IGYgKyAxIHwgMCwgZiA+Pj4gMCA8IGRbbCArIDI0ID4+IDJdOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgXzAoMzUyMiwgNCwgMSwgciksIHQgPSBlW2wgKyA0MCA+PiAyXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKCF0IHx8IChuID0gZVtsICsgMzYgPj4gMl0sICFuKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoQSA9IDAsIGYgPSAwLCBuID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gbiAmIC00OyBBID0gZVsodCArIFooZiB8IDMsIDQwKSB8IDApICsgNCA+PiAyXSArIChlWyh0ICsgWihmIHwgMiwgNDApIHwgMCkgKyA0ID4+IDJdICsgKGVbKHQgKyBaKGYgfCAxLCA0MCkgfCAwKSArIDQgPj4gMl0gKyAoZVsodCArIFooZiwgNDApIHwgMCkgKyA0ID4+IDJdICsgQSB8IDApIHwgMCkgfCAwKSB8IDAsIGYgPSBmICsgNCB8IDAsIGggPSBoICsgNCB8IDAsIChpIHwgMCkgIT0gKGggfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBpZiAoaSA9IG4gJiAzLCBpKQogICAgICAgICAgICAgICAgICAgIGZvciAoOyBBID0gZVsodCArIFooZiwgNDApIHwgMCkgKyA0ID4+IDJdICsgQSB8IDAsIGYgPSBmICsgMSB8IDAsIHMgPSBzICsgMSB8IDAsIChpIHwgMCkgIT0gKHMgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBpZiAoIUEpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgaWYgKF8wKDM2NzIsIDE2LCAxLCByKSwgZVtsICsgMzYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gZVtsICsgNDAgPj4gMl0sIGEgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgdSA9IFooYSwgNDApLCBoID0gZVsodSArIG8gfCAwKSArIDQgPj4gMl0sIGVbayArIDY4ID4+IDJdID0gaCwgZVtrICsgNjQgPj4gMl0gPSBhLCBJMChyLCAxNzEwNCwgayAtIC02NCB8IDApLCBvID0gZVtsICsgNDAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaCB8fCAoZiA9IDAsICFlWyh1ICsgbyB8IDApICsgMTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBnID0gZVsodSArIGVbbCArIDQwID4+IDJdIHwgMCkgKyAxNiA+PiAyXSArIFooZiwgMjQpIHwgMCwgcyA9IGVbZyA+PiAyXSwgdCA9IGVbZyArIDQgPj4gMl0sIG4gPSBlW2cgKyA4ID4+IDJdLCBpID0gZVtnICsgMTIgPj4gMl0sIEEgPSBlW2cgKyAyMCA+PiAyXSwgZVtrICsgNTYgPj4gMl0gPSBlW2cgKyAxNiA+PiAyXSwgZVtrICsgNjAgPj4gMl0gPSBBLCBlW2sgKyA0OCA+PiAyXSA9IG4sIGVbayArIDUyID4+IDJdID0gaSwgZVtrICsgNDAgPj4gMl0gPSBzLCBlW2sgKyA0NCA+PiAyXSA9IHQsIGVbayArIDMyID4+IDJdID0gZiwgSTAociwgMjE1NzEsIGsgKyAzMiB8IDApLCBmID0gZiArIDEgfCAwLCAoaCB8IDApICE9IChmIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlW2wgKyA0MCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIEEgPSB1ICsgbyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtBICsgMjQgPj4gMl0gfHwgKGYgPSAwLCAhZVtBICsgMjAgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBBID0gZVsodSArIG8gfCAwKSArIDI0ID4+IDJdICsgWihmLCAyNCkgfCAwLCB0ID0gRzJbQSA+PiAxXSwgbiA9IGVbQSArIDggPj4gMl0sIGkgPSBlW0EgKyAxMiA+PiAyXSwgZVtrICsgMTYgPj4gMl0gPSBlW0EgKyAxNiA+PiAyXSwgZVtrICsgOCA+PiAyXSA9IG4sIGVbayArIDEyID4+IDJdID0gaSwgZVtrID4+IDJdID0gdCwgSTAociwgMTcwMTgsIGspLCBmID0gZiArIDEgfCAwLCBvID0gZVtsICsgNDAgPj4gMl0sIGYgPj4+IDAgPCBkWyh1ICsgbyB8IDApICsgMjAgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgKyAxIHwgMCwgIShhID4+PiAwIDwgZFtsICsgMzYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIF8wKDM1MjIsIDQsIDEsIHIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXzAoMzUyNCwgMiwgMSwgcik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFggPSBrICsgMTc2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBSKEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDA7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghQSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGYgPSBBIC0gOCB8IDAsIGkgPSBlW0EgLSA0ID4+IDJdLCBBID0gaSAmIC04LCB0ID0gZiArIEEgfCAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoaSAmIDEpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmIDIpIHx8IChpID0gZVtmID4+IDJdLCBmID0gZiAtIGkgfCAwLCBmID4+PiAwIDwgZFsxMjk2Ml0pKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIEEgPSBBICsgaSB8IDA7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlWzEyOTYzXSAhPSAoZiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2YgKyAxMiA+PiAyXSwgaSA+Pj4gMCA8PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVtmICsgOCA+PiAyXSwgKGsgfCAwKSAhPSAociB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IDUxODMyLCBvID0gZVsxMjk1OF0gJiBoMShpID4+PiAzIHwgMCksIGVbdSA+PiAyXSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbZiArIDI0ID4+IDJdLCAociB8IDApICE9IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2YgKyA4ID4+IDJdLCBlW2kgKyAxMiA+PiAyXSA9IHIsIGVbciArIDggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW2YgKyAyMCA+PiAyXSwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW2YgKyAxNiA+PiAyXSwgIWspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4gPSBpLCByID0gaywgaSA9IHIgKyAyMCB8IDAsIGsgPSBlW3IgKyAyMCA+PiAyXSwgISghayAmJiAoaSA9IHIgKyAxNiB8IDAsIGsgPSBlW3IgKyAxNiA+PiAyXSwgIWspKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVbbiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbdCArIDQgPj4gMl0sIChpICYgMykgIT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBlWzEyOTYwXSA9IEEsIGVbdCArIDQgPj4gMl0gPSBpICYgLTIsIGVbZiArIDQgPj4gMl0gPSBBIHwgMSwgZVt0ID4+IDJdID0gQTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTIgPj4gMl0gPSByLCBlW3IgKyA4ID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICghbCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpID0gZVtmICsgMjggPj4gMl0sIGsgPSAoaSA8PCAyKSArIDUyMTM2IHwgMDsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmIChlW2sgPj4gMl0gPT0gKGYgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbayA+PiAyXSA9IHIsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB1ID0gNTE4MzYsIG8gPSBlWzEyOTU5XSAmIGgxKGkpLCBlW3UgPj4gMl0gPSBvOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbCArIDE2ID4+IDJdID09IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZVtsICsgMTYgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZVtsICsgMjAgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChlW3IgKyAyNCA+PiAyXSA9IGwsIGkgPSBlW2YgKyAxNiA+PiAyXSwgaSAmJiAoZVtyICsgMTYgPj4gMl0gPSBpLCBlW2kgKyAyNCA+PiAyXSA9IHIpLCBpID0gZVtmICsgMjAgPj4gMl0sICFpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGVbciArIDIwID4+IDJdID0gaSwgZVtpICsgMjQgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGYgPj4+IDAgPj0gdCA+Pj4gMCB8fCAoaSA9IGVbdCArIDQgPj4gMl0sICEoaSAmIDEpKSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSAmIDIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbMTI5NjRdID09ICh0IHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlWzEyOTY0XSA9IGYsIEEgPSBlWzEyOTYxXSArIEEgfCAwLCBlWzEyOTYxXSA9IEEsIGVbZiArIDQgPj4gMl0gPSBBIHwgMSwgZVsxMjk2M10gIT0gKGYgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbMTI5NjBdID0gMCwgZVsxMjk2M10gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbMTI5NjNdLCAoYSB8IDApID09ICh0IHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbMTI5NjNdID0gZiwgQSA9IGVbMTI5NjBdICsgQSB8IDAsIGVbMTI5NjBdID0gQSwgZVtmICsgNCA+PiAyXSA9IEEgfCAxLCBlW0EgKyBmID4+IDJdID0gQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSAoaSAmIC04KSArIEEgfCAwLCByID0gZVt0ICsgMTIgPj4gMl0sIGkgPj4+IDAgPD0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGVbdCArIDggPj4gMl0sIChrIHwgMCkgPT0gKHIgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gNTE4MzIsIG8gPSBlWzEyOTU4XSAmIGgxKGkgPj4+IDMgfCAwKSwgZVt1ID4+IDJdID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gciwgZVtyICsgOCA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbdCArIDI0ID4+IDJdLCAociB8IDApICE9ICh0IHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW3QgKyA4ID4+IDJdLCBlW2kgKyAxMiA+PiAyXSA9IHIsIGVbciArIDggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW3QgKyAyMCA+PiAyXSwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0ICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW3QgKyAxNiA+PiAyXSwgIWspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdCArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4gPSBpLCByID0gaywgaSA9IHIgKyAyMCB8IDAsIGsgPSBlW3IgKyAyMCA+PiAyXSwgISghayAmJiAoaSA9IHIgKyAxNiB8IDAsIGsgPSBlW3IgKyAxNiA+PiAyXSwgIWspKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVbbiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW3QgKyA0ID4+IDJdID0gaSAmIC0yLCBlW2YgKyA0ID4+IDJdID0gQSB8IDEsIGVbQSArIGYgPj4gMl0gPSBBOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghbCkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgaSA9IGVbdCArIDI4ID4+IDJdLCBrID0gKGkgPDwgMikgKyA1MjEzNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbayA+PiAyXSA9PSAodCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2sgPj4gMl0gPSByLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSA1MTgzNiwgbyA9IGVbMTI5NTldICYgaDEoaSksIGVbdSA+PiAyXSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2wgKyAxNiA+PiAyXSA9PSAodCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtsICsgMTYgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZVtsICsgMjAgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVtyICsgMjQgPj4gMl0gPSBsLCBpID0gZVt0ICsgMTYgPj4gMl0sIGkgJiYgKGVbciArIDE2ID4+IDJdID0gaSwgZVtpICsgMjQgPj4gMl0gPSByKSwgaSA9IGVbdCArIDIwID4+IDJdLCAhaSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgZVtyICsgMjAgPj4gMl0gPSBpLCBlW2kgKyAyNCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGVbZiArIDQgPj4gMl0gPSBBIHwgMSwgZVtBICsgZiA+PiAyXSA9IEEsIChmIHwgMCkgIT0gKGEgfCAwKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBlWzEyOTYwXSA9IEE7CiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChBID4+PiAwIDw9IDI1NSkgewogICAgICAgICAgICAgICAgICBpID0gKEEgJiAtOCkgKyA1MTg3MiB8IDAsIGsgPSBlWzEyOTU4XSwgQSA9IDEgPDwgKEEgPj4+IDMpOwogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoayAmIEEpKSB7CiAgICAgICAgICAgICAgICAgICAgICBlWzEyOTU4XSA9IEEgfCBrLCBBID0gaTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEEgPSBlW2kgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbaSArIDggPj4gMl0gPSBmLCBlW0EgKyAxMiA+PiAyXSA9IGYsIGVbZiArIDEyID4+IDJdID0gaSwgZVtmICsgOCA+PiAyXSA9IEE7CiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIgPSAzMSwgQSA+Pj4gMCA8PSAxNjc3NzIxNSAmJiAoaSA9IE8wKEEgPj4+IDggfCAwKSwgciA9ICgoQSA+Pj4gMzggLSBpICYgMSkgLSAoaSA8PCAxKSB8IDApICsgNjIgfCAwKSwgZVtmICsgMjggPj4gMl0gPSByLCBlW2YgKyAxNiA+PiAyXSA9IDAsIGVbZiArIDIwID4+IDJdID0gMCwgaSA9IChyIDw8IDIpICsgNTIxMzYgfCAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgayA9IGVbMTI5NTldLCBuID0gMSA8PCByOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICghKGsgJiBuKSkgewogICAgICAgICAgICAgICAgICAgICAgICBlWzEyOTU5XSA9IGsgfCBuLCBlW2kgPj4gMl0gPSBmLCByID0gMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBBIDw8ICgociB8IDApICE9IDMxID8gMjUgLSAociA+Pj4gMSB8IDApIHwgMCA6IDApLCBpID0gZVtpID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGksIChlW2kgKyA0ID4+IDJdICYgLTgpID09IChBIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSByID4+PiAyOSB8IDAsIHIgPSByIDw8IDEsIG4gPSAoaSAmIDQpICsgayB8IDAsIGkgPSBlW24gKyAxNiA+PiAyXSwgIWkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlW24gKyAxNiA+PiAyXSA9IGYsIGkgPSBrLCByID0gMjQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGsgPSBmLCBuID0gZiwgQSA9IDg7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpID0gZVtrICsgOCA+PiAyXSwgZVtpICsgMTIgPj4gMl0gPSBmLCBlW2sgKyA4ID4+IDJdID0gZiwgciA9IDgsIG4gPSAwLCBBID0gMjQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW3IgKyBmID4+IDJdID0gaSwgZVtmICsgMTIgPj4gMl0gPSBrLCBlW0EgKyBmID4+IDJdID0gbiwgQSA9IGVbMTI5NjZdIC0gMSB8IDAsIGVbMTI5NjZdID0gQSB8fCAtMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdWkoQSwgaSkgewogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwOwogICAgICAgICAgICAgIHQgPSBBICsgaSB8IDAsIHIgPSBlW0EgKyA0ID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKHIgJiAxKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGlmICghKHIgJiAyKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICByID0gZVtBID4+IDJdLCBpID0gciArIGkgfCAwOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IEEgLSByIHwgMCwgKEEgfCAwKSAhPSBlWzEyOTYzXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtBICsgMTIgPj4gMl0sIHIgPj4+IDAgPD0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGVbQSArIDggPj4gMl0sIChrIHwgMCkgIT0gKGYgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSA1MTgzMiwgbyA9IGVbMTI5NThdICYgaDEociA+Pj4gMyB8IDApLCBlW3UgPj4gMl0gPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW0EgKyAyNCA+PiAyXSwgKEEgfCAwKSAhPSAoZiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVtBICsgOCA+PiAyXSwgZVtyICsgMTIgPj4gMl0gPSBmLCBlW2YgKyA4ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVtBICsgMjAgPj4gMl0sIGspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gQSArIDIwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVtBICsgMTYgPj4gMl0sICFrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IEEgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gciwgZiA9IGssIHIgPSBmICsgMjAgfCAwLCBrID0gZVtmICsgMjAgPj4gMl0sICEoIWsgJiYgKHIgPSBmICsgMTYgfCAwLCBrID0gZVtmICsgMTYgPj4gMl0sICFrKSk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW2wgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW3QgKyA0ID4+IDJdLCAociAmIDMpICE9IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgZVsxMjk2MF0gPSBpLCBlW3QgKyA0ID4+IDJdID0gciAmIC0yLCBlW0EgKyA0ID4+IDJdID0gaSB8IDEsIGVbdCA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEyID4+IDJdID0gZiwgZVtmICsgOCA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmID0gMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoIW4pCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgciA9IGVbQSArIDI4ID4+IDJdLCBrID0gKHIgPDwgMikgKyA1MjEzNiB8IDA7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtrID4+IDJdID09IChBIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2sgPj4gMl0gPSBmLCBmKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgdSA9IDUxODM2LCBvID0gZVsxMjk1OV0gJiBoMShyKSwgZVt1ID4+IDJdID0gbzsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW24gKyAxNiA+PiAyXSA9PSAoQSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVbbiArIDE2ID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbbiArIDIwID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZVtmICsgMjQgPj4gMl0gPSBuLCByID0gZVtBICsgMTYgPj4gMl0sIHIgJiYgKGVbZiArIDE2ID4+IDJdID0gciwgZVtyICsgMjQgPj4gMl0gPSBmKSwgciA9IGVbQSArIDIwID4+IDJdLCAhcikKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBlW2YgKyAyMCA+PiAyXSA9IHIsIGVbciArIDI0ID4+IDJdID0gZjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW3QgKyA0ID4+IDJdLCAhKHIgJiAyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlWzEyOTY0XSA9PSAodCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVsxMjk2NF0gPSBBLCBpID0gZVsxMjk2MV0gKyBpIHwgMCwgZVsxMjk2MV0gPSBpLCBlW0EgKyA0ID4+IDJdID0gaSB8IDEsIGVbMTI5NjNdICE9IChBIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlWzEyOTYwXSA9IDAsIGVbMTI5NjNdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBlWzEyOTYzXSwgKGEgfCAwKSA9PSAodCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlWzEyOTYzXSA9IEEsIGkgPSBlWzEyOTYwXSArIGkgfCAwLCBlWzEyOTYwXSA9IGksIGVbQSArIDQgPj4gMl0gPSBpIHwgMSwgZVtBICsgaSA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gKHIgJiAtOCkgKyBpIHwgMCwgZiA9IGVbdCArIDEyID4+IDJdLCByID4+PiAwIDw9IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW3QgKyA4ID4+IDJdLCAoayB8IDApID09IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IDUxODMyLCBvID0gZVsxMjk1OF0gJiBoMShyID4+PiAzIHwgMCksIGVbdSA+PiAyXSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAxMiA+PiAyXSA9IGYsIGVbZiArIDggPj4gMl0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW3QgKyAyNCA+PiAyXSwgKGYgfCAwKSAhPSAodCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVt0ICsgOCA+PiAyXSwgZVtyICsgMTIgPj4gMl0gPSBmLCBlW2YgKyA4ID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVt0ICsgMjAgPj4gMl0sIGspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdCArIDIwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVt0ICsgMTYgPj4gMl0sICFrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBsID0gciwgZiA9IGssIHIgPSBmICsgMjAgfCAwLCBrID0gZVtmICsgMjAgPj4gMl0sICEoIWsgJiYgKHIgPSBmICsgMTYgfCAwLCBrID0gZVtmICsgMTYgPj4gMl0sICFrKSk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBlW2wgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZVt0ICsgNCA+PiAyXSA9IHIgJiAtMiwgZVtBICsgNCA+PiAyXSA9IGkgfCAxLCBlW0EgKyBpID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIW4pCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIHIgPSBlW3QgKyAyOCA+PiAyXSwgayA9IChyIDw8IDIpICsgNTIxMzYgfCAwOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2sgPj4gMl0gPT0gKHQgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtrID4+IDJdID0gZiwgZikKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICB1ID0gNTE4MzYsIG8gPSBlWzEyOTU5XSAmIGgxKHIpLCBlW3UgPj4gMl0gPSBvOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtuICsgMTYgPj4gMl0gPT0gKHQgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGVbbiArIDE2ID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbbiArIDIwID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbZiArIDI0ID4+IDJdID0gbiwgciA9IGVbdCArIDE2ID4+IDJdLCByICYmIChlW2YgKyAxNiA+PiAyXSA9IHIsIGVbciArIDI0ID4+IDJdID0gZiksIHIgPSBlW3QgKyAyMCA+PiAyXSwgIXIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIGVbZiArIDIwID4+IDJdID0gciwgZVtyICsgMjQgPj4gMl0gPSBmOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyA0ID4+IDJdID0gaSB8IDEsIGVbQSArIGkgPj4gMl0gPSBpLCAoQSB8IDApICE9IChhIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZVsxMjk2MF0gPSBpOwogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgciA9IChpICYgLTgpICsgNTE4NzIgfCAwLCBmID0gZVsxMjk1OF0sIGkgPSAxIDw8IChpID4+PiAzKTsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmICghKGYgJiBpKSkgewogICAgICAgICAgICAgICAgICAgICAgZVsxMjk1OF0gPSBpIHwgZiwgaSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpID0gZVtyICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW3IgKyA4ID4+IDJdID0gQSwgZVtpICsgMTIgPj4gMl0gPSBBLCBlW0EgKyAxMiA+PiAyXSA9IHIsIGVbQSArIDggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmID0gMzEsIGkgPj4+IDAgPD0gMTY3NzcyMTUgJiYgKHIgPSBPMChpID4+PiA4IHwgMCksIGYgPSAoKGkgPj4+IDM4IC0gciAmIDEpIC0gKHIgPDwgMSkgfCAwKSArIDYyIHwgMCksIGVbQSArIDI4ID4+IDJdID0gZiwgZVtBICsgMTYgPj4gMl0gPSAwLCBlW0EgKyAyMCA+PiAyXSA9IDAsIHIgPSAoZiA8PCAyKSArIDUyMTM2IHwgMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgayA9IGVbMTI5NTldLCBsID0gMSA8PCBmOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoayAmIGwpKSB7CiAgICAgICAgICAgICAgICAgICAgICBlWzEyOTU5XSA9IGsgfCBsLCBlW3IgPj4gMl0gPSBBLCBlW0EgKyAyNCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSBpIDw8ICgoZiB8IDApICE9IDMxID8gMjUgLSAoZiA+Pj4gMSB8IDApIHwgMCA6IDApLCByID0gZVtyID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSByLCAoZVtyICsgNCA+PiAyXSAmIC04KSA9PSAoaSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBmID4+PiAyOSB8IDAsIGYgPSBmIDw8IDEsIGwgPSBrICsgKHIgJiA0KSB8IDAsIHIgPSBlW2wgKyAxNiA+PiAyXSwgIXIpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlW2wgKyAxNiA+PiAyXSA9IEEsIGVbQSArIDI0ID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW0EgKyAxMiA+PiAyXSA9IEEsIGVbQSArIDggPj4gMl0gPSBBOwogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpID0gZVtrICsgOCA+PiAyXSwgZVtpICsgMTIgPj4gMl0gPSBBLCBlW2sgKyA4ID4+IDJdID0gQSwgZVtBICsgMjQgPj4gMl0gPSAwLCBlW0EgKyAxMiA+PiAyXSA9IGssIGVbQSArIDggPj4gMl0gPSBpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBpayhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwOwogICAgICAgICAgICAgIHQgPSBYIC0gMTEyIHwgMCwgWCA9IHQsIG8gPSAxMDI0OwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGwgPSBFMigxLCAxMDI0KSwgbCkgewogICAgICAgICAgICAgICAgICAgIGZvciAocyA9IHQgKyA5MiB8IDAsIGcgPSB0ICsgMTA4IHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB0ICsgMTA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkxKGksIGYsIDgsIHIpIHwgMCkgIT0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgyKGYsIHQgKyA4OCB8IDAsIDQpLCBoMihnLCBzLCA0KSwgYSA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVbdCArIDg4ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW2kgKyAxMiA+PiAyXSwgbiA9IGYsIGsgPSBlW2kgKyA4ID4+IDJdLCBmIHwgayA/ICh1ID0gZVtpICsgNTYgPj4gMl0sIGYgPSBrIC0gdSB8IDAsIGsgPSBuIC0gKGVbaSArIDYwID4+IDJdICsgKGsgPj4+IDAgPCB1ID4+PiAwKSB8IDApIHwgMCkgOiAoZiA9IDAsIGsgPSAwKSwgKGsgfCAwKSA8IDAgPyBrID0gMSA6IGsgPSBmID4+PiAwIDwgNDI5NDk2NzI4OCAmIChrIHwgMCkgPD0gMCwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEociwgMSwgMTg3MzQsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IHQgKyAxMDQgfCAwLCAoaTEoaSwgZiwgOCwgcikgfCAwKSAhPSA4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgyKGYsIHQgKyAxMDAgfCAwLCA0KSwgIWVbdCArIDEwMCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEociwgMSwgMTg3MzQsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0ICsgODggPj4gMl0gPSBmICsgODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgyKGcsIHQgKyA4OCB8IDAsIDQpLCBhID0gMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbdCArIDkyID4+IDJdLCAoZiB8IDApID09IDE3ODU3Mzc4MjcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyAxMDAgPj4gMl0sIGkgJiA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTAwID4+IDJdID0gaSB8IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKHIsIDEsIDkxNzcsIDApLCBSKGwpLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVt0ICsgODggPj4gMl0sICFrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEociwgMSwgNTY3MCwgMCksIFIobCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPCBhID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdCArIDQgPj4gMl0gPSBmLCBlW3QgPj4gMl0gPSBrLCBRKHIsIDEsIDI1Mjg4LCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgPD0gMTY2ODI0NjY0MSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID09IDE2NTE1MzI2NDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID09IDE2Njc1MjM5NDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApICE9IDE2NjgxMTI3NTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAzMTc2MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApIDw9IDE3ODM2MzU5OTkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGYgfCAwKSA9PSAxNjY4MjQ2NjQyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDMxNzI4LCAoZiB8IDApID09IDE3Njg0NDkxMzgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApICE9IDE3MTg5MDkyOTYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAzMTcwNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID09IDE4ODU1NjQwMTgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgPT0gMTc4MzYzNmUzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gMzE3MTIsIChmIHwgMCkgPT0gMTc4NTczNzgzMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW0EgKyAxMDAgPj4gMl0sIGYgJiAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShyLCAxLCAzOTQzLCAwKSwgUihsKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMzE3NDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMzE3NTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMzE3Njg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMzE3MzY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbdCArIDc2ID4+IDJdID0gZiAmIDI1NSwgZVt0ICsgNjQgPj4gMl0gPSBmID4+PiAyNCwgZVt0ICsgNzIgPj4gMl0gPSBmID4+PiA4ICYgMjU1LCBlW3QgKyA2OCA+PiAyXSA9IGYgPj4+IDE2ICYgMjU1LCBRKHIsIDIsIDM4OTIsIHQgLSAtNjQgfCAwKSwgayA9IGsgLSBhIHwgMCwgSVtBICsgMTAwIHwgMF0gJiA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVt0ICsgOTIgPj4gMl0sIGVbdCArIDQ4ID4+IDJdID0gZiA+Pj4gMjQsIGVbdCArIDYwID4+IDJdID0gZiAmIDI1NSwgZVt0ICsgNTIgPj4gMl0gPSBmID4+PiAxNiAmIDI1NSwgZVt0ICsgNTYgPj4gMl0gPSBmID4+PiA4ICYgMjU1LCBRKHIsIDIsIDE2MzE1LCB0ICsgNDggfCAwKSwgZVtBICsgMTAwID4+IDJdID0gZVtBICsgMTAwID4+IDJdIHwgMjE0NzQ4MzY0NywgZiA9IG8yW2VbaSArIDQwID4+IDJdXShpLCBrLCAwLCByKSB8IDAsICFxMiAmIChmIHwgMCkgPT0gKGsgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShyLCAxLCA2MjU5LCAwKSwgUihsKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMzE2OTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrIC0gYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBrLCBrID0gZVtpICsgMTIgPj4gMl0sIHUgPSBrLCBhID0gZVtpICsgOCA+PiAyXSwgayB8IGEgPyAoaCA9IGVbaSArIDU2ID4+IDJdLCBrID0gYSAtIGggfCAwLCBhID0gdSAtIChlW2kgKyA2MCA+PiAyXSArIChhID4+PiAwIDwgaCA+Pj4gMCkgfCAwKSB8IDApIDogKGsgPSAwLCBhID0gMCksIChhIHwgMCkgPCAwID8gayA9IDEgOiBrID0gKGEgfCAwKSA8PSAwICYgZiA+Pj4gMCA+IGsgPj4+IDAsIGspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVt0ICsgODggPj4gMl0sIGsgPSBlW3QgKyA5MiA+PiAyXSwgQSA9IGVbaSArIDggPj4gMl0sIEEgfCBlW2kgKyAxMiA+PiAyXSA/IEEgPSBBIC0gZVtpICsgNTYgPj4gMl0gfCAwIDogQSA9IDAsIGVbdCArIDQwID4+IDJdID0gQSwgZVt0ICsgMzYgPj4gMl0gPSBmLCBlW3QgKyAzMiA+PiAyXSA9IGsgJiAyNTUsIGVbdCArIDIwID4+IDJdID0gayA+Pj4gMjQsIGVbdCArIDE2ID4+IDJdID0gbiwgZVt0ICsgMjggPj4gMl0gPSBrID4+PiA4ICYgMjU1LCBlW3QgKyAyNCA+PiAyXSA9IGsgPj4+IDE2ICYgMjU1LCBRKHIsIDEsIDI4MDMwLCB0ICsgMTYgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID4+PiAwIDw9IG8gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gZiwgayA9IG8wKGwsIGYpLCBrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIobCksIFEociwgMSwgNDA3NCwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZiAmIDIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEociwgMSwgNDAxMywgMCksIFIobCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDEwMCA+PiAyXSA9IGYgfCAyMTQ3NDgzNjQ3LCBmID0gayAtIGEgfCAwLCBrID0gbzJbZVtpICsgNDAgPj4gMl1dKGksIGYsIDAsIHIpIHwgMCwgIXEyICYgKGYgfCAwKSA9PSAoayB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKElbQSArIDEwMCB8IDBdICYgOCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKHIsIDIsIDYyNTksIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBSKGwpLCBBID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIFEociwgMSwgNjI1OSwgMCksIFIobCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKChpMShpLCBrLCBmLCByKSB8IDApICE9IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgUShyLCAxLCA2MzA5LCAwKSwgUihrKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGssICEobzJbZVtuICsgNCA+PiAyXV0oQSwgaywgZiwgcikgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIFIoayksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgUShyLCAxLCA4NDI0LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBSKGwpLCBBID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSB0ICsgMTEyIHwgMCwgQSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUTQoQSwgaSwgcikgewogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMDsKICAgICAgICAgICAgICBpZiAoYSA9IGVbQSArIDI0ID4+IDJdLCBuID0gZVthICsgMTYgPj4gMl0sIG4pIHsKICAgICAgICAgICAgICAgIGZvciAoayA9IGVbYSArIDI0ID4+IDJdLCBmID0gZVtlW2VbQSArIDIwID4+IDJdID4+IDJdICsgMjAgPj4gMl07IHUgPSB0LCB0ID0gZVtrICsgMjQgPj4gMl0sIHQgPSAodCA+Pj4gMyB8IDApICsgKCh0ICYgNykgIT0gMCkgfCAwLCB0ID0gdSArIFooWihlW2YgKyAxMiA+PiAyXSAtIGVbZiArIDQgPj4gMl0gfCAwLCBlW2YgKyA4ID4+IDJdIC0gZVtmID4+IDJdIHwgMCksICh0IHwgMCkgPT0gMyA/IDQgOiB0KSB8IDAsIGYgPSBmICsgNzYgfCAwLCBrID0gayArIDUyIHwgMCwgbCA9IGwgKyAxIHwgMCwgKG4gfCAwKSAhPSAobCB8IDApOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGlmIChmID0gMCwgKHIgfCAwKSA9PSAodCB8IDApKQogICAgICAgICAgICAgICAgICBmb3IgKGwgPSBlW2EgKyAyNCA+PiAyXSwgdCA9IGVbZVtlW0EgKyAyMCA+PiAyXSA+PiAyXSArIDIwID4+IDJdLCBBID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICByID0gWihlW3QgKyAxMiA+PiAyXSAtIGVbdCArIDQgPj4gMl0gfCAwLCBlW3QgKyA4ID4+IDJdIC0gZVt0ID4+IDJdIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgazoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZiA9IGVbbCArIDI0ID4+IDJdLCBmID0gKGYgPj4+IDMgfCAwKSArICgoZiAmIDcpICE9IDApIHwgMCwgKChmIHwgMCkgPT0gMyA/IDQgOiBmKSAtIDEgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbdCArIDM2ID4+IDJdLCBlW2wgKyAzMiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPj0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gciAmIC04LCBrID0gMDsgZVtmID4+IDJdID0gRltpIHwgMF0sIGVbZiArIDQgPj4gMl0gPSBGW2kgKyAxIHwgMF0sIGVbZiArIDggPj4gMl0gPSBGW2kgKyAyIHwgMF0sIGVbZiArIDEyID4+IDJdID0gRltpICsgMyB8IDBdLCBlW2YgKyAxNiA+PiAyXSA9IEZbaSArIDQgfCAwXSwgZVtmICsgMjAgPj4gMl0gPSBGW2kgKyA1IHwgMF0sIGVbZiArIDI0ID4+IDJdID0gRltpICsgNiB8IDBdLCBlW2YgKyAyOCA+PiAyXSA9IEZbaSArIDcgfCAwXSwgZiA9IGYgKyAzMiB8IDAsIGkgPSBpICsgOCB8IDAsIGsgPSBrICsgOCB8IDAsIChuIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gMCwgciA9IHIgJiA3LCAhcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2YgPj4gMl0gPSBGW2kgfCAwXSwgZiA9IGYgKyA0IHwgMCwgaSA9IGkgKyAxIHwgMCwgayA9IGsgKyAxIHwgMCwgKHIgfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPj0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IHIgJiAtOCwgayA9IDA7IGVbZiA+PiAyXSA9IElbaSB8IDBdLCBlW2YgKyA0ID4+IDJdID0gSVtpICsgMSB8IDBdLCBlW2YgKyA4ID4+IDJdID0gSVtpICsgMiB8IDBdLCBlW2YgKyAxMiA+PiAyXSA9IElbaSArIDMgfCAwXSwgZVtmICsgMTYgPj4gMl0gPSBJW2kgKyA0IHwgMF0sIGVbZiArIDIwID4+IDJdID0gSVtpICsgNSB8IDBdLCBlW2YgKyAyNCA+PiAyXSA9IElbaSArIDYgfCAwXSwgZVtmICsgMjggPj4gMl0gPSBJW2kgKyA3IHwgMF0sIGYgPSBmICsgMzIgfCAwLCBpID0gaSArIDggfCAwLCBrID0gayArIDggfCAwLCAobiB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gMCwgciA9IHIgJiA3LCAhcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbZiA+PiAyXSA9IElbaSB8IDBdLCBmID0gZiArIDQgfCAwLCBpID0gaSArIDEgfCAwLCBrID0gayArIDEgfCAwLCAociB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVt0ICsgMzYgPj4gMl0sIGVbbCArIDMyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA+PSA4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gciAmIC04LCBrID0gMDsgZVtmID4+IDJdID0gdTJbaSA+PiAxXSwgZVtmICsgNCA+PiAyXSA9IHUyW2kgKyAyID4+IDFdLCBlW2YgKyA4ID4+IDJdID0gdTJbaSArIDQgPj4gMV0sIGVbZiArIDEyID4+IDJdID0gdTJbaSArIDYgPj4gMV0sIGVbZiArIDE2ID4+IDJdID0gdTJbaSArIDggPj4gMV0sIGVbZiArIDIwID4+IDJdID0gdTJbaSArIDEwID4+IDFdLCBlW2YgKyAyNCA+PiAyXSA9IHUyW2kgKyAxMiA+PiAxXSwgZVtmICsgMjggPj4gMl0gPSB1MltpICsgMTQgPj4gMV0sIGYgPSBmICsgMzIgfCAwLCBpID0gaSArIDE2IHwgMCwgayA9IGsgKyA4IHwgMCwgKG4gfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDAsIHIgPSByICYgNywgIXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2YgPj4gMl0gPSB1MltpID4+IDFdLCBmID0gZiArIDQgfCAwLCBpID0gaSArIDIgfCAwLCBrID0gayArIDEgfCAwLCAociB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA+PSA4KQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IHIgJiAtOCwgayA9IDA7IGVbZiA+PiAyXSA9IEcyW2kgPj4gMV0sIGVbZiArIDQgPj4gMl0gPSBHMltpICsgMiA+PiAxXSwgZVtmICsgOCA+PiAyXSA9IEcyW2kgKyA0ID4+IDFdLCBlW2YgKyAxMiA+PiAyXSA9IEcyW2kgKyA2ID4+IDFdLCBlW2YgKyAxNiA+PiAyXSA9IEcyW2kgKyA4ID4+IDFdLCBlW2YgKyAyMCA+PiAyXSA9IEcyW2kgKyAxMCA+PiAxXSwgZVtmICsgMjQgPj4gMl0gPSBHMltpICsgMTIgPj4gMV0sIGVbZiArIDI4ID4+IDJdID0gRzJbaSArIDE0ID4+IDFdLCBmID0gZiArIDMyIHwgMCwgaSA9IGkgKyAxNiB8IDAsIGsgPSBrICsgOCB8IDAsIChuIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDAsIHIgPSByICYgNywgIXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbZiA+PiAyXSA9IEcyW2kgPj4gMV0sIGYgPSBmICsgNCB8IDAsIGkgPSBpICsgMiB8IDAsIGsgPSBrICsgMSB8IDAsIChyIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVt0ICsgMzYgPj4gMl0sIHIgPj4+IDAgPj0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gciAmIC04LCBrID0gMDsgZVtmID4+IDJdID0gZVtpID4+IDJdLCBlW2YgKyA0ID4+IDJdID0gZVtpICsgNCA+PiAyXSwgZVtmICsgOCA+PiAyXSA9IGVbaSArIDggPj4gMl0sIGVbZiArIDEyID4+IDJdID0gZVtpICsgMTIgPj4gMl0sIGVbZiArIDE2ID4+IDJdID0gZVtpICsgMTYgPj4gMl0sIGVbZiArIDIwID4+IDJdID0gZVtpICsgMjAgPj4gMl0sIGVbZiArIDI0ID4+IDJdID0gZVtpICsgMjQgPj4gMl0sIGVbZiArIDI4ID4+IDJdID0gZVtpICsgMjggPj4gMl0sIGYgPSBmICsgMzIgfCAwLCBpID0gaSArIDMyIHwgMCwgayA9IGsgKyA4IHwgMCwgKG4gfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAwLCByID0gciAmIDcsICFyKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbZiA+PiAyXSA9IGVbaSA+PiAyXSwgZiA9IGYgKyA0IHwgMCwgaSA9IGkgKyA0IHwgMCwgayA9IGsgKyAxIHwgMCwgKHIgfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0ICsgNzYgfCAwLCBsID0gbCArIDUyIHwgMCwgZiA9IDEsIEEgPSBBICsgMSB8IDAsICEoQSA+Pj4gMCA8IGRbYSArIDE2ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuICFyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG9pKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMDsKICAgICAgICAgICAgICBuID0gZVtBICsgOCA+PiAyXSwgayA9IG4gKyBlW0EgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIWVbQSArIDEyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgIGlmICgoayB8IDApIDwgMiB8IChmIHwgMCkgPD0gMCkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBmb3IgKGMgPSBrICYgMjE0NzQ4MzY0NCwgaCA9IGsgJiAzLCB2ID0gayAmIDEsIEMgPSBuICsgMSB8IDAsIGwgPSBlW0EgPj4gMl0sIHcgPSBsICsgKGsgPDwgMikgfCAwLCBtID0gayAtIDQgPj4+IDEgfCAwLCBBID0gayAtIDEgfCAwLCB5ID0gbCArIChBIDw8IDIpIHwgMCwgcCA9IFoociwgbikgPDwgMiwgZyA9IGsgPj4+IDAgPCA0LCBIID0gWihBID4+PiAxIHwgMCwgcikgPDwgMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbaSArIHAgPj4gMl0sIGsgPSBlW2kgPj4gMl0gLSAobiArIDEgPj4gMSkgfCAwLCBhID0gMCwgQSA9IDAsICFnKQogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHUgPSBBICsgMSB8IDAsIEogPSBlWyhaKHUsIHIpIDw8IDIpICsgaSA+PiAyXSwgdCA9IGVbKFooQSArIEMgfCAwLCByKSA8PCAyKSArIGkgPj4gMl0sIEIgPSBsICsgKGEgPDwgMikgfCAwLCBlW0IgPj4gMl0gPSBrLCBvID0gaywgayA9IEogLSAoKG4gKyB0IHwgMCkgKyAyID4+IDIpIHwgMCwgZVtCICsgNCA+PiAyXSA9IChvICsgayA+PiAxKSArIG4sIGEgPSBhICsgMiB8IDAsIG8gPSAoQSB8IDApICE9IChtIHwgMCksIG4gPSB0LCBBID0gdSwgISFvOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtsICsgKGEgPDwgMikgPj4gMl0gPSBrLCB2ID8gKEEgPSBlW2kgKyBIID4+IDJdIC0gKG4gKyAxID4+IDEpIHwgMCwgZVt5ID4+IDJdID0gQSwgayA9IEEgKyBrID4+IDEsIEEgPSAtOCkgOiBBID0gLTQsIGVbQSArIHcgPj4gMl0gPSBrICsgbiwgayA9IDAsIEEgPSAwLCBuID0gMCwgIWcpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVsoWihBLCByKSA8PCAyKSArIGkgPj4gMl0gPSBlW2wgKyAoQSA8PCAyKSA+PiAyXSwgdCA9IEEgfCAxLCBlWyhaKHQsIHIpIDw8IDIpICsgaSA+PiAyXSA9IGVbbCArICh0IDw8IDIpID4+IDJdLCB0ID0gQSB8IDIsIGVbKFoodCwgcikgPDwgMikgKyBpID4+IDJdID0gZVtsICsgKHQgPDwgMikgPj4gMl0sIHQgPSBBIHwgMywgZVsoWih0LCByKSA8PCAyKSArIGkgPj4gMl0gPSBlW2wgKyAodCA8PCAyKSA+PiAyXSwgQSA9IEEgKyA0IHwgMCwgbiA9IG4gKyA0IHwgMCwgKGMgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBpZiAoaCkKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyhaKEEsIHIpIDw8IDIpICsgaSA+PiAyXSA9IGVbbCArIChBIDw8IDIpID4+IDJdLCBBID0gQSArIDEgfCAwLCBrID0gayArIDEgfCAwLCAoaCB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSArIDQgfCAwLCBzID0gcyArIDEgfCAwLCAocyB8IDApID09IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaToKICAgICAgICAgICAgICAgICAgc3dpdGNoIChrIC0gMSB8IDApIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKGYgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gZiAmIDIxNDc0ODM2NDQsIEEgPSAwOyBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gLyAyLCBlW2kgKyA0ID4+IDJdID0gZVtpICsgNCA+PiAyXSAvIDIsIGVbaSArIDggPj4gMl0gPSBlW2kgKyA4ID4+IDJdIC8gMiwgZVtpICsgMTIgPj4gMl0gPSBlW2kgKyAxMiA+PiAyXSAvIDIsIGkgPSBpICsgMTYgfCAwLCBBID0gQSArIDQgfCAwLCAociB8IDApICE9IChBIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGYgJiAzLCAhcikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoQSA9IDA7IGVbaSA+PiAyXSA9IGVbaSA+PiAyXSAvIDIsIGkgPSBpICsgNCB8IDAsIEEgPSBBICsgMSB8IDAsIChyIHwgMCkgIT0gKEEgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKEEgPSBlW0EgPj4gMl0sIGsgPSAwLCBuID0gWihyLCBuKSA8PCAyOyB0ID0gaSArIG4gfCAwLCB1ID0gZVtpID4+IDJdIC0gKGVbdCA+PiAyXSArIDEgPj4gMSkgfCAwLCBlW0EgKyA0ID4+IDJdID0gdSwgdCA9IHUgKyBlW3QgPj4gMl0gfCAwLCBlW0EgPj4gMl0gPSB0LCBlW2kgPj4gMl0gPSB0LCBlWyhyIDw8IDIpICsgaSA+PiAyXSA9IGVbQSArIDQgPj4gMl0sIGkgPSBpICsgNCB8IDAsIGsgPSBrICsgMSB8IDAsIChrIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKGsgfCAwKSA8IDMgfCAoZiB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKGMgPSBrICYgMjE0NzQ4MzY0NCwgaCA9IGsgJiAzLCBsID0gZVtBID4+IDJdLCB2ID0gKGwgKyAoayA8PCAyKSB8IDApIC0gNCB8IDAsIEEgPSBrIC0gMiB8IDAsIEMgPSBsICsgKEEgPDwgMikgfCAwLCB3ID0gayAmIDEsIHQgPSAhdywgbSA9ICgoayAtIHQgfCAwKSAtIDQgPj4+IDEgfCAwKSArIDEgfCAwLCB5ID0gWihyLCBuKSA8PCAyLCBwID0gQSAtIHQgPj4+IDAgPCAyLCBIID0gWigoayA+Pj4gMSB8IDApIC0gMSB8IDAsIHIpIDw8IDIsIEogPSBrIC0gMSA+Pj4gMCA8IDM7IDsgKSB7CiAgICAgICAgICAgICAgICAgIGlmIChnID0gaSArIHkgfCAwLCBuID0gZVtnICsgKHIgPDwgMikgPj4gMl0sIEEgPSBlW2cgPj4gMl0sIGsgPSBlW2kgPj4gMl0gLSAoKG4gKyBBIHwgMCkgKyAyID4+IDIpIHwgMCwgZVtsID4+IDJdID0gayArIEEsIGEgPSAxLCBBID0gMSwgIXApCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IEIgPSBlWyhaKEEsIHIpIDw8IDIpICsgaSA+PiAyXSwgdSA9IEEgKyAxIHwgMCwgdCA9IGVbZyArIChaKHUsIHIpIDw8IDIpID4+IDJdLCBFID0gbCArIChhIDw8IDIpIHwgMCwgZVtFID4+IDJdID0gaywgbyA9IGssIGsgPSBCIC0gKChuICsgdCB8IDApICsgMiA+PiAyKSB8IDAsIGVbRSArIDQgPj4gMl0gPSAobyArIGsgPj4gMSkgKyBuLCBhID0gYSArIDIgfCAwLCBvID0gKEEgfCAwKSAhPSAobSB8IDApLCBBID0gdSwgbiA9IHQsICEhbzsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBlW2wgKyAoYSA8PCAyKSA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXcpIHsKICAgICAgICAgICAgICAgICAgICAgIEEgPSBlW2kgKyBIID4+IDJdIC0gKG4gKyAxID4+IDEpIHwgMCwgZVtDID4+IDJdID0gKGsgKyBBID4+IDEpICsgbjsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEEgPSBrICsgbiB8IDA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGVbdiA+PiAyXSA9IEEsIGsgPSAwLCBBID0gMCwgbiA9IDAsICFKKQogICAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyhaKEEsIHIpIDw8IDIpICsgaSA+PiAyXSA9IGVbbCArIChBIDw8IDIpID4+IDJdLCB0ID0gQSB8IDEsIGVbKFoodCwgcikgPDwgMikgKyBpID4+IDJdID0gZVtsICsgKHQgPDwgMikgPj4gMl0sIHQgPSBBIHwgMiwgZVsoWih0LCByKSA8PCAyKSArIGkgPj4gMl0gPSBlW2wgKyAodCA8PCAyKSA+PiAyXSwgdCA9IEEgfCAzLCBlWyhaKHQsIHIpIDw8IDIpICsgaSA+PiAyXSA9IGVbbCArICh0IDw8IDIpID4+IDJdLCBBID0gQSArIDQgfCAwLCBuID0gbiArIDQgfCAwLCAoYyB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgaWYgKGgpCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbKFooQSwgcikgPDwgMikgKyBpID4+IDJdID0gZVtsICsgKEEgPDwgMikgPj4gMl0sIEEgPSBBICsgMSB8IDAsIGsgPSBrICsgMSB8IDAsIChoIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgKyA0IHwgMCwgcyA9IHMgKyAxIHwgMCwgKHMgfCAwKSA9PSAoZiB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBWNChBLCBpLCByLCBmLCBrKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBrID0gayB8IDA7CiAgICAgICAgICAgICAgdmFyIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMCwgRCA9IDAsIFUgPSAwLCBQID0gMCwgeCA9IDAsIHogPSAwOwogICAgICAgICAgICAgIGMgPSBYIC0gMTYgfCAwLCBYID0gYzsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIXIpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCAyMjE2OCwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoeSA9IGVbciArIDE2ID4+IDJdLCB0ID0gZVtBICsgNzIgPj4gMl0sIHkgPj4+IDAgPCBkW3QgKyAxNiA+PiAyXSkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDIxMTcyLCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChuID0gZVtBICsgMTA0ID4+IDJdLCBsID0gWihuLCBlW0EgKyAxMDggPj4gMl0pLCBsID4+PiAwIDw9IGsgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgZVtjID4+IDJdID0gaywgZVtjICsgNCA+PiAyXSA9IGwgLSAxLCBRKGYsIDEsIDI4NzEyLCBjKSwgbiA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodSA9IChrID4+PiAwKSAvIChuID4+PiAwKSB8IDAsIGwgPSBrIC0gWih1LCBuKSB8IDAsIG4gPSBlW0EgKyA4NCA+PiAyXSArIFoobCwgZVtBICsgOTIgPj4gMl0pIHwgMCwgZVtyID4+IDJdID0gbiwgdCA9IGVbdCA+PiAyXSwgdCA9IG4gPj4+IDAgPiB0ID4+PiAwID8gbiA6IHQsIGVbciA+PiAyXSA9IHQsIG4gPSBlW0EgKyA4NCA+PiAyXSArIFooZVtBICsgOTIgPj4gMl0sIGwgKyAxIHwgMCkgfCAwLCBlW3IgKyA4ID4+IDJdID0gbiwgbCA9IGVbZVtBICsgNzIgPj4gMl0gKyA4ID4+IDJdLCBuID0gbiA+Pj4gMCA8IGwgPj4+IDAgPyBuIDogbCwgZVtyICsgOCA+PiAyXSA9IG4sIGwgPSBlW0EgKyA4OCA+PiAyXSArIFoodSwgZVtBICsgOTYgPj4gMl0pIHwgMCwgZVtyICsgNCA+PiAyXSA9IGwsIGcgPSBlW2VbQSArIDcyID4+IDJdICsgNCA+PiAyXSwgbCA9IGwgPj4+IDAgPiBnID4+PiAwID8gbCA6IGcsIGVbciArIDQgPj4gMl0gPSBsLCB1ID0gZVtBICsgODggPj4gMl0gKyBaKGVbQSArIDk2ID4+IDJdLCB1ICsgMSB8IDApIHwgMCwgZVtyICsgMTIgPj4gMl0gPSB1LCBnID0gZVtlW0EgKyA3MiA+PiAyXSArIDEyID4+IDJdLCB1ID0gdSA+Pj4gMCA8IGcgPj4+IDAgPyB1IDogZywgZVtyICsgMTIgPj4gMl0gPSB1LCBnID0gZVtBICsgNzIgPj4gMl0sIGggPSBlW2cgKyAxNiA+PiAyXSwgaCkKICAgICAgICAgICAgICAgICAgZm9yIChwID0gdSAtIDEgfCAwLCBKID0gKHUgPj4gMzEpIC0gIXUgfCAwLCBIID0gbiAtIDEgfCAwLCBFID0gKG4gPj4gMzEpIC0gIW4gfCAwLCBuID0gbCwgRCA9IG4gLSAxIHwgMCwgVSA9IChuID4+IDMxKSAtICFuIHwgMCwgbiA9IHQsIFAgPSBuIC0gMSB8IDAsIHggPSAobiA+PiAzMSkgLSAhbiB8IDAsIHogPSBlW2cgKyAyNCA+PiAyXSwgbiA9IGVbciArIDI0ID4+IDJdOyB1ID0gZVsoeiArIFoodywgNTIpIHwgMCkgKyA0MCA+PiAyXSwgZVtuICsgNDAgPj4gMl0gPSB1LCBnID0gZVtuID4+IDJdLCB0ID0gZyArIFAgfCAwLCBDID0gZyA+PiAzMSwgYSA9IEMgKyB4IHwgMCwgcyA9IHowKHQsIHQgPj4+IDAgPCBnID4+PiAwID8gYSArIDEgfCAwIDogYSwgZywgQyksIGVbbiArIDE2ID4+IDJdID0gcywgbyA9IGVbbiArIDQgPj4gMl0sIGwgPSBvICsgRCB8IDAsIEIgPSBvID4+IDMxLCB0ID0gQiArIFUgfCAwLCB0ID0gejAobCwgbCA+Pj4gMCA8IG8gPj4+IDAgPyB0ICsgMSB8IDAgOiB0LCBvLCBCKSwgZVtuICsgMjAgPj4gMl0gPSB0LCBhID0gdCwgbCA9IHUgJiAzMSwgKHUgJiA2MykgPj4+IDAgPj0gMzIgPyAodCA9IC0xIDw8IGwsIGwgPSAwKSA6ICh0ID0gKDEgPDwgbCkgLSAxICYgLTEgPj4+IDMyIC0gbCwgbCA9IC0xIDw8IGwsIHQgPSB0IHwgbCksIG0gPSBsIC0gYSB8IDAsIHYgPSB0IC0gKChhID4+IDMxKSArIChsID4+PiAwIDwgYSA+Pj4gMCkgfCAwKSB8IDAsIGEgPSB1ICYgMzEsICh1ICYgNjMpID4+PiAwID49IDMyID8gdiA9IHYgPj4gYSA6IHYgPSAoKDEgPDwgYSkgLSAxICYgdikgPDwgMzIgLSBhIHwgbSA+Pj4gYSwgYSA9IEIgKyBKIHwgMCwgbSA9IG8gKyBwIHwgMCwgYSA9IG0gPj4+IDAgPCBwID4+PiAwID8gYSArIDEgfCAwIDogYSwgbyA9IHowKG0sIGEsIG8sIEIpLCBCID0gbCAtIG8gfCAwLCBhID0gdCAtICgobyA+PiAzMSkgKyAobCA+Pj4gMCA8IG8gPj4+IDApIHwgMCkgfCAwLCBvID0gdSAmIDMxLCAodSAmIDYzKSA+Pj4gMCA+PSAzMiA/IGEgPSBhID4+IG8gOiBhID0gKCgxIDw8IG8pIC0gMSAmIGEpIDw8IDMyIC0gbyB8IEIgPj4+IG8sIGVbbiArIDEyID4+IDJdID0gdiAtIGEsIG8gPSBsIC0gcyB8IDAsIHMgPSB0IC0gKChzID4+IDMxKSArIChsID4+PiAwIDwgcyA+Pj4gMCkgfCAwKSB8IDAsIGEgPSBvLCBvID0gdSAmIDMxLCAodSAmIDYzKSA+Pj4gMCA+PSAzMiA/IHMgPSBzID4+IG8gOiBzID0gKCgxIDw8IG8pIC0gMSAmIHMpIDw8IDMyIC0gbyB8IGEgPj4+IG8sIG8gPSB0LCB0ID0gQyArIEUgfCAwLCBhID0gZyArIEggfCAwLCB0ID0gYSA+Pj4gMCA8IEggPj4+IDAgPyB0ICsgMSB8IDAgOiB0LCB0ID0gejAoYSwgdCwgZywgQyksIGcgPSBsIC0gdCB8IDAsIGwgPSBvIC0gKCh0ID4+IDMxKSArICh0ID4+PiAwID4gbCA+Pj4gMCkgfCAwKSB8IDAsIHQgPSB1ICYgMzEsICh1ICYgNjMpID4+PiAwID49IDMyID8gdCA9IGwgPj4gdCA6IHQgPSAoKDEgPDwgdCkgLSAxICYgbCkgPDwgMzIgLSB0IHwgZyA+Pj4gdCwgZVtuICsgOCA+PiAyXSA9IHMgLSB0LCBuID0gbiArIDUyIHwgMCwgdyA9IHcgKyAxIHwgMCwgKHcgfCAwKSAhPSAoaCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgaWYgKGggPj4+IDAgPCB5ID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgIGZvciAobiA9IGVbciArIDI0ID4+IDJdOyB0ID0gWihoLCA1MiksIFIoZVsodCArIG4gfCAwKSArIDQ0ID4+IDJdKSwgbiA9IGVbciArIDI0ID4+IDJdLCBlWyh0ICsgbiB8IDApICsgNDQgPj4gMl0gPSAwLCBoID0gaCArIDEgfCAwLCBoID4+PiAwIDwgZFtyICsgMTYgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGVbciArIDE2ID4+IDJdID0gZVtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG4gPSBlW0EgKyA3NiA+PiAyXSwgbiAmJiB5MShuKSwgdCA9IEUyKDEsIDM2KSwgZVtBICsgNzYgPj4gMl0gPSB0LCBuID0gMCwgIXQgfHwgKEJpKHIsIHQpLCBlW0EgKyA0NCA+PiAyXSA9IGssICFjMChlW0EgKyAxOTIgPj4gMl0sIDEyNSwgZikpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgdCA9IGVbQSArIDE5MiA+PiAyXSwgayA9IGVbdCA+PiAyXSwgaCA9IGVbdCArIDggPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSAxLCBsID0gayAmIDEsIChrIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gayAmIC0yLCB3ID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4gfHwgKGsgPSAwLCAhKG8yW2VbaCA+PiAyXV0oQSwgaSwgZikgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAobzJbZVtoICsgNCA+PiAyXV0oQSwgaSwgZikgfCAwKSAhPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gaywgaCA9IGggKyA4IHwgMCwgdyA9IHcgKyAyIHwgMCwgKHUgfCAwKSA9PSAodyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgayA9ICFuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGwgPyAwIDogbiwgayB8ICFsIHx8IChuID0gKG8yW2VbaCA+PiAyXV0oQSwgaSwgZikgfCAwKSAhPSAwKSwgZVt0ID4+IDJdID0gMCwgbikKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgeTEoZVtBICsgNzIgPj4gMl0pLCBuID0gMCwgZVtBICsgNzIgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVt0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4gPSBMNChBLCByKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBjICsgMTYgfCAwLCBuIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBZNChBLCBpLCByLCBmLCBrLCB0LCBuKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBrID0gayB8IDAsIHQgPSB0IHwgMCwgbiA9IG4gfCAwOwogICAgICAgICAgICAgIHZhciBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDA7CiAgICAgICAgICAgICAgbCA9IFggLSAyMDggfCAwLCBYID0gbCwgbyA9IGVbQSArIDcyID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghKCEoIWVbZVtBICsgMTU2ID4+IDJdICsgNTU5NiA+PiAyXSB8fCBlW0EgKyAxMDQgPj4gMl0gIT0gMSB8IGVbQSArIDEwOCA+PiAyXSAhPSAxKSB8IGVbQSArIDggPj4gMl0gPT0gOCkpIHsKICAgICAgICAgICAgICAgICAgUShuLCAxLCAyMTIxNiwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoID0gZVtpICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghaCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAodSA9IGVbQSArIDE2MCA+PiAyXSwgZyA9IGVbaSArIDI0ID4+IDJdLCBoID4+PiAwID49IDgpCiAgICAgICAgICAgICAgICAgICAgZm9yIChCID0gaCAmIC04OyBlWyhaKGEsIDUyKSArIGcgfCAwKSArIDQwID4+IDJdID0gdSwgZVsoWihhIHwgMSwgNTIpICsgZyB8IDApICsgNDAgPj4gMl0gPSB1LCBlWyhaKGEgfCAyLCA1MikgKyBnIHwgMCkgKyA0MCA+PiAyXSA9IHUsIGVbKFooYSB8IDMsIDUyKSArIGcgfCAwKSArIDQwID4+IDJdID0gdSwgZVsoWihhIHwgNCwgNTIpICsgZyB8IDApICsgNDAgPj4gMl0gPSB1LCBlWyhaKGEgfCA1LCA1MikgKyBnIHwgMCkgKyA0MCA+PiAyXSA9IHUsIGVbKFooYSB8IDYsIDUyKSArIGcgfCAwKSArIDQwID4+IDJdID0gdSwgZVsoWihhIHwgNywgNTIpICsgZyB8IDApICsgNDAgPj4gMl0gPSB1LCBhID0gYSArIDggfCAwLCBzID0gcyArIDggfCAwLCAoQiB8IDApICE9IChzIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgaWYgKGggPSBoICYgNywgIWgpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZm9yICg7IGVbKFooYSwgNTIpICsgZyB8IDApICsgNDAgPj4gMl0gPSB1LCBhID0gYSArIDEgfCAwLCB3ID0gdyArIDEgfCAwLCAoaCB8IDApICE9ICh3IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIShyIHwgZiB8IGsgfCB0KSkgewogICAgICAgICAgICAgICAgICBRKG4sIDQsIDEwMzA1LCAwKSwgZVtBICsgMjggPj4gMl0gPSAwLCBlW0EgKyAzMiA+PiAyXSA9IDAsIHIgPSBlW0EgKyAxMDggPj4gMl0sIGVbQSArIDM2ID4+IDJdID0gZVtBICsgMTA0ID4+IDJdLCBlW0EgKyA0MCA+PiAyXSA9IHIsIGVbaSA+PiAyXSA9IGVbbyA+PiAyXSwgZVtpICsgNCA+PiAyXSA9IGVbbyArIDQgPj4gMl0sIGVbaSArIDggPj4gMl0gPSBlW28gKyA4ID4+IDJdLCBlW2kgKyAxMiA+PiAyXSA9IGVbbyArIDEyID4+IDJdLCBhID0gYXIoaSwgbik7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA8IDApIHsKICAgICAgICAgICAgICAgICAgZVtsID4+IDJdID0gciwgUShuLCAxLCAyMzk1NywgbCksIGEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGEgPSBlW28gKyA4ID4+IDJdLCBhID4+PiAwIDwgciA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBlW2wgKyAyMCA+PiAyXSA9IGEsIGVbbCArIDE2ID4+IDJdID0gciwgUShuLCAxLCAyNDQyNSwgbCArIDE2IHwgMCksIGEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYSA9IGVbbyA+PiAyXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDAgPiByID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZVtsICsgMTk2ID4+IDJdID0gYSwgZVtsICsgMTkyID4+IDJdID0gciwgUShuLCAyLCAyNDc3NywgbCArIDE5MiB8IDApLCBlW0EgKyAyOCA+PiAyXSA9IDAsIHIgPSBlW28gPj4gMl07CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW0EgKyAyOCA+PiAyXSA9IChyIC0gZVtBICsgODQgPj4gMl0gPj4+IDApIC8gZFtBICsgOTIgPj4gMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtpID4+IDJdID0gciwgKGYgfCAwKSA8IDApIHsKICAgICAgICAgICAgICAgICAgZVtsICsgMzIgPj4gMl0gPSBmLCBRKG4sIDEsIDIzODkzLCBsICsgMzIgfCAwKSwgYSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAociA9IGVbbyArIDEyID4+IDJdLCByID4+PiAwIDwgZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBlW2wgKyA1MiA+PiAyXSA9IHIsIGVbbCArIDQ4ID4+IDJdID0gZiwgUShuLCAxLCAyNDI1MiwgbCArIDQ4IHwgMCksIGEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgciA9IGVbbyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwID4gZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgIGVbbCArIDE4MCA+PiAyXSA9IHIsIGVbbCArIDE3NiA+PiAyXSA9IGYsIFEobiwgMiwgMjQ2MDIsIGwgKyAxNzYgfCAwKSwgZVtBICsgMzIgPj4gMl0gPSAwLCBmID0gZVtvICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbQSArIDMyID4+IDJdID0gKGYgLSBlW0EgKyA4OCA+PiAyXSA+Pj4gMCkgLyBkW0EgKyA5NiA+PiAyXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlW2kgKyA0ID4+IDJdID0gZiwgYSA9IDAsIChrIHwgMCkgPD0gMCkgewogICAgICAgICAgICAgICAgICBlW2wgKyA2NCA+PiAyXSA9IGssIFEobiwgMSwgMjM4MjcsIGwgLSAtNjQgfCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyID0gZVtvID4+IDJdLCByID4+PiAwID4gayA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBlW2wgKyA4NCA+PiAyXSA9IHIsIGVbbCArIDgwID4+IDJdID0gaywgUShuLCAxLCAyNDY4OCwgbCArIDgwIHwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByID0gZVtvICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPCBrID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZVtsICsgMTY0ID4+IDJdID0gciwgZVtsICsgMTYwID4+IDJdID0gaywgUShuLCAyLCAyNDMzNywgbCArIDE2MCB8IDApLCBlW0EgKyAzNiA+PiAyXSA9IGVbQSArIDEwNCA+PiAyXSwgayA9IGVbbyArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByID0gZVtBICsgOTIgPj4gMl0sIHUgPSBrIC0gZVtBICsgODQgPj4gMl0gfCAwLCBnID0gdSwgZiA9IHIgKyB1IHwgMCwgaCA9IHIgPj4gMzEsIHUgPSBoICsgKHUgPj4gMzEpIHwgMCwgdSA9IGYgPj4+IDAgPCBnID4+PiAwID8gdSArIDEgfCAwIDogdSwgYyA9IEEsIHYgPSB6MChmIC0gMSB8IDAsIHUgLSAhZiB8IDAsIHIsIGgpLCBlW2MgKyAzNiA+PiAyXSA9IHY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtpICsgOCA+PiAyXSA9IGssICh0IHwgMCkgPD0gMCkgewogICAgICAgICAgICAgICAgICBlW2wgKyA5NiA+PiAyXSA9IHQsIFEobiwgMSwgMjM3NjAsIGwgKyA5NiB8IDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHIgPSBlW28gKyA0ID4+IDJdLCByID4+PiAwID4gdCA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBlW2wgKyAxMTYgPj4gMl0gPSByLCBlW2wgKyAxMTIgPj4gMl0gPSB0LCBRKG4sIDEsIDI0NTEyLCBsICsgMTEyIHwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByID0gZVtvICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDwgdCA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgIGVbbCArIDE0OCA+PiAyXSA9IHIsIGVbbCArIDE0NCA+PiAyXSA9IHQsIFEobiwgMiwgMjQxNjMsIGwgKyAxNDQgfCAwKSwgZVtBICsgNDAgPj4gMl0gPSBlW0EgKyAxMDggPj4gMl0sIHQgPSBlW28gKyAxMiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHIgPSBlW0EgKyA5NiA+PiAyXSwgayA9IHQgLSBlW0EgKyA4OCA+PiAyXSB8IDAsIG8gPSBrLCBmID0gciArIG8gfCAwLCB1ID0gciA+PiAzMSwgayA9IHUgKyAobyA+PiAzMSkgfCAwLCBrID0gZiA+Pj4gMCA8IG8gPj4+IDAgPyBrICsgMSB8IDAgOiBrLCBjID0gQSwgdiA9IHowKGYgLSAxIHwgMCwgayAtICFmIHwgMCwgciwgdSksIGVbYyArIDQwID4+IDJdID0gdjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlW2kgKyAxMiA+PiAyXSA9IHQsIEZbQSArIDY4IHwgMF0gPSBJW0EgKyA2OCB8IDBdIHwgMiwgIWFyKGksIG4pKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgQSA9IGVbaSA+PiAyXSwgciA9IGVbaSArIDQgPj4gMl0sIGYgPSBlW2kgKyAxMiA+PiAyXSwgZVtsICsgMTM2ID4+IDJdID0gZVtpICsgOCA+PiAyXSwgZVtsICsgMTQwID4+IDJdID0gZiwgZVtsICsgMTI4ID4+IDJdID0gQSwgZVtsICsgMTMyID4+IDJdID0gciwgUShuLCA0LCAxNzIyMSwgbCArIDEyOCB8IDApLCBhID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBsICsgMjA4IHwgMCwgYSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdHIoQSwgaSwgciwgZiwgaywgdCwgbiwgbCwgYSwgdSwgbywgZykgewogICAgICAgICAgICAgIHZhciBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMCwgRCA9IDAsIFUgPSAwLCBQID0gMCwgeCA9IDAsIHogPSAwLCBqID0gMCwgTyA9IDAsIHEgPSAwLCBmMiA9IDAsIG4yID0gMCwgZzIgPSAwLCB3MiA9IDA7CiAgICAgICAgICAgICAgaWYgKEggPSBlWyhlW2kgKyA3NiA+PiAyXSArIFoociwgNTY0NCkgfCAwKSArIDU1ODQgPj4gMl0sIEogPSBlW0EgKyAyNCA+PiAyXSwgcyA9IGVbaSArIDI0ID4+IDJdLCBoID0gKHIgPj4+IDApIC8gKHMgPj4+IDApIHwgMCwgciA9IGVbaSArIDQgPj4gMl0gKyBaKGVbaSArIDEyID4+IDJdLCByIC0gWihoLCBzKSB8IDApIHwgMCwgcyA9IGVbQSA+PiAyXSwgZVtmID4+IDJdID0gciA+Pj4gMCA+IHMgPj4+IDAgPyByIDogcywgcyA9IHIgKyBlW2kgKyAxMiA+PiAyXSB8IDAsIHIgPSByID4+PiAwID4gcyA+Pj4gMCA/IC0xIDogcywgcyA9IGVbQSArIDggPj4gMl0sIGVbayA+PiAyXSA9IHIgPj4+IDAgPCBzID4+PiAwID8gciA6IHMsIHIgPSBlW2kgKyA4ID4+IDJdICsgWihoLCBlW2kgKyAxNiA+PiAyXSkgfCAwLCBoID0gZVtBICsgNCA+PiAyXSwgZVt0ID4+IDJdID0gciA+Pj4gMCA+IGggPj4+IDAgPyByIDogaCwgaSA9IHIgKyBlW2kgKyAxNiA+PiAyXSB8IDAsIGkgPSBpID4+PiAwIDwgciA+Pj4gMCA/IC0xIDogaSwgciA9IGVbQSArIDEyID4+IDJdLCBlW24gPj4gMl0gPSBpID4+PiAwIDwgciA+Pj4gMCA/IGkgOiByLCBlW3UgPj4gMl0gPSAwLCBlW28gPj4gMl0gPSAwLCBlW2wgPj4gMl0gPSAyMTQ3NDgzNjQ3LCBlW2EgPj4gMl0gPSAyMTQ3NDgzNjQ3LCBlW0EgKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICBpZiAoaSA9IGcgPyBlWyh6IDw8IDIpICsgZyA+PiAyXSA6IDAsIGggPSBlW0ogKyA0ID4+IDJdLCBDID0gaCAtIDEgfCAwLCB2ID0gZVtuID4+IDJdLCBzID0gQyArIHYgfCAwLCB5ID0gMCAtICFoIHwgMCwgciA9IHksIHYgPSBuMChzLCBzID4+PiAwIDwgdiA+Pj4gMCA/IHIgKyAxIHwgMCA6IHIsIGgsIDApLCBzID0gZVtKID4+IDJdLCBFID0gcyAtIDEgfCAwLCBCID0gZVtrID4+IDJdLCByID0gRSArIEIgfCAwLCBEID0gMCAtICFzIHwgMCwgdyA9IEQsIEIgPSBuMChyLCByID4+PiAwIDwgQiA+Pj4gMCA/IHcgKyAxIHwgMCA6IHcsIHMsIDApLCByID0geSwgdyA9IGVbdCA+PiAyXSwgQyA9IHcgKyBDIHwgMCwgQyA9IG4wKEMsIHcgPj4+IDAgPiBDID4+PiAwID8gciArIDEgfCAwIDogciwgaCwgMCksIGggPSBELCB5ID0gZVtmID4+IDJdLCByID0geSArIEUgfCAwLCBoID0gbjAociwgciA+Pj4gMCA8IHkgPj4+IDAgPyBoICsgMSB8IDAgOiBoLCBzLCAwKSwgciA9IGVbSCArIDQgPj4gMl0sIHIgPj4+IDAgPiBkW28gPj4gMl0gJiYgKGVbbyA+PiAyXSA9IHIsIHIgPSBlW0ggKyA0ID4+IDJdKSwgcikKICAgICAgICAgICAgICAgICAgICBmb3IgKE8gPSBIICsgOTQ0IHwgMCwgcSA9IEggKyA4MTIgfCAwLCB5ID0gdiAtIDEgfCAwLCBmMiA9IDAgLSAhdiB8IDAsIEUgPSBCIC0gMSB8IDAsIG4yID0gMCAtICFCIHwgMCwgRCA9IEMgLSAxIHwgMCwgZzIgPSAwIC0gIUMgfCAwLCBDID0gaCAtIDEgfCAwLCB3MiA9IDAgLSAhaCB8IDAsIFAgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgaCA9IFAgPDwgMiwgcyA9IGVbaCArIE8gPj4gMl0sIHYgPSBlW2ggKyBxID4+IDJdLCBVID0gMCwgaSAmJiAoZVtpICsgNCA+PiAyXSA9IHMsIGVbaSA+PiAyXSA9IHYsIFUgPSBpICsgOCB8IDApLCByID0gciAtIDEgfCAwLCBpID0gdiArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA+IDMxIHx8IChoID0gZVtKID4+IDJdLCBoID4+PiAwID4gLTEgPj4+IGkgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIEIgPSBlW2wgPj4gMl0sIGkgPSBoIDw8IGksIGVbbCA+PiAyXSA9IGkgPj4+IDAgPiBCID4+PiAwID8gQiA6IGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpID0gciArIHMgfCAwOwogICAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA+IDMxIHx8IChoID0gZVtKICsgNCA+PiAyXSwgaCA+Pj4gMCA+IC0xID4+PiBpID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBCID0gZVthID4+IDJdLCBpID0gaCA8PCBpLCBlW2EgPj4gMl0gPSBpID4+PiAwID4gQiA+Pj4gMCA/IEIgOiBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAwLCBCID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IChoID0gMSA8PCBCLCB3ID0gMCkgOiAodyA9IDEgPDwgQiwgaCA9IHcgLSAxICYgMSA+Pj4gMzIgLSBCKSwgeCA9IHcsIHcgPSB5ICsgeCB8IDAsIEIgPSBoLCBoID0gZjIgKyBoIHwgMCwgaCA9IHcgPj4+IDAgPCB5ID4+PiAwID8gaCArIDEgfCAwIDogaCwgbSA9IDAsIGMgPSB3LCB3ID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IHAgPSBoID4+PiB3IHwgMCA6IHAgPSAoKDEgPDwgdykgLSAxICYgaCkgPDwgMzIgLSB3IHwgYyA+Pj4gdywgdyA9IHMgJiAzMSwgKHMgJiA2MykgPj4+IDAgPj0gMzIgPyAoaCA9IDEgPDwgdywgYyA9IDApIDogKGMgPSAxIDw8IHcsIGggPSBjIC0gMSAmIDEgPj4+IDMyIC0gdyksIGogPSBjLCBjID0gcCArIGogfCAwLCB3ID0gaCArIG0gfCAwLCB3ID0gKGMgPj4+IDAgPCBqID4+PiAwID8gdyArIDEgfCAwIDogdykgLSAhYyB8IDAsIGMgPSBjIC0gMSB8IDAsIGggPSBzICYgMzEsIChzICYgNjMpID4+PiAwID49IDMyID8gdyA9IHcgPj4+IGggfCAwIDogdyA9ICgoMSA8PCBoKSAtIDEgJiB3KSA8PCAzMiAtIGggfCBjID4+PiBoLCBoID0gQiArIGcyIHwgMCwgYyA9IEQgKyB4IHwgMCwgaCA9IGMgPj4+IDAgPCBEID4+PiAwID8gaCArIDEgfCAwIDogaCwgbSA9IHcsIHcgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gaCA9IGggPj4+IHcgfCAwIDogaCA9ICgoMSA8PCB3KSAtIDEgJiBoKSA8PCAzMiAtIHcgfCBjID4+PiB3LCBjID0gKGggfCAwKSAhPSAocCB8IDApID8gbSAtIChoID4+PiBzIHwgMCkgJiAtMSA+Pj4gcyA6IDAsIGggPSBCICsgbjIgfCAwLCBzID0gRSArIHggfCAwLCBoID0gcyA+Pj4gMCA8IEUgPj4+IDAgPyBoICsgMSB8IDAgOiBoLCB3ID0gMCwgbSA9IHMsIHMgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gbSA9IGggPj4+IHMgfCAwIDogbSA9ICgoMSA8PCBzKSAtIDEgJiBoKSA8PCAzMiAtIHMgfCBtID4+PiBzLCBzID0gdiAmIDMxLCAodiAmIDYzKSA+Pj4gMCA+PSAzMiA/IChoID0gMSA8PCBzLCBwID0gMCkgOiAocCA9IDEgPDwgcywgaCA9IHAgLSAxICYgMSA+Pj4gMzIgLSBzKSwgcyA9IG0gKyBwIHwgMCwgdyA9IGggKyB3IHwgMCwgaCA9IHMgLSAxIHwgMCwgcyA9IChzID4+PiAwIDwgcCA+Pj4gMCA/IHcgKyAxIHwgMCA6IHcpIC0gIXMgfCAwLCB3ID0gaCwgaCA9IHYgJiAzMSwgKHYgJiA2MykgPj4+IDAgPj0gMzIgPyBzID0gcyA+Pj4gaCB8IDAgOiBzID0gKCgxIDw8IGgpIC0gMSAmIHMpIDw8IDMyIC0gaCB8IHcgPj4+IGgsIGggPSBCICsgdzIgfCAwLCBCID0gQyArIHggfCAwLCBoID0gQiA+Pj4gMCA8IEMgPj4+IDAgPyBoICsgMSB8IDAgOiBoLCB3ID0gcywgcyA9IHIgJiAzMSwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyBoID0gaCA+Pj4gcyB8IDAgOiBoID0gKCgxIDw8IHMpIC0gMSAmIGgpIDw8IDMyIC0gcyB8IEIgPj4+IHMsIGggPSAoaCB8IDApICE9IChtIHwgMCkgPyB3IC0gKGggPj4+IHYgfCAwKSAmIC0xID4+PiB2IDogMCwgVSAmJiAoZVtVICsgNCA+PiAyXSA9IGMsIGVbVSA+PiAyXSA9IGgsIGkgPSBVICsgOCB8IDApLCBoID0gWihoLCBjKSwgaCA+Pj4gMCA+IGRbdSA+PiAyXSAmJiAoZVt1ID4+IDJdID0gaCksIFAgPSBQICsgMSB8IDAsICEoUCA+Pj4gMCA8IGRbSCArIDQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChKID0gSiArIDUyIHwgMCwgSCA9IEggKyAxMDgwIHwgMCwgeiA9IHogKyAxIHwgMCwgISh6ID4+PiAwIDwgZFtBICsgMTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHJrKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDA7CiAgICAgICAgICAgICAgayA9IFggLSAxMTIgfCAwLCBYID0gaywgZVtrICsgMTA0ID4+IDJdID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSAhPSA4KSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjU5NiwgMCksIFEoZiwgMSwgNjU5NiwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaDIoaSwgQSArIDIwNCB8IDAsIDIpLCBoMihpICsgMiB8IDAsIGsgKyAxMDggfCAwLCA0KSwgaDIoaSArIDYgfCAwLCBrICsgMTAwIHwgMCwgMSksIGgyKGkgKyA3IHwgMCwgayArIDEwNCB8IDAsIDEpLCByID0gZVtBICsgMjA0ID4+IDJdLCBhID0gZVtBICsgMTA0ID4+IDJdLCByID4+PiAwID49IFooYSwgZVtBICsgMTA4ID4+IDJdKSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBlW2sgKyA5NiA+PiAyXSA9IHIsIFEoZiwgMSwgMTc0NTQsIGsgKyA5NiB8IDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbiA9IGVbQSArIDE1NiA+PiAyXSArIFoociwgNTY0NCkgfCAwLCBsID0gKHIgPj4+IDApIC8gKGEgPj4+IDApIHwgMCwgaSA9IGVbayArIDEwMCA+PiAyXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW0EgKyA0NCA+PiAyXSwgKHQgfCAwKSA+PSAwICYgKHIgfCAwKSAhPSAodCB8IDApIHx8ICh0ID0gZVtuICsgNTU4OCA+PiAyXSArIDEgfCAwLCAodCB8IDApID09IChpIHwgMCkpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGVbayArIDg4ID4+IDJdID0gdCwgZVtrICsgODQgPj4gMl0gPSBpLCBlW2sgKyA4MCA+PiAyXSA9IHIsIFEoZiwgMSwgMTc0NzgsIGsgKyA4MCB8IDApLCBuID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVbbiArIDU1ODggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2sgKyAxMDggPj4gMl0sIGkgLSAxID4+PiAwIDw9IDEyKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSAhPSAxMikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGVbayArIDQ4ID4+IDJdID0gMTIsIFEoZiwgMiwgMjMwMDEsIGsgKyA0OCB8IDApLCBpID0gZVtrICsgMTA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpIHx8IChRKGYsIDQsIDIxMjk3LCAwKSwgZVtBICsgNTYgPj4gMl0gPSAxKTsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbbiArIDU1OTIgPj4gMl0sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxMDAgPj4gMl0sIHQgPj4+IDAgPCBpID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDM2ID4+IDJdID0gaSwgZVtrICsgMzIgPj4gMl0gPSB0LCBRKGYsIDEsIDg2NTEsIGsgKyAzMiB8IDApLCBlW0EgKyA1NiA+PiAyXSA9IDEsIG4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW2sgKyAxMDQgPj4gMl0sIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDEwNCA+PiAyXSwgIXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gKElbQSArIDY4IHwgMF0gPj4+IDQgJiAxKSArIHQgfCAwLCBlW2sgKyAxMDQgPj4gMl0gPSBpLCB0ID0gZVtrICsgMTAwID4+IDJdLCB1ID0gZVtuICsgNTU5MiA+PiAyXSwgdCA+Pj4gMCA+IHUgLSAxID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgNCA+PiAyXSA9IHUsIGVbayA+PiAyXSA9IHQsIFEoZiwgMSwgODU1MiwgayksIGVbQSArIDU2ID4+IDJdID0gMSwgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSB0ID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMjAgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IHQsIFEoZiwgMSwgODc1MSwgayArIDE2IHwgMCksIGVbQSArIDU2ID4+IDJdID0gMSwgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW24gKyA1NTkyID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICgoZVtrICsgMTAwID4+IDJdICsgMSB8IDApICE9IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBGW0EgKyA2OCB8IDBdID0gSVtBICsgNjggfCAwXSB8IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGkgPSBlW2sgKyAxMDggPj4gMl0sIGVbQSArIDggPj4gMl0gPSAxNiwgZVtBICsgMjQgPj4gMl0gPSBlW0EgKyA1NiA+PiAyXSA/IDAgOiBpIC0gMTIgfCAwLCBpID0gZVtBICsgNDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDQsIGkgPSByIC0gWihsLCBhKSB8IDAsIGkgPj4+IDAgPCBkW0EgKyAyOCA+PiAyXSB8IGkgPj4+IDAgPj0gZFtBICsgMzYgPj4gMl0gfCBsID4+PiAwIDwgZFtBICsgMzIgPj4gMl0gfHwgKG4gPSAobCA+Pj4gMCA+PSBkW0EgKyA0MCA+PiAyXSkgPDwgMiksIEZbQSArIDY4IHwgMF0gPSBJW0EgKyA2OCB8IDBdICYgMjUxIHwgbjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIEZbQSArIDY4IHwgMF0gPSBJW0EgKyA2OCB8IDBdICYgMjUxIHwgKChpIHwgMCkgIT0gZVtBICsgMjA0ID4+IDJdKSA8PCAyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobiA9IDEsIGkgPSBlW0EgKyAyMDAgPj4gMl0sICFpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbaSArIDQwID4+IDJdLCByID0gZVtBICsgMjA0ID4+IDJdLCBsID0gdCArIFoociwgNDApIHwgMCwgZVtsID4+IDJdID0gciwgYSA9IGVbayArIDEwMCA+PiAyXSwgZVtsICsgMTIgPj4gMl0gPSBhLCBpID0gZVtrICsgMTA0ID4+IDJdLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtsICsgNCA+PiAyXSA9IGksIGkgPSBlW2sgKyAxMDQgPj4gMl0sIGVbbCArIDggPj4gMl0gPSBpLCByID0gZVtsICsgMTYgPj4gMl0sICFyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gRTIoaSwgMjQpLCBlWyhlW2VbQSArIDIwMCA+PiAyXSArIDQwID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDQwKSB8IDApICsgMTYgPj4gMl0gPSBpLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwLCBRKGYsIDEsIDE2NDkzLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gbzAociwgWihpLCAyNCkpLCByID0gZVtlW0EgKyAyMDAgPj4gMl0gKyA0MCA+PiAyXSArIFooZVtBICsgMjA0ID4+IDJdLCA0MCkgfCAwLCAhaSkgewogICAgICAgICAgICAgICAgICAgICAgICBSKGVbciArIDE2ID4+IDJdKSwgbiA9IDAsIGVbKGVbZVtBICsgMjAwID4+IDJdICsgNDAgPj4gMl0gKyBaKGVbQSArIDIwNCA+PiAyXSwgNDApIHwgMCkgKyAxNiA+PiAyXSA9IDAsIFEoZiwgMSwgMTY0OTMsIDApOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZVtyICsgMTYgPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2wgKyAxNiA+PiAyXSwgIWkpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2wgKyA4ID4+IDJdID0gMTAsIGkgPSBFMigxMCwgMjQpLCB0ID0gZVtlW0EgKyAyMDAgPj4gMl0gKyA0MCA+PiAyXSwgciA9IGVbQSArIDIwNCA+PiAyXSwgbCA9IHQgKyBaKHIsIDQwKSB8IDAsIGVbbCArIDE2ID4+IDJdID0gaSwgIWkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBhID0gZVtrICsgMTAwID4+IDJdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAociA9IFoociwgNDApICsgdCB8IDAsIGRbciArIDggPj4gMl0gPiBhID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHIsIHIgPSBhICsgMSB8IDAsIGVbdCArIDggPj4gMl0gPSByLCBpID0gbzAoaSwgWihyLCAyNCkpLCByID0gZVtlW0EgKyAyMDAgPj4gMl0gKyA0MCA+PiAyXSArIFooZVtBICsgMjA0ID4+IDJdLCA0MCkgfCAwLCAhaSkgewogICAgICAgICAgICAgICAgICAgICAgUihlW3IgKyAxNiA+PiAyXSksIG4gPSAwLCBBID0gZVtlW0EgKyAyMDAgPj4gMl0gKyA0MCA+PiAyXSArIFooZVtBICsgMjA0ID4+IDJdLCA0MCkgfCAwLCBlW0EgKyA4ID4+IDJdID0gMCwgZVtBICsgMTYgPj4gMl0gPSAwLCBRKGYsIDEsIDE2NDkzLCAwKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVbciArIDE2ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbayArIDY0ID4+IDJdID0gaSwgUShmLCAxLCAyMzI3MCwgayAtIC02NCB8IDApLCBuID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4gPSAwLCBlW2wgKyA4ID4+IDJdID0gMCwgUShmLCAxLCAxNjQ5MywgMCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gayArIDExMiB8IDAsIG4gfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEg0KEEsIGksIHIsIGYsIGssIHQsIG4pIHsKICAgICAgICAgICAgICB2YXIgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAocyA9IFooaywgMyksIGwgPSBlW2kgPj4gMl0gPj4+IHMgfCAwLCBsICYgMjA5NzE2OCB8fCAobCA9IGwgJiA0OTUsICFsKSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIHcgPSBBICsgMjggfCAwLCBnID0gdyArIChJW2wgKyBlW0EgKyAxMDggPj4gMl0gfCAwXSA8PCAyKSB8IDAsIGVbQSArIDEwNCA+PiAyXSA9IGcsIG8gPSBlW2cgPj4gMl0sIGEgPSBlW28gPj4gMl0sIGwgPSBlW0EgKyA0ID4+IDJdIC0gYSB8IDAsIGVbQSArIDQgPj4gMl0gPSBsLCB1ID0gZVtBID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAodSA+Pj4gMTYgPj4+IDAgPCBhID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gZVtvICsgNCA+PiAyXSwgZVtBICsgNCA+PiAyXSA9IGEsIGwgPSBsID4+PiAwIDwgYSA+Pj4gMCwgZVtnID4+IDJdID0gZVtvICsgKGwgPyA4IDogMTIpID4+IDJdLCBvID0gbCA/IGggOiAhaCwgbCA9IGVbQSArIDggPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gZVtBICsgMTYgPj4gMl0sIGggPSBsICsgMSB8IDAsIGcgPSBJW2wgKyAxIHwgMF0sIElbbCB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTIgPj4gMl0gPSBlW0EgKyAxMiA+PiAyXSArIDEsIHUgPSB1ICsgNjUyODAgfCAwLCBsID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gaCwgdSA9IChnIDw8IDkpICsgdSB8IDAsIGwgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSBoLCBsID0gOCwgdSA9IChnIDw8IDgpICsgdSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgZVtBICsgOCA+PiAyXSA9IGwsIHUgPSB1IDw8IDEsIGVbQSA+PiAyXSA9IHUsIGEgPSBhIDw8IDEsIGVbQSArIDQgPj4gMl0gPSBhLCAhKGEgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsID0gYTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICh1ID0gdSAtIChhIDw8IDE2KSB8IDAsIGVbQSA+PiAyXSA9IHUsICEobCAmIDMyNzY4KSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoaCA9IGVbbyArIDQgPj4gMl0sIGEgPSBsID4+PiAwIDwgYSA+Pj4gMCwgZVtnID4+IDJdID0gZVtvICsgKGEgPyAxMiA6IDgpID4+IDJdLCBvID0gYSA/ICFoIDogaCwgYSA9IGVbQSArIDggPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtBICsgMTYgPj4gMl0sIGggPSBhICsgMSB8IDAsIGcgPSBJW2EgKyAxIHwgMF0sIElbYSB8IDBdID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTIgPj4gMl0gPSBlW0EgKyAxMiA+PiAyXSArIDEsIHUgPSB1ICsgNjUyODAgfCAwLCBhID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gaCwgdSA9IChnIDw8IDkpICsgdSB8IDAsIGEgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSBoLCBhID0gOCwgdSA9IChnIDw8IDgpICsgdSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGEgLSAxIHwgMCwgZVtBICsgOCA+PiAyXSA9IGEsIHUgPSB1IDw8IDEsIGVbQSA+PiAyXSA9IHUsIGwgPSBsIDw8IDEsIGVbQSArIDQgPj4gMl0gPSBsLCAhKGwgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIG8gPSBlW28gKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIW8pCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgQiA9IGkgLSA0IHwgMCwgYSA9IGVbaSA+PiAyXSwgbyA9IGVbaSArIDQgPj4gMl0gPj4+IHMgKyAxNyAmIDQgfCAoZVtCID4+IDJdID4+PiBzICsgMTkgJiAxIHwgKGEgPj4+IHMgKyAxNiAmIDY0IHwgYSA+Pj4gcyAmIDE3MCB8IGEgPj4+IChrID8gcyArIDEyIHwgMCA6IDE0KSAmIDE2KSksIGggPSB3ICsgKElbbyArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBlW0EgKyAxMDQgPj4gMl0gPSBoLCBnID0gZVtoID4+IDJdLCBhID0gZVtnID4+IDJdLCBsID0gbCAtIGEgfCAwLCBlW0EgKyA0ID4+IDJdID0gbCwgdyA9IElbbyArIDM5Nzc2IHwgMF07CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAodSA+Pj4gMTYgPj4+IDAgPCBhID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBlW2cgKyA0ID4+IDJdLCBlW0EgKyA0ID4+IDJdID0gYSwgbCA9IGwgPj4+IDAgPCBhID4+PiAwLCBlW2ggPj4gMl0gPSBlW2cgKyAobCA/IDggOiAxMikgPj4gMl0sIGcgPSBsID8gbyA6ICFvLCBsID0gZVtBICsgOCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGVbQSArIDE2ID4+IDJdLCBoID0gbCArIDEgfCAwLCBvID0gSVtsICsgMSB8IDBdLCBJW2wgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID4+PiAwID49IDE0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxMiA+PiAyXSA9IGVbQSArIDEyID4+IDJdICsgMSwgdSA9IHUgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSBoLCB1ID0gKG8gPDwgOSkgKyB1IHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxNiA+PiAyXSA9IGgsIGwgPSA4LCB1ID0gKG8gPDwgOCkgKyB1IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAxIHwgMCwgZVtBICsgOCA+PiAyXSA9IGwsIHUgPSB1IDw8IDEsIGVbQSA+PiAyXSA9IHUsIGEgPSBhIDw8IDEsIGVbQSArIDQgPj4gMl0gPSBhLCAhKGEgPj4+IDAgPCAzMjc2OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobyA9IHUgLSAoYSA8PCAxNikgfCAwLCBlW0EgPj4gMl0gPSBvLCAhKGwgJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IGVbZyArIDQgPj4gMl0sIGEgPSBsID4+PiAwIDwgYSA+Pj4gMCwgZVtoID4+IDJdID0gZVtnICsgKGEgPyAxMiA6IDgpID4+IDJdLCBnID0gYSA/ICF1IDogdSwgdSA9IGVbQSArIDggPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW0EgKyAxNiA+PiAyXSwgaCA9IHUgKyAxIHwgMCwgYSA9IElbdSArIDEgfCAwXSwgSVt1IHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTIgPj4gMl0gPSBlW0EgKyAxMiA+PiAyXSArIDEsIG8gPSBvICsgNjUyODAgfCAwLCB1ID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gaCwgbyA9IChhIDw8IDkpICsgbyB8IDAsIHUgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSBoLCB1ID0gOCwgbyA9IChhIDw8IDgpICsgbyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSB1IC0gMSB8IDAsIGVbQSArIDggPj4gMl0gPSB1LCBvID0gbyA8PCAxLCBlW0EgPj4gMl0gPSBvLCBsID0gbCA8PCAxLCBlW0EgKyA0ID4+IDJdID0gbCwgIShsID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZyA9IGVbZyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGVbciA+PiAyXSA9IChnIHwgMCkgPT0gKHcgfCAwKSA/IGYgOiAwIC0gZiB8IDAsIGVbQiA+PiAyXSA9IGVbQiA+PiAyXSB8IDMyIDw8IHMsIHIgPSBnIF4gdywgZVtpID4+IDJdID0gZVtpID4+IDJdIHwgKHIgPDwgMTkgfCAxNikgPDwgcywgZVtpICsgNCA+PiAyXSA9IGVbaSArIDQgPj4gMl0gfCA4IDw8IHMsIGsgfCBuIHx8IChBID0gaSAtICh0IDw8IDIpIHwgMCwgZVtBICsgNCA+PiAyXSA9IGVbQSArIDQgPj4gMl0gfCAzMjc2OCwgZVtBID4+IDJdID0gZVtBID4+IDJdIHwgciA8PCAzMSB8IDY1NTM2LCBBID0gQSAtIDQgfCAwLCBlW0EgPj4gMl0gPSBlW0EgPj4gMl0gfCAxMzEwNzIpLCAoayB8IDApICE9IDMpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgQSA9ICh0IDw8IDIpICsgaSB8IDAsIGVbQSArIDQgPj4gMl0gPSBlW0EgKyA0ID4+IDJdIHwgMSwgZVtBID4+IDJdID0gZVtBID4+IDJdIHwgciA8PCAxOCB8IDIsIEEgPSBBIC0gNCB8IDAsIGVbQSA+PiAyXSA9IGVbQSA+PiAyXSB8IDQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gfCAyMDk3MTUyIDw8IHM7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFg0KEEsIGksIHIsIGYsIGssIHQpIHsKICAgICAgICAgICAgICB2YXIgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoaCA9IFooaywgMyksIG4gPSBlW2kgPj4gMl0gPj4+IGggfCAwLCBuICYgMjA5NzE2OCkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIHMgPSBBICsgMjggfCAwLCBvID0gcyArIChJW2VbQSArIDEwOCA+PiAyXSArIChuICYgNDk1KSB8IDBdIDw8IDIpIHwgMCwgZVtBICsgMTA0ID4+IDJdID0gbywgdSA9IGVbbyA+PiAyXSwgbCA9IGVbdSA+PiAyXSwgbiA9IGVbQSArIDQgPj4gMl0gLSBsIHwgMCwgZVtBICsgNCA+PiAyXSA9IG4sIGEgPSBlW0EgPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChhID4+PiAxNiA+Pj4gMCA8IGwgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBlW3UgKyA0ID4+IDJdLCBlW0EgKyA0ID4+IDJdID0gbCwgbiA9IG4gPj4+IDAgPCBsID4+PiAwLCBlW28gPj4gMl0gPSBlW3UgKyAobiA/IDggOiAxMikgPj4gMl0sIHUgPSBuID8gZyA6ICFnLCBuID0gZVtBICsgOCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW0EgKyAxNiA+PiAyXSwgZyA9IG4gKyAxIHwgMCwgbyA9IElbbiArIDEgfCAwXSwgSVtuIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxMiA+PiAyXSA9IGVbQSArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIG4gPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSBnLCBhID0gKG8gPDwgOSkgKyBhIHwgMCwgbiA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxNiA+PiAyXSA9IGcsIG4gPSA4LCBhID0gKG8gPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gbiAtIDEgfCAwLCBlW0EgKyA4ID4+IDJdID0gbiwgYSA9IGEgPDwgMSwgZVtBID4+IDJdID0gYSwgbCA9IGwgPDwgMSwgZVtBICsgNCA+PiAyXSA9IGwsICEobCA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4gPSBsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gKGwgPDwgMTYpIHwgMCwgZVtBID4+IDJdID0gYSwgIShuICYgMzI3NjgpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gZVt1ICsgNCA+PiAyXSwgbCA9IG4gPj4+IDAgPCBsID4+PiAwLCBlW28gPj4gMl0gPSBlW3UgKyAobCA/IDEyIDogOCkgPj4gMl0sIHUgPSBsID8gIWcgOiBnLCBsID0gZVtBICsgOCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW0EgKyAxNiA+PiAyXSwgZyA9IGwgKyAxIHwgMCwgbyA9IElbbCArIDEgfCAwXSwgSVtsIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPj4+IDAgPj0gMTQ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxMiA+PiAyXSA9IGVbQSArIDEyID4+IDJdICsgMSwgYSA9IGEgKyA2NTI4MCB8IDAsIGwgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSBnLCBhID0gKG8gPDwgOSkgKyBhIHwgMCwgbCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxNiA+PiAyXSA9IGcsIGwgPSA4LCBhID0gKG8gPDwgOCkgKyBhIHwgMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAtIDEgfCAwLCBlW0EgKyA4ID4+IDJdID0gbCwgYSA9IGEgPDwgMSwgZVtBID4+IDJdID0gYSwgbiA9IG4gPDwgMSwgZVtBICsgNCA+PiAyXSA9IG4sICEobiA+Pj4gMCA8IDMyNzY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgdSA9IGVbdSArIDQgPj4gMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXUpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB1ID0gcywgcyA9IGkgLSA0IHwgMCwgbCA9IGVbaSA+PiAyXSwgdyA9IGVbaSArIDQgPj4gMl0gPj4+IGggKyAxNyAmIDQgfCAoZVtzID4+IDJdID4+PiBoICsgMTkgJiAxIHwgKGwgPj4+IGggKyAxNiAmIDY0IHwgbCA+Pj4gaCAmIDE3MCB8IGwgPj4+IChrID8gaCArIDEyIHwgMCA6IDE0KSAmIDE2KSksIGcgPSB1ICsgKElbdyArIDM5NTIwIHwgMF0gPDwgMikgfCAwLCBlW0EgKyAxMDQgPj4gMl0gPSBnLCBvID0gZVtnID4+IDJdLCBsID0gZVtvID4+IDJdLCBuID0gbiAtIGwgfCAwLCBlW0EgKyA0ID4+IDJdID0gbjsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDE2ID4+PiAwIDwgbCA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodSA9IGVbbyArIDQgPj4gMl0sIGVbQSArIDQgPj4gMl0gPSBsLCBuID0gbiA+Pj4gMCA8IGwgPj4+IDAsIGVbZyA+PiAyXSA9IGVbbyArIChuID8gOCA6IDEyKSA+PiAyXSwgbyA9IG4gPyB1IDogIXUsIG4gPSBlW0EgKyA4ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobikKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbQSArIDE2ID4+IDJdLCBnID0gbiArIDEgfCAwLCB1ID0gSVtuICsgMSB8IDBdLCBJW24gfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDEyID4+IDJdID0gZVtBICsgMTIgPj4gMl0gKyAxLCBhID0gYSArIDY1MjgwIHwgMCwgbiA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxNiA+PiAyXSA9IGcsIGEgPSAodSA8PCA5KSArIGEgfCAwLCBuID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gZywgbiA9IDgsIGEgPSAodSA8PCA4KSArIGEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuIC0gMSB8IDAsIGVbQSArIDggPj4gMl0gPSBuLCBhID0gYSA8PCAxLCBlW0EgPj4gMl0gPSBhLCBsID0gbCA8PCAxLCBlW0EgKyA0ID4+IDJdID0gbCwgIShsID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAodSA9IGEgLSAobCA8PCAxNikgfCAwLCBlW0EgPj4gMl0gPSB1LCAhKG4gJiAzMjc2OCkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBlW28gKyA0ID4+IDJdLCBsID0gbiA+Pj4gMCA8IGwgPj4+IDAsIGVbZyA+PiAyXSA9IGVbbyArIChsID8gMTIgOiA4KSA+PiAyXSwgbyA9IGwgPyAhYSA6IGEsIGEgPSBlW0EgKyA4ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbQSArIDE2ID4+IDJdLCBnID0gYSArIDEgfCAwLCBsID0gSVthICsgMSB8IDBdLCBJW2EgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA+PSAxNDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDEyID4+IDJdID0gZVtBICsgMTIgPj4gMl0gKyAxLCB1ID0gdSArIDY1MjgwIHwgMCwgYSA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxNiA+PiAyXSA9IGcsIHUgPSAobCA8PCA5KSArIHUgfCAwLCBhID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gZywgYSA9IDgsIHUgPSAobCA8PCA4KSArIHUgfCAwOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIC0gMSB8IDAsIGVbQSArIDggPj4gMl0gPSBhLCB1ID0gdSA8PCAxLCBlW0EgPj4gMl0gPSB1LCBuID0gbiA8PCAxLCBlW0EgKyA0ID4+IDJdID0gbiwgIShuID4+PiAwIDwgMzI3NjgpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBvID0gZVtvICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChuID0gciwgciA9IElbdyArIDM5Nzc2IHwgMF0sIGVbbiA+PiAyXSA9IChyIHwgMCkgPT0gKG8gfCAwKSA/IGYgOiAwIC0gZiB8IDAsIGVbcyA+PiAyXSA9IGVbcyA+PiAyXSB8IDMyIDw8IGgsIGYgPSByIF4gbywgZVtpID4+IDJdID0gZVtpID4+IDJdIHwgKGYgPDwgMTkgfCAxNikgPDwgaCwgZVtpICsgNCA+PiAyXSA9IGVbaSArIDQgPj4gMl0gfCA4IDw8IGgsIGsgfCB0IHx8IChyID0gKC0yIC0gZVtBICsgMTI0ID4+IDJdIDw8IDIpICsgaSB8IDAsIGVbciArIDQgPj4gMl0gPSBlW3IgKyA0ID4+IDJdIHwgMzI3NjgsIGVbciA+PiAyXSA9IGVbciA+PiAyXSB8IGYgPDwgMzEgfCA2NTUzNiwgciA9IHIgLSA0IHwgMCwgZVtyID4+IDJdID0gZVtyID4+IDJdIHwgMTMxMDcyKSwgKGsgfCAwKSAhPSAzKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgQSA9IChlW0EgKyAxMjQgPj4gMl0gPDwgMikgKyBpIHwgMCwgZVtBICsgNCA+PiAyXSA9IGVbQSArIDQgPj4gMl0gfCA0LCBlW0EgKyAxMiA+PiAyXSA9IGVbQSArIDEyID4+IDJdIHwgMSwgZVtBICsgOCA+PiAyXSA9IGVbQSArIDggPj4gMl0gfCBmIDw8IDE4IHwgMjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZmsoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDA7CiAgICAgICAgICAgICAgbiA9IFggLSAxNiB8IDAsIFggPSBuLCBlW0EgKyA4ID4+IDJdID09IDE2ID8gbCA9IGVbQSArIDE1NiA+PiAyXSArIFooZVtBICsgMjA0ID4+IDJdLCA1NjQ0KSB8IDAgOiBsID0gZVtBICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPD0gMSkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDc4OTgsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChoMihpLCBuICsgMTIgfCAwLCAyKSwgZVtuICsgMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgUShmLCAyLCA5NTc3LCAwKSwgQSA9IDE7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8PSA2KSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNzg5OCwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaDIoaSArIDIgfCAwLCBuICsgOCB8IDAsIDEpLCB1ID0gZVtsICsgNTYyOCA+PiAyXSwgQSA9IHU7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGVbbCArIDU2MzIgPj4gMl0sICFrKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gZVtuICsgOCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgPT0gZVtBID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gQSArIDIwIHwgMCwgdCA9IHQgKyAxIHwgMCwgKGsgfCAwKSA9PSAodCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgIT0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgPT0gZVtsICsgNTYzNiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgIGlmIChBID0gayArIDEwIHwgMCwgZVtsICsgNTYzNiA+PiAyXSA9IEEsIEEgPSBvMCh1LCBaKEEsIDIwKSksICFBKSB7CiAgICAgICAgICAgICAgICAgICAgICBSKGVbbCArIDU2MjggPj4gMl0pLCBlW2wgKyA1NjM2ID4+IDJdID0gMCwgZVtsICsgNTYyOCA+PiAyXSA9IDAsIGVbbCArIDU2MzIgPj4gMl0gPSAwLCBRKGYsIDEsIDc5NjMsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVbbCArIDU2MjggPj4gMl0gPSBBLCBrID0gZVtsICsgNTYzMiA+PiAyXSwgZDIoQSArIFooaywgMjApIHwgMCwgMCwgWihlW2wgKyA1NjM2ID4+IDJdIC0gayB8IDAsIDIwKSksIHUgPSBlW2wgKyA1NjI4ID4+IDJdLCBrID0gZVtsICsgNTYzMiA+PiAyXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBBID0gWihrLCAyMCkgKyB1IHwgMCwgcyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtBID4+IDJdID0gZVtuICsgOCA+PiAyXSwgaDIoaSArIDMgfCAwLCBuICsgMTIgfCAwLCAyKSwgZVtuICsgMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgUShmLCAyLCA5NTc3LCAwKSwgQSA9IDE7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaDIoaSArIDUgfCAwLCBuICsgNCB8IDAsIDIpLCB0ID0gZVtuICsgNCA+PiAyXSwgdCA+Pj4gMCA+PSAyKSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMiwgNTM5NSwgMCksIEEgPSAxOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGsgPSByIC0gNyB8IDAsIHQpCiAgICAgICAgICAgICAgICAgIGZvciAociA9IGkgKyA3IHwgMCwgdSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPD0gMikgewogICAgICAgICAgICAgICAgICAgICAgUShmLCAxLCA3ODk4LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoaDIociwgbiArIDEyIHwgMCwgMSksIGVbbiArIDEyID4+IDJdICE9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgIFEoZiwgMiwgOTA4MCwgMCksIEEgPSAxOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGgyKHIgKyAxIHwgMCwgbiwgMiksIHQgPSBlW24gPj4gMl0sIGkgPSB0ICYgMzI3NjcsIGVbQSArIDQgPj4gMl0gPSBpLCBhID0gayAtIDMgfCAwLCBrID0gKHQgPj4+IDE1IHwgMCkgKyAxIHwgMCwgbyA9IFooaywgaSkgKyAyIHwgMCwgYSA+Pj4gMCA8IG8gPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNzg5OCwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByICsgMyB8IDAsIHQgPSAwLCBpKQogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoMihyLCBuICsgMTIgfCAwLCBrKSwgZVtuICsgMTIgPj4gMl0gIT0gKHQgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIFEoZiwgMiwgMTAyMjAsIDApLCBBID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gciArIGsgfCAwLCB0ID0gdCArIDEgfCAwLCAhKHQgPj4+IDAgPCBkW0EgKyA0ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoaDIociwgbiwgMiksIGsgPSBlW24gPj4gMl0sIGkgPSBrICYgMzI3NjcsIGVbbiA+PiAyXSA9IGksIChpIHwgMCkgIT0gZVtBICsgNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgUShmLCAyLCA1NzA4LCAwKSwgQSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoayA9IChrID4+PiAxNSB8IDApICsgMSB8IDAsIGcgPSBaKGssIGkpICsgMyB8IDAsIG8gPSBhIC0gbyB8IDAsIGcgPj4+IDAgPiBvID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDc4OTgsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChyID0gciArIDIgfCAwLCB0ID0gMCwgaSkKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaDIociwgbiArIDEyIHwgMCwgayksIGVbbiArIDEyID4+IDJdICE9ICh0IHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBRKGYsIDIsIDEwMjIwLCAwKSwgQSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgKyBrIHwgMCwgdCA9IHQgKyAxIHwgMCwgISh0ID4+PiAwIDwgZFtBICsgNCA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaDIociwgbiArIDEyIHwgMCwgMyksIGsgPSBlW24gKyAxMiA+PiAyXSwgZVtBICsgOCA+PiAyXSA9IDAsIGVbQSArIDEyID4+IDJdID0gMCwgRltBICsgMTYgfCAwXSA9ICEoayAmIDY1NTM2KSB8IElbQSArIDE2IHwgMF0gJiAyNTQsIGEgPSBrICYgMjU1LCBlW24gKyA4ID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGVbbCArIDU2MjAgPj4gMl0sIGgpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbbCArIDU2MTYgPj4gMl0sIGkgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApID09IGVbdCArIDggPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0ICsgMjAgfCAwLCBpID0gaSArIDEgfCAwLCAoaCB8IDApID09IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgUShmLCAxLCA3ODk4LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBrID0gayA+Pj4gOCAmIDI1NSwgZVtuICsgOCA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgICAgaWYgKCFrKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBlW2wgKyA1NjIwID4+IDJdLCBhKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBlW2wgKyA1NjE2ID4+IDJdLCBpID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGsgfCAwKSA9PSBlW3QgKyA4ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxMiA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQgKyAyMCB8IDAsIGkgPSBpICsgMSB8IDAsIChhIHwgMCkgPT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDc4OTgsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChrID0gbyAtIGcgfCAwLCByID0gciArIDMgfCAwLCB1ID0gdSArIDEgfCAwLCAhKHUgPj4+IDAgPCBkW24gKyA0ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaykgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDc4OTgsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChBID0gMSwgIXMpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBlW2wgKyA1NjMyID4+IDJdID0gZVtsICsgNTYzMiA+PiAyXSArIDEsIEEgPSAxOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IG4gKyAxNiB8IDAsIEEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEFrKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IGVbQSArIDUyID4+IDJdLCBuID0gZVtBICsgNzIgPj4gMl0sIGsgPSBlW24gKyAxNiA+PiAyXSwgdCA9IGsgKyA2IHwgMCwgdCA+Pj4gMCA+IGRbQSArIDU2ID4+IDJdKSB7CiAgICAgICAgICAgICAgICBpZiAoZiA9IG8wKGYsIHQpLCAhZikKICAgICAgICAgICAgICAgICAgcmV0dXJuIFIoZVtBICsgNTIgPj4gMl0pLCBlW0EgKyA1MiA+PiAyXSA9IDAsIGVbQSArIDU2ID4+IDJdID0gMCwgUShyLCAxLCA3NjY0LCAwKSwgMDsKICAgICAgICAgICAgICAgIGVbQSArIDU2ID4+IDJdID0gdCwgZVtBICsgNTIgPj4gMl0gPSBmOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoazIoZiwgNjU0MDAsIDIpLCBrMihmICsgMiB8IDAsIGsgKyA0IHwgMCwgMiksIGsyKGYgKyA0IHwgMCwgZVtuICsgMTYgPj4gMl0sIDIpLCBlW24gKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgIGZvciAoayA9IGYgKyA2IHwgMCwgZiA9IGVbbiArIDI0ID4+IDJdOyBrMihrLCBlW2YgKyAyNCA+PiAyXSAtIDEgfCBlW2YgKyAzMiA+PiAyXSA8PCA3LCAxKSwgZiA9IGYgKyA1MiB8IDAsIGsgPSBrICsgMSB8IDAsIGEgPSBhICsgMSB8IDAsIGEgPj4+IDAgPCBkW24gKyAxNiA+PiAyXTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChMMChpLCBlW0EgKyA1MiA+PiAyXSwgdCwgcikgfCAwKSAhPSAodCB8IDApKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKGcgPSBlW0EgKyAxNTYgPj4gMl0gKyBaKGVbQSArIDIwNCA+PiAyXSwgNTY0NCkgfCAwLCBlW2cgKyA1NjIwID4+IDJdKQogICAgICAgICAgICAgICAgICBmb3IgKGsgPSBlW2cgKyA1NjE2ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtBICsgNTIgPj4gMl0sIHQgPSBlW2sgKyAxNiA+PiAyXSwgbiA9IHQgKyAxMCB8IDAsIG4gPj4+IDAgPiBkW0EgKyA1NiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBvMChmLCBuKSwgIWYpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSKGVbQSArIDUyID4+IDJdKSwgZVtBICsgNTIgPj4gMl0gPSAwLCBlW0EgKyA1NiA+PiAyXSA9IDAsIFEociwgMSwgNjcyOSwgMCksIDA7CiAgICAgICAgICAgICAgICAgICAgICBlW0EgKyA1NiA+PiAyXSA9IG4sIGVbQSArIDUyID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGsyKGYsIDY1Mzk2LCAyKSwgazIoZiArIDIgfCAwLCB0ICsgOCB8IDAsIDIpLCBrMihmICsgNCB8IDAsIDAsIDIpLCBrMihmICsgNiB8IDAsIElbayArIDggfCAwXSB8IGVbayArIDQgPj4gMl0gPDwgOCB8IGVbayA+PiAyXSA8PCAxMCwgMiksIGsyKGYgKyA4IHwgMCwgMCwgMiksIEYyKGYgKyAxMCB8IDAsIGVbayArIDEyID4+IDJdLCBlW2sgKyAxNiA+PiAyXSksIChMMChpLCBlW0EgKyA1MiA+PiAyXSwgbiwgcikgfCAwKSAhPSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGsgKyAyMCB8IDAsIGwgPSBsICsgMSB8IDAsICEobCA+Pj4gMCA8IGRbZyArIDU2MjAgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGVbZyArIDU2MzIgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZVtnICsgNTYyOCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVtBICsgNTIgPj4gMl0sIGYgPSBlW2wgKyA0ID4+IDJdLCB0ID0gZiA+Pj4gMCA+IDI1NSwgZiA9IGYgPDwgMSA8PCB0LCBoID0gZiArIDE5IHwgMCwgaCA+Pj4gMCA+IGRbQSArIDU2ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gbzAoaywgaCksICFrKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSKGVbQSArIDUyID4+IDJdKSwgZVtBICsgNTIgPj4gMl0gPSAwLCBlW0EgKyA1NiA+PiAyXSA9IDAsIFEociwgMSwgNzkyNCwgMCksIDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDU2ID4+IDJdID0gaCwgZVtBICsgNTIgPj4gMl0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSB0ID8gMiA6IDEsIGsyKGssIDY1Mzk3LCAyKSwgazIoayArIDIgfCAwLCBmICsgMTcgfCAwLCAyKSwgYSA9IDAsIGsyKGsgKyA0IHwgMCwgMCwgMiksIGsyKGsgKyA2IHwgMCwgZVtsID4+IDJdLCAxKSwgazIoayArIDcgfCAwLCAwLCAyKSwgazIoayArIDkgfCAwLCAxLCAyKSwgazIoayArIDExIHwgMCwgMSwgMSksIGYgPSB0IDw8IDE1LCBrMihrICsgMTIgfCAwLCBmIHwgZVtsICsgNCA+PiAyXSwgMiksIGsgPSBrICsgMTQgfCAwLCBvID0gMCwgdCA9IDAsIGVbbCArIDQgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBrMihrLCBvLCBuKSwgayA9IGsgKyBuIHwgMCwgbyA9IG8gKyAxIHwgMCwgdCA9IGVbbCArIDQgPj4gMl0sIG8gPj4+IDAgPCB0ID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGsyKGssIGYgfCB0LCAyKSwgayA9IGsgKyAyIHwgMCwgZVtsICsgNCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGsyKGssIGEsIG4pLCBrID0gayArIG4gfCAwLCBhID0gYSArIDEgfCAwLCBhID4+PiAwIDwgZFtsICsgNCA+PiAyXTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gKChJW2wgKyAxNiB8IDBdIF4gLTEpICYgMSkgPDwgMTYsIHQgPSBlW2wgKyA4ID4+IDJdLCB0ICYmIChmID0gZVt0ICsgOCA+PiAyXSB8IGYpLCB0ID0gZVtsICsgMTIgPj4gMl0sIHQgJiYgKGYgPSBlW3QgKyA4ID4+IDJdIDw8IDggfCBmKSwgazIoaywgZiwgMyksIChMMChpLCBlW0EgKyA1MiA+PiAyXSwgaCwgcikgfCAwKSAhPSAoaCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsICsgMjAgfCAwLCB1ID0gdSArIDEgfCAwLCAhKHUgPj4+IDAgPCBkW2cgKyA1NjMyID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbQSArIDUyID4+IDJdLCB0ID0gZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCwgayA9IGVbdCArIDU2MzIgPj4gMl0sIHUgPSBrICsgNSB8IDAsIHUgPj4+IDAgPiBkW0EgKyA1NiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgIGlmIChmID0gbzAoZiwgdSksICFmKSB7CiAgICAgICAgICAgICAgICAgICAgICBSKGVbQSArIDUyID4+IDJdKSwgZVtBICsgNTIgPj4gMl0gPSAwLCBlW0EgKyA1NiA+PiAyXSA9IDAsIFEociwgMSwgNjg5NSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlW0EgKyA1NiA+PiAyXSA9IHUsIGVbQSArIDUyID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoazIoZiwgNjUzOTksIDIpLCBrMihmICsgMiB8IDAsIGsgKyAzIHwgMCwgMiksIG8gPSAxLCBrMihmICsgNCB8IDAsIGVbdCArIDU2MzIgPj4gMl0sIDEpLCBlW3QgKyA1NjMyID4+IDJdKQogICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGYgKyA1IHwgMCwgayA9IGVbdCArIDU2MjggPj4gMl0sIGEgPSAwOyBrMihmLCBlW2sgPj4gMl0sIDEpLCBrID0gayArIDIwIHwgMCwgZiA9IGYgKyAxIHwgMCwgYSA9IGEgKyAxIHwgMCwgYSA+Pj4gMCA8IGRbdCArIDU2MzIgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgaWYgKChMMChpLCBlW0EgKyA1MiA+PiAyXSwgdSwgcikgfCAwKSA9PSAodSB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIG8gfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEY0KEEsIGksIHIpIHsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDA7CiAgICAgICAgICAgICAgayA9IFggLSAxNDQgfCAwLCBYID0gazsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGYgPSBlW2kgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFmKSB7CiAgICAgICAgICAgICAgICAgICAgICBuID0gZVtpICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0ID0gZVtBICsgMTYgPj4gMl0sIGEgPSBHMltmICsgNCA+PiAxXSwgbiA9IGVbaSArIDEyID4+IDJdLCAhbiB8ICFlW24gKyAxMiA+PiAyXSB8fCAodCA9IElbbiArIDE4IHwgMF0pOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGVbZiA+PiAyXSwgaSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBmICsgWihpLCA2KSB8IDAsIHUgPSBHMltsID4+IDFdLCB1ID4+PiAwID49IHQgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDEzMiA+PiAyXSA9IHQsIGVbayArIDEyOCA+PiAyXSA9IHUsIFEociwgMSwgMjUwNzAsIGsgKyAxMjggfCAwKSwgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IEcyW2wgKyA0ID4+IDFdLCAhKCFsIHwgKGwgfCAwKSA9PSA2NTUzNSkgJiYgKGwgPSBsIC0gMSB8IDAsIGwgPj4+IDAgPj0gdCA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgKyAxIHwgMCwgKGEgfCAwKSA9PSAoaSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDExNiA+PiAyXSA9IHQsIGVbayArIDExMiA+PiAyXSA9IGwsIFEociwgMSwgMjUwNzAsIGsgKyAxMTIgfCAwKSwgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gdCAtIDEgfCAwLCBpID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEcyW2YgKyBaKGksIDYpID4+IDFdICE9ICh0IHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgKyAxIHwgMCwgKGEgfCAwKSAhPSAoaSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApID09IChpICYgNjU1MzUpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCF0KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGwgPSAxLCAhbiB8fCAoYSA9IGVbbiArIDEyID4+IDJdLCAhYSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIG4gPSBJW24gKyAxOCB8IDBdOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIHQgPSAxOyBmID0gZVtBICsgMTYgPj4gMl0sIHUgPSBHMlthICsgKGkgPDwgMikgPj4gMV0sIGYgPj4+IDAgPD0gdSA+Pj4gMCAmJiAoZVtrICsgMTAwID4+IDJdID0gZiwgZVtrICsgOTYgPj4gMl0gPSB1LCBRKHIsIDEsIDI1MDcwLCBrICsgOTYgfCAwKSwgdCA9IDApLCBpID0gaSArIDEgfCAwLCAobiB8IDApICE9IChpIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gRTIobiwgNCksICF1KQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGEgKyAoaSA8PCAyKSB8IDAsIG8gPSBJW2YgKyAyIHwgMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPj4+IDAgPj0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAyMCA+PiAyXSA9IG8sIGVbayArIDE2ID4+IDJdID0gaSwgUShyLCAxLCAyMzIzMSwgayArIDE2IHwgMCksIHQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBJW2YgKyAzIHwgMF0sIGYgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyA4MCA+PiAyXSA9IGYsIFEociwgMSwgMjMxNzUsIGsgKyA4MCB8IDApLCB0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gKG8gfCAwKSAhPSAxLCBoID0gKGYgPDwgMikgKyB1IHwgMCwgIShnIHwgIWVbaCA+PiAyXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMzIgPj4gMl0gPSBmLCBRKHIsIDEsIDIyMTA2LCBrICsgMzIgfCAwKSwgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghZiB8IG8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDUyID4+IDJdID0gZiwgZVtrICsgNDggPj4gMl0gPSBpLCBRKHIsIDEsIDIzMDM4LCBrICsgNDggfCAwKSwgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgoaSB8IDApID09IChmIHwgMCkgfCBnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyA3MiA+PiAyXSA9IGYsIGVbayArIDY4ID4+IDJdID0gaSwgZVtrICsgNjQgPj4gMl0gPSBpLCBRKHIsIDEsIDIzMDc0LCBrIC0gLTY0IHwgMCksIHQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtoID4+IDJdID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBpICsgMSB8IDAsIChuIHwgMCkgPT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGYgPSBpIDw8IDIsIGVbZiArIHUgPj4gMl0gfCAhSVsoZiArIGEgfCAwKSArIDIgfCAwXSB8fCAoZVtrID4+IDJdID0gaSwgUShyLCAxLCAyMTczNCwgayksIHQgPSAwKSwgaSA9IGkgKyAxIHwgMCwgKG4gfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBSKHUpLCBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyAxNiA+PiAyXSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIEEgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlWyhpIDw8IDIpICsgdSA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBBICsgMSB8IDAsIGkgPSBBICYgNjU1MzUsIG4gPj4+IDAgPiBpID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gMCwgUShyLCAyLCAxOTUzOCwgMCksIGkgPSAwLCBuID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gbiAmIDI1MiwgdCA9IDA7IGYgPSBhICsgKGkgPDwgMikgfCAwLCBGW2YgKyAzIHwgMF0gPSBpLCBGW2YgKyAyIHwgMF0gPSAxLCBmID0gaSB8IDEsIG8gPSBhICsgKGYgPDwgMikgfCAwLCBGW28gKyAzIHwgMF0gPSBmLCBGW28gKyAyIHwgMF0gPSAxLCBmID0gaSB8IDIsIG8gPSBhICsgKGYgPDwgMikgfCAwLCBGW28gKyAzIHwgMF0gPSBmLCBGW28gKyAyIHwgMF0gPSAxLCBmID0gaSB8IDMsIG8gPSBhICsgKGYgPDwgMikgfCAwLCBGW28gKyAzIHwgMF0gPSBmLCBGW28gKyAyIHwgMF0gPSAxLCBpID0gaSArIDQgfCAwLCB0ID0gdCArIDQgfCAwLCAociB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBuICYgMywgIXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHQgPSBhICsgKGkgPDwgMikgfCAwLCBGW3QgKyAzIHwgMF0gPSBpLCBGW3QgKyAyIHwgMF0gPSAxLCBpID0gaSArIDEgfCAwLCBBID0gQSArIDEgfCAwLCAociB8IDApICE9IChBIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IEUyKG4sIDQpLCB1KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsID0gMCwgUShyLCAxLCAyMzQ5MywgMCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBSKHUpOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbCA9IDAsIFEociwgMSwgMTk1ODksIDApOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGsgKyAxNDQgfCAwLCBsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGtrKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMDsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDA7CiAgICAgICAgICAgICAgaWYgKGRbQSArIDQ0ID4+IDJdID49IDgpCiAgICAgICAgICAgICAgICBmb3IgKGEgPSBlW0EgKyA0MCA+PiAyXSwgZyA9IDg7IDsgKSB7CiAgICAgICAgICAgICAgICAgIG8gPSBlW0EgKyAxMiA+PiAyXSA8PCA1LCBrID0gZVtBID4+IDJdLCBuID0gZVtBICsgMzYgPj4gMl0sIGkgPSBlW0EgKyAxNiA+PiAyXSwgbCA9IGVbQSArIDIwID4+IDJdOwogICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPj0gbCA+Pj4gMCB8fCAodSA9IGsgKyBvIHwgMCwgZiA9IGkgKyAxIHwgMCwgbCAtIGkgJiAxICYmIChyID0gdSArIChpIDw8IDYpIHwgMCwgaSA9IChaKGksIG4pIDw8IDIpICsgYSB8IDAsIHQgPSBlW2kgKyA0ID4+IDJdLCBlW3IgPj4gMl0gPSBlW2kgPj4gMl0sIGVbciArIDQgPj4gMl0gPSB0LCB0ID0gZVtpICsgMjggPj4gMl0sIGVbciArIDI0ID4+IDJdID0gZVtpICsgMjQgPj4gMl0sIGVbciArIDI4ID4+IDJdID0gdCwgdCA9IGVbaSArIDIwID4+IDJdLCBlW3IgKyAxNiA+PiAyXSA9IGVbaSArIDE2ID4+IDJdLCBlW3IgKyAyMCA+PiAyXSA9IHQsIHQgPSBlW2kgKyAxMiA+PiAyXSwgZVtyICsgOCA+PiAyXSA9IGVbaSArIDggPj4gMl0sIGVbciArIDEyID4+IDJdID0gdCwgaSA9IGYpLCAoZiB8IDApID09IChsIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZiA9IChaKGksIG4pIDw8IDIpICsgYSB8IDAsIHQgPSBlW2YgKyA0ID4+IDJdLCByID0gdSArIChpIDw8IDYpIHwgMCwgZVtyID4+IDJdID0gZVtmID4+IDJdLCBlW3IgKyA0ID4+IDJdID0gdCwgdCA9IGVbZiArIDI4ID4+IDJdLCBlW3IgKyAyNCA+PiAyXSA9IGVbZiArIDI0ID4+IDJdLCBlW3IgKyAyOCA+PiAyXSA9IHQsIHQgPSBlW2YgKyAyMCA+PiAyXSwgZVtyICsgMTYgPj4gMl0gPSBlW2YgKyAxNiA+PiAyXSwgZVtyICsgMjAgPj4gMl0gPSB0LCB0ID0gZVtmICsgMTIgPj4gMl0sIGVbciArIDggPj4gMl0gPSBlW2YgKyA4ID4+IDJdLCBlW3IgKyAxMiA+PiAyXSA9IHQsIGYgPSBpICsgMSB8IDAsIHIgPSB1ICsgKGYgPDwgNikgfCAwLCBmID0gKFooZiwgbikgPDwgMikgKyBhIHwgMCwgdCA9IGVbZiArIDI4ID4+IDJdLCBlW3IgKyAyNCA+PiAyXSA9IGVbZiArIDI0ID4+IDJdLCBlW3IgKyAyOCA+PiAyXSA9IHQsIHQgPSBlW2YgKyAyMCA+PiAyXSwgZVtyICsgMTYgPj4gMl0gPSBlW2YgKyAxNiA+PiAyXSwgZVtyICsgMjAgPj4gMl0gPSB0LCB0ID0gZVtmICsgMTIgPj4gMl0sIGVbciArIDggPj4gMl0gPSBlW2YgKyA4ID4+IDJdLCBlW3IgKyAxMiA+PiAyXSA9IHQsIHQgPSBlW2YgKyA0ID4+IDJdLCBlW3IgPj4gMl0gPSBlW2YgPj4gMl0sIGVbciArIDQgPj4gMl0gPSB0LCBpID0gaSArIDIgfCAwLCAobCB8IDApICE9IChpIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpID0gZVtBICsgMjQgPj4gMl0sIGwgPSBlW0EgKyAyOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAwID49IGwgPj4+IDAgfHwgKHUgPSAoayAtIG8gfCAwKSArIDMyIHwgMCwgbyA9IChaKG4sIGVbQSArIDggPj4gMl0pIDw8IDIpICsgYSB8IDAsIGYgPSBpICsgMSB8IDAsIGwgLSBpICYgMSAmJiAociA9IHUgKyAoaSA8PCA2KSB8IDAsIGkgPSBvICsgKFooaSwgbikgPDwgMikgfCAwLCBrID0gZVtpICsgNCA+PiAyXSwgZVtyID4+IDJdID0gZVtpID4+IDJdLCBlW3IgKyA0ID4+IDJdID0gaywgayA9IGVbaSArIDI4ID4+IDJdLCBlW3IgKyAyNCA+PiAyXSA9IGVbaSArIDI0ID4+IDJdLCBlW3IgKyAyOCA+PiAyXSA9IGssIGsgPSBlW2kgKyAyMCA+PiAyXSwgZVtyICsgMTYgPj4gMl0gPSBlW2kgKyAxNiA+PiAyXSwgZVtyICsgMjAgPj4gMl0gPSBrLCBrID0gZVtpICsgMTIgPj4gMl0sIGVbciArIDggPj4gMl0gPSBlW2kgKyA4ID4+IDJdLCBlW3IgKyAxMiA+PiAyXSA9IGssIGkgPSBmKSwgKGYgfCAwKSA9PSAobCB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGYgPSBvICsgKFooaSwgbikgPDwgMikgfCAwLCBrID0gZVtmICsgNCA+PiAyXSwgciA9IHUgKyAoaSA8PCA2KSB8IDAsIGVbciA+PiAyXSA9IGVbZiA+PiAyXSwgZVtyICsgNCA+PiAyXSA9IGssIGsgPSBlW2YgKyAyOCA+PiAyXSwgZVtyICsgMjQgPj4gMl0gPSBlW2YgKyAyNCA+PiAyXSwgZVtyICsgMjggPj4gMl0gPSBrLCBrID0gZVtmICsgMjAgPj4gMl0sIGVbciArIDE2ID4+IDJdID0gZVtmICsgMTYgPj4gMl0sIGVbciArIDIwID4+IDJdID0gaywgayA9IGVbZiArIDEyID4+IDJdLCBlW3IgKyA4ID4+IDJdID0gZVtmICsgOCA+PiAyXSwgZVtyICsgMTIgPj4gMl0gPSBrLCBmID0gaSArIDEgfCAwLCByID0gdSArIChmIDw8IDYpIHwgMCwgZiA9IG8gKyAoWihmLCBuKSA8PCAyKSB8IDAsIGsgPSBlW2YgKyAyOCA+PiAyXSwgZVtyICsgMjQgPj4gMl0gPSBlW2YgKyAyNCA+PiAyXSwgZVtyICsgMjggPj4gMl0gPSBrLCBrID0gZVtmICsgMjAgPj4gMl0sIGVbciArIDE2ID4+IDJdID0gZVtmICsgMTYgPj4gMl0sIGVbciArIDIwID4+IDJdID0gaywgayA9IGVbZiArIDEyID4+IDJdLCBlW3IgKyA4ID4+IDJdID0gZVtmICsgOCA+PiAyXSwgZVtyICsgMTIgPj4gMl0gPSBrLCBrID0gZVtmICsgNCA+PiAyXSwgZVtyID4+IDJdID0gZVtmID4+IDJdLCBlW3IgKyA0ID4+IDJdID0gaywgaSA9IGkgKyAyIHwgMCwgKGwgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKEsxKEEpLCBpID0gMCwgZVtBICsgMzIgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGYgPSBlW0EgPj4gMl0gKyAoaSA8PCA1KSB8IDAsIHIgPSBlW2YgKyA0ID4+IDJdLCBuID0gKFooZVtBICsgMzYgPj4gMl0sIGkpIDw8IDIpICsgYSB8IDAsIGVbbiA+PiAyXSA9IGVbZiA+PiAyXSwgZVtuICsgNCA+PiAyXSA9IHIsIHIgPSBlW2YgKyAyOCA+PiAyXSwgZVtuICsgMjQgPj4gMl0gPSBlW2YgKyAyNCA+PiAyXSwgZVtuICsgMjggPj4gMl0gPSByLCByID0gZVtmICsgMjAgPj4gMl0sIGVbbiArIDE2ID4+IDJdID0gZVtmICsgMTYgPj4gMl0sIGVbbiArIDIwID4+IDJdID0gciwgciA9IGVbZiArIDEyID4+IDJdLCBlW24gKyA4ID4+IDJdID0gZVtmICsgOCA+PiAyXSwgZVtuICsgMTIgPj4gMl0gPSByLCBpID0gaSArIDEgfCAwLCBpID4+PiAwIDwgZFtBICsgMzIgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhICsgMzIgfCAwLCBnID0gZyArIDggfCAwLCAhKGcgPj4+IDAgPD0gZFtBICsgNDQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFIoZVtBID4+IDJdKSwgUihBKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBKNChBLCBpLCByKSB7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwOwogICAgICAgICAgICAgIEIgPSBYIC0gMTYgfCAwLCBYID0gQiwgcyA9IGVbQSArIDI0ID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW2kgKyAxMiA+PiAyXSwgYSA9IElbZiArIDE4IHwgMF0sIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHYgPSBlW2YgKyAxMiA+PiAyXSwgQyA9IGVbZiA+PiAyXSwgaCA9IGVbZiArIDQgPj4gMl0sIHcgPSBlW2YgKyA4ID4+IDJdLCBmID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlWyhaKEcyWyhmIDw8IDIpICsgdiA+PiAxXSwgNTIpICsgcyB8IDApICsgNDQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBrICsgMSB8IDAsIGYgPSBrICYgNjU1MzUsIGEgPj4+IDAgPiBmID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVbQiA+PiAyXSA9IGYsIFEociwgMSwgMjUyMzIsIEIpLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gVTIoWihhLCA1MikpLCAhdSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBVMihaKGEsIDUyKSksIHUpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIFEociwgMSwgMjUxODAsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGZvciAoZiA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAoZiA8PCAyKSArIHYgfCAwLCBuID0gRzJbayA+PiAxXSwgdCA9IFooSVtrICsgMiB8IDBdID8gSVtrICsgMyB8IDBdIDogZiwgNTIpICsgdSB8IDAsIGsgPSBaKG4sIDUyKSArIHMgfCAwLCBuID0gZVtrICsgNCA+PiAyXSwgZVt0ID4+IDJdID0gZVtrID4+IDJdLCBlW3QgKyA0ID4+IDJdID0gbiwgZVt0ICsgNDggPj4gMl0gPSBlW2sgKyA0OCA+PiAyXSwgbiA9IGVbayArIDQ0ID4+IDJdLCBlW3QgKyA0MCA+PiAyXSA9IGVbayArIDQwID4+IDJdLCBlW3QgKyA0NCA+PiAyXSA9IG4sIG4gPSBlW2sgKyAzNiA+PiAyXSwgZVt0ICsgMzIgPj4gMl0gPSBlW2sgKyAzMiA+PiAyXSwgZVt0ICsgMzYgPj4gMl0gPSBuLCBuID0gZVtrICsgMjggPj4gMl0sIGVbdCArIDI0ID4+IDJdID0gZVtrICsgMjQgPj4gMl0sIGVbdCArIDI4ID4+IDJdID0gbiwgbiA9IGVbayArIDIwID4+IDJdLCBlW3QgKyAxNiA+PiAyXSA9IGVbayArIDE2ID4+IDJdLCBlW3QgKyAyMCA+PiAyXSA9IG4sIG4gPSBlW2sgKyAxMiA+PiAyXSwgZVt0ICsgOCA+PiAyXSA9IGVbayArIDggPj4gMl0sIGVbdCArIDEyID4+IDJdID0gbiwgdCA9IFooZiwgNTIpICsgdSB8IDAsIGsgPSBQMChaKGVbayArIDggPj4gMl0sIGVbayArIDEyID4+IDJdKSA8PCAyKSwgZVt0ICsgNDQgPj4gMl0gPSBrLCAhaykgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBsICYgNjU1MzUsIGYpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBSKGVbKFooZiwgNTIpICsgdSB8IDApIC0gOCA+PiAyXSksIGYgPSBmIC0gMSB8IDAsICEhZjsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIFIodSksIFEociwgMSwgMjUxODAsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChlW3QgKyAyNCA+PiAyXSA9IElbZiArIHcgfCAwXSwgZVt0ICsgMzIgPj4gMl0gPSBJW2YgKyBoIHwgMF0sIGwgPSBsICsgMSB8IDAsIGYgPSBsICYgNjU1MzUsICEoYSA+Pj4gMCA+IGYgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZm9yIChoID0gRzJbZVtpICsgMTIgPj4gMl0gKyAxNiA+PiAxXSwgdyA9IGggLSAxIHwgMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICByID0gWihjLCA1MikgKyB1IHwgMCwgaSA9IFooZVtyICsgMTIgPj4gMl0sIGVbciArIDggPj4gMl0pLCBmID0gKGMgPDwgMikgKyB2IHwgMCwgdCA9IGVbKFooRzJbZiA+PiAxXSwgNTIpICsgcyB8IDApICsgNDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgaWYgKCFJW2YgKyAyIHwgMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtyICsgNDQgPj4gMl0sIG4gPSAwLCBrID0gMCwgaSA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IGkgJiAtNCwgZiA9IDA7IGwgPSBrIDw8IDIsIGVbbCArIHIgPj4gMl0gPSBlW3QgKyBsID4+IDJdLCBnID0gbCB8IDQsIGVbZyArIHIgPj4gMl0gPSBlW3QgKyBnID4+IDJdLCBnID0gbCB8IDgsIGVbZyArIHIgPj4gMl0gPSBlW3QgKyBnID4+IDJdLCBsID0gbCB8IDEyLCBlW2wgKyByID4+IDJdID0gZVt0ICsgbCA+PiAyXSwgayA9IGsgKyA0IHwgMCwgZiA9IGYgKyA0IHwgMCwgKG8gfCAwKSAhPSAoZiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSAmIDMsICFpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBmID0gayA8PCAyLCBlW2YgKyByID4+IDJdID0gZVtmICsgdCA+PiAyXSwgayA9IGsgKyAxIHwgMCwgbiA9IG4gKyAxIHwgMCwgKGkgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBJW2YgKyAzIHwgMF0sIGYgPSAociA8PCAyKSArIEMgfCAwLCBsID0gZVsoWihyLCA1MikgKyB1IHwgMCkgKyA0NCA+PiAyXSwgayA9IDAsIChpIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChnID0gaSAmIC0yLCByID0gMDsgbyA9IGsgPDwgMiwgbiA9IGVbbyArIHQgPj4gMl0sIGVbbCArIG8gPj4gMl0gPSBlW2YgKyAoWigobiB8IDApID49IDAgPyAobiB8IDApIDwgKGggfCAwKSA/IG4gOiB3IDogMCwgYSkgPDwgMikgPj4gMl0sIG8gPSBvIHwgNCwgbiA9IGVbbyArIHQgPj4gMl0sIGVbbCArIG8gPj4gMl0gPSBlW2YgKyAoWigobiB8IDApID49IDAgPyAobiB8IDApIDwgKGggfCAwKSA/IG4gOiB3IDogMCwgYSkgPDwgMikgPj4gMl0sIGsgPSBrICsgMiB8IDAsIHIgPSByICsgMiB8IDAsIChnIHwgMCkgIT0gKHIgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIGlmICghKGkgJiAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIHIgPSBrIDw8IDIsIGkgPSBlW3IgKyB0ID4+IDJdLCBlW3IgKyBsID4+IDJdID0gZVtmICsgKFooKGkgfCAwKSA+PSAwID8gKGkgfCAwKSA8IChoIHwgMCkgPyBpIDogdyA6IDAsIGEpIDw8IDIpID4+IDJdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoYyA9IGMgKyAxIHwgMCwgKGMgfCAwKSA9PSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpID0gZVtBICsgMTYgPj4gMl0sIGkpCiAgICAgICAgICAgICAgICAgIGZvciAoZiA9IDA7IHIgPSBlWyhaKGYsIDUyKSArIHMgfCAwKSArIDQ0ID4+IDJdLCByICYmIFIociksIGYgPSBmICsgMSB8IDAsIChpIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIFIocyksIGVbQSArIDE2ID4+IDJdID0gYSwgZVtBICsgMjQgPj4gMl0gPSB1LCBBID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBCICsgMTYgfCAwLCBBOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG5rKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMDsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMDsKICAgICAgICAgICAgICBoID0gaSwgaSA9IGVbaSA+PiAyXSArIDcgJiAtOCwgZVtoID4+IDJdID0gaSArIDE2LCBjID0gQSwgbyA9IGVbaSA+PiAyXSwgQSA9IGVbaSArIDQgPj4gMl0sIHQgPSBlW2kgKyA4ID4+IDJdLCBrID0gZVtpICsgMTIgPj4gMl0sIHYgPSBrLCBuID0gWCAtIDMyIHwgMCwgWCA9IG4sIGkgPSBrICYgNjU1MzUsIHUgPSBrLCBrID0gdCwgdCA9IHUgPj4+IDE2ICYgMzI3NjcsIHcgPSB0OwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICh0IC0gMTUzNjEgPj4+IDAgPD0gMjA0NSkgewogICAgICAgICAgICAgICAgICBmID0gayA8PCA0IHwgQSA+Pj4gMjgsIHIgPSBpIDw8IDQgfCBrID4+PiAyOCwgayA9IHQgLSAxNTM2MCB8IDAsIEEgPSBBICYgMjY4NDM1NDU1OwogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChBIHwgMCkgPT0gMTM0MjE3NzI4ICYgKG8gfCAwKSAhPSAwIHwgQSA+Pj4gMCA+IDEzNDIxNzcyOCkgewogICAgICAgICAgICAgICAgICAgICAgZiA9IGYgKyAxIHwgMCwgciA9IGYgPyByIDogciArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKG8gfCAoQSB8IDApICE9IDEzNDIxNzcyOCkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgQSA9IGYsIGYgPSBmICsgKGYgJiAxKSB8IDAsIHIgPSBBID4+PiAwID4gZiA+Pj4gMCA/IHIgKyAxIHwgMCA6IHI7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgQSA9IHIgPj4+IDAgPiAxMDQ4NTc1LCBmID0gQSA/IDAgOiBmLCByID0gQSA/IDAgOiByLCBpID0gMCwgQSA9IEEgKyBrIHwgMCwgaSA9IEEgPj4+IDAgPCBrID4+PiAwID8gMSA6IGk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoISghKGsgfCBvIHwgKEEgfCBpKSkgfCAoKHQgfCAwKSAhPSAzMjc2NyB8IChyIHwgMCkgIT0gMCkpKSB7CiAgICAgICAgICAgICAgICAgIGYgPSBrIDw8IDQgfCBBID4+PiAyOCwgciA9IGkgPDwgNCB8IGsgPj4+IDI4IHwgNTI0Mjg4LCBBID0gMjA0NywgaSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodyA+Pj4gMCA+IDE3NDA2KSB7CiAgICAgICAgICAgICAgICAgIEEgPSAyMDQ3LCBpID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh0ID0gIShyIHwgdCksIEIgPSB0ID8gMTUzNjAgOiAxNTM2MSwgdSA9IEIgLSB3IHwgMCwgKHUgfCAwKSA+IDExMikgewogICAgICAgICAgICAgICAgICBBID0gMCwgaSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmID0gbywgciA9IEEsIGggPSBrLCBpID0gdCA/IGkgOiBpIHwgNjU1MzYsIGsgPSBpLCBsID0gaCwgZyA9IDEyOCAtIHUgfCAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoZyAmIDY0KSB7CiAgICAgICAgICAgICAgICAgICAgaSA9IGcgKyAtNjQgfCAwLCBnID0gZiwgdCA9IGkgJiAzMSwgKGkgJiA2MykgPj4+IDAgPj0gMzIgPyAoaSA9IGYgPDwgdCwgbCA9IDApIDogKGkgPSAoMSA8PCB0KSAtIDEgJiBnID4+PiAzMiAtIHQgfCByIDw8IHQsIGwgPSBnIDw8IHQpLCBmID0gMCwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoIWcpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgcyA9IGwsIGEgPSBnICYgMzEsIChnICYgNjMpID4+PiAwID49IDMyID8gKHQgPSBsIDw8IGEsIHMgPSAwKSA6ICh0ID0gKDEgPDwgYSkgLSAxICYgcyA+Pj4gMzIgLSBhIHwgaSA8PCBhLCBzID0gcyA8PCBhKSwgYSA9IGYsIGkgPSA2NCAtIGcgfCAwLCBsID0gaSAmIDMxLCAoaSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gMCwgbCA9IHIgPj4+IGwgfCAwKSA6IChpID0gciA+Pj4gbCB8IDAsIGwgPSAoKDEgPDwgbCkgLSAxICYgcikgPDwgMzIgLSBsIHwgYSA+Pj4gbCksIGwgPSBzIHwgbCwgaSA9IGkgfCB0LCBzID0gZiwgYSA9IGcgJiAzMSwgKGcgJiA2MykgPj4+IDAgPj0gMzIgPyAodCA9IGYgPDwgYSwgZiA9IDApIDogKHQgPSAoMSA8PCBhKSAtIDEgJiBzID4+PiAzMiAtIGEgfCByIDw8IGEsIGYgPSBzIDw8IGEpLCByID0gdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVbbiArIDE2ID4+IDJdID0gZiwgZVtuICsgMjAgPj4gMl0gPSByLCBlW24gKyAyNCA+PiAyXSA9IGwsIGVbbiArIDI4ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKHUgJiA2NCkgewogICAgICAgICAgICAgICAgICAgIHIgPSBoLCBpID0gdSArIC02NCB8IDAsIEEgPSBpICYgMzEsIChpICYgNjMpID4+PiAwID49IDMyID8gKGkgPSAwLCBvID0gayA+Pj4gQSB8IDApIDogKGkgPSBrID4+PiBBIHwgMCwgbyA9ICgoMSA8PCBBKSAtIDEgJiBrKSA8PCAzMiAtIEEgfCByID4+PiBBKSwgQSA9IGksIGggPSAwLCBrID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICghdSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBmID0gaCwgaSA9IDY0IC0gdSB8IDAsIHIgPSBpICYgMzEsIChpICYgNjMpID4+PiAwID49IDMyID8gKGkgPSBmIDw8IHIsIGwgPSAwKSA6IChpID0gKDEgPDwgcikgLSAxICYgZiA+Pj4gMzIgLSByIHwgayA8PCByLCBsID0gZiA8PCByKSwgZiA9IG8sIHIgPSB1ICYgMzEsICh1ICYgNjMpID4+PiAwID49IDMyID8gKHQgPSAwLCBBID0gQSA+Pj4gciB8IDApIDogKHQgPSBBID4+PiByIHwgMCwgQSA9ICgoMSA8PCByKSAtIDEgJiBBKSA8PCAzMiAtIHIgfCBmID4+PiByKSwgbyA9IGwgfCBBLCBBID0gaSB8IHQsIGYgPSBoLCByID0gdSAmIDMxLCAodSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChpID0gMCwgaCA9IGsgPj4+IHIgfCAwKSA6IChpID0gayA+Pj4gciB8IDAsIGggPSAoKDEgPDwgcikgLSAxICYgaykgPDwgMzIgLSByIHwgZiA+Pj4gciksIGsgPSBpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVtuID4+IDJdID0gbywgZVtuICsgNCA+PiAyXSA9IEEsIGVbbiArIDggPj4gMl0gPSBoLCBlW24gKyAxMiA+PiAyXSA9IGssIEEgPSBlW24gKyA4ID4+IDJdLCByID0gQSA8PCA0LCBBID0gZVtuICsgMTIgPj4gMl0gPDwgNCB8IEEgPj4+IDI4LCBrID0gZVtuID4+IDJdLCBmID0gZVtuICsgNCA+PiAyXSwgbyA9IGYsIGYgPSBmID4+PiAyOCB8IHIsIHIgPSBBLCBBID0gbyAmIDI2ODQzNTQ1NSwgaSA9IGsgfCAodyB8IDApICE9IChCIHwgMCkgJiAoZVtuICsgMTYgPj4gMl0gfCBlW24gKyAyNCA+PiAyXSB8IChlW24gKyAyMCA+PiAyXSB8IGVbbiArIDI4ID4+IDJdKSkgIT0gMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKChBIHwgMCkgPT0gMTM0MjE3NzI4ICYgKGkgfCAwKSAhPSAwIHwgQSA+Pj4gMCA+IDEzNDIxNzcyOCkgewogICAgICAgICAgICAgICAgICAgIGYgPSBmICsgMSB8IDAsIHIgPSBmID8gciA6IHIgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChpIHwgKEEgfCAwKSAhPSAxMzQyMTc3MjgpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgQSA9IGYsIGYgPSBmICsgKGYgJiAxKSB8IDAsIHIgPSBBID4+PiAwID4gZiA+Pj4gMCA/IHIgKyAxIHwgMCA6IHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBBID0gciA+Pj4gMCA+IDEwNDg1NzUsIHIgPSBBID8gciBeIDEwNDg1NzYgOiByLCBpID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgWCA9IG4gKyAzMiB8IDAsIEEwKDAsIGYgfCAwKSwgQTAoMSwgciB8ICh2ICYgLTIxNDc0ODM2NDggfCBBIDw8IDIwKSksIEMgPSBjLCBtID0gK04wKCksIFEyW0MgPj4gM10gPSBtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFI0KEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMCwgRCA9IDA7CiAgICAgICAgICAgICAgdiA9IGVbQSArIDQgPj4gMl0sIG8gPSBlW2kgPj4gMl0sIHUgPSBlW2kgKyA4ID4+IDJdLCB3ID0gZVtpICsgMjggPj4gMl0sIEIgPSBlW2kgKyAzNiA+PiAyXSwgbCA9IGVbaSArIDIwID4+IDJdLCB0ID0gbCAtIDEgfCAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgIGcgPSB0ICYgMTsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmICgobCB8IDApID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgIGkgPSB3OwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yIChDID0gdCAmIC0yLCBpID0gdzsgYSA9IGVbaSArIDE2MCA+PiAyXSAtIGVbaSArIDE1MiA+PiAyXSB8IDAsIG4gPSBuID4+PiAwID4gYSA+Pj4gMCA/IG4gOiBhLCBhID0gZVtpICsgMTY0ID4+IDJdIC0gZVtpICsgMTU2ID4+IDJdIHwgMCwgbiA9IG4gPj4+IDAgPiBhID4+PiAwID8gbiA6IGEsIGEgPSBlW2kgKyAzMTIgPj4gMl0gLSBlW2kgKyAzMDQgPj4gMl0gfCAwLCBuID0gbiA+Pj4gMCA+IGEgPj4+IDAgPyBuIDogYSwgYSA9IGVbaSArIDMxNiA+PiAyXSAtIGVbaSArIDMwOCA+PiAyXSB8IDAsIG4gPSBuID4+PiAwID4gYSA+Pj4gMCA/IG4gOiBhLCBpID0gaSArIDMwNCB8IDAsIGsgPSBrICsgMiB8IDAsIChDIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChnICYmIChrID0gZVtpICsgMTYwID4+IDJdIC0gZVtpICsgMTUyID4+IDJdIHwgMCwgayA9IGsgPj4+IDAgPCBuID4+PiAwID8gbiA6IGssIGkgPSBlW2kgKyAxNjQgPj4gMl0gLSBlW2kgKyAxNTYgPj4gMl0gfCAwLCBuID0gaSA+Pj4gMCA8IGsgPj4+IDAgPyBrIDogaSksIGsgPSAwLCBuID4+PiAwID4gMTM0MjE3NzI3KQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoQyA9IG4gPDwgNSwgZyA9IGhlKEMpLCAhZyAmJiBuKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSB1IC0gbyB8IDAsIHcgPSB3ICsgWih0LCAxNTIpIHwgMCwgaSA9IGwgLSAyIHwgMCwgYSA9ICh2IHwgMCkgPCAyOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuID0gaSwgaSA9IHcsIHcgPSBpIC0gMTUyIHwgMCwgeSA9IGVbdyA+PiAyXSwgcCA9IGVbaSAtIDE0NCA+PiAyXSwgYyA9IGVbaSArIDEyID4+IDJdLCBoID0gZVtpICsgNCA+PiAyXSwgbCA9IGMgLSBoIHwgMCwgdSA9IGggJiAxLCBIID0gZVtpID4+IDJdLCB0ID0gZVtpICsgOCA+PiAyXSAtIEggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIWEgJiB0ID4+PiAwID4gMTUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IDAsIHQgPj4+IDAgPj0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gIXU7IG8yW3IgfCAwXSgoaSA8PCAyKSArIEIgfCAwLCBnLCBsLCBrLCBvLCA4KSwgcyA9IGkgKyAxNSB8IDAsIGkgPSBpICsgOCB8IDAsIHQgPj4+IDAgPiBzID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPj0gdCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8yW3IgfCAwXSgoaSA8PCAyKSArIEIgfCAwLCBnLCBsLCAhdSwgbywgdCAtIGkgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoSiA9IGVbaSAtIDE0MCA+PiAyXSAtIGVbaSAtIDE0OCA+PiAyXSB8IDAsIEQgPSBsIC0gSiB8IDAsIHMgPSB0ID4+PiAwIDwgdiA+Pj4gMCA/IHQgOiB2LCBtID0gKHQgPj4+IDApIC8gKHMgPj4+IDApICYgLTgsIGsgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBVMig0MCksICFpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEUgPSBoZShDKSwgZVtpID4+IDJdID0gRSwgIUUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDEoQSksIFIoaSksIGsgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDM2ID4+IDJdID0gciwgZVtpICsgMjQgPj4gMl0gPSBCLCBlW2kgKyAyMCA+PiAyXSA9IG8sIGVbaSArIDE2ID4+IDJdID0gbCwgZVtpICsgMTIgPj4gMl0gPSB1LCBlW2kgKyA4ID4+IDJdID0gSiwgZVtpICsgNCA+PiAyXSA9IEQsIGVbaSArIDI4ID4+IDJdID0gWihrLCBtKSwgayA9IGsgKyAxIHwgMCwgZVtpICsgMzIgPj4gMl0gPSAoayB8IDApID09IChzIHwgMCkgPyB0IDogWihtLCBrKSwgYjEoQSwgMTEyLCBpKSwgKGsgfCAwKSA9PSAocyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgbDEoQSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdSA9IEggJiAxOwogICAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIWEgJiBsID4+PiAwID4gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaCB8IDApID09IChjIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9ICF1LCBpID0gMCwgKGwgfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGggPSBsICYgLTIsIHUgPSAwOyBvMltmIHwgMF0oKFooaSwgbykgPDwgMikgKyBCIHwgMCwgZywgdCwgayksIG8yW2YgfCAwXSgoWihvLCBpIHwgMSkgPDwgMikgKyBCIHwgMCwgZywgdCwgayksIGkgPSBpICsgMiB8IDAsIHUgPSB1ICsgMiB8IDAsIChoIHwgMCkgIT0gKHUgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGwgJiAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8yW2YgfCAwXSgoWihpLCBvKSA8PCAyKSArIEIgfCAwLCBnLCB0LCBrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobSA9IHAgLSB5IHwgMCwgeSA9IHQgLSBtIHwgMCwgaCA9IGwgPj4+IDAgPCB2ID4+PiAwID8gbCA6IHYsIHAgPSBoIC0gMSB8IDAsIHMgPSAobCA+Pj4gMCkgLyAoaCA+Pj4gMCkgfCAwLCBrID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gVTIoNDApLCAhaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID0gaGUoQyksIGVbaSA+PiAyXSA9IGMsICFjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwxKEEpLCBSKGkpLCBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyAzNiA+PiAyXSA9IGYsIGVbaSArIDI0ID4+IDJdID0gQiwgZVtpICsgMjAgPj4gMl0gPSBvLCBlW2kgKyAxNiA+PiAyXSA9IHQsIGVbaSArIDEyID4+IDJdID0gdSwgZVtpICsgOCA+PiAyXSA9IG0sIGVbaSArIDQgPj4gMl0gPSB5LCBlW2kgKyAyOCA+PiAyXSA9IFooaywgcyksIGMgPSAoayB8IDApID09IChwIHwgMCksIGsgPSBrICsgMSB8IDAsIGVbaSArIDMyID4+IDJdID0gYyA/IGwgOiBaKHMsIGspLCBiMShBLCAxMTMsIGkpLCAoayB8IDApID09IChoIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBsMShBKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IG4gLSAxIHwgMCwgIW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgayA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBsMShBKSwgayA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBSKGcpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gazsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBFNChBLCBpLCByKSB7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwOwogICAgICAgICAgICAgIGlmICh0ID0gWCAtIDgwIHwgMCwgWCA9IHQsIGwgPSBlW2kgKyA4ID4+IDJdLCBnID0gZVtsID4+IDJdLCBzID0gRzJbbCArIDQgPj4gMV0sIHMpIHsKICAgICAgICAgICAgICAgIGZvciAodiA9IGcgKyA2IHwgMCwgbCA9IDAsIEMgPSBzIC0gMiAmIDY1NTM1LCB3ID0gMTsgOyApIHsKICAgICAgICAgICAgICAgICAgQiA9IFoobCwgNikgKyBnIHwgMCwgbyA9IEcyW0IgPj4gMV0sIGYgPSBlW0EgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgIGlmIChvID4+PiAwID49IGYgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgIGVbdCArIDIwID4+IDJdID0gZiwgZVt0ICsgMTYgPj4gMl0gPSBvLCBRKHIsIDIsIDE2OTU1LCB0ICsgMTYgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChrID0gRzJbQiArIDQgPj4gMV0sIChrICsgMSAmIDY1NTM1KSA+Pj4gMCA8PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICB1MlsoZVtBICsgMjQgPj4gMl0gKyBaKG8sIDUyKSB8IDApICsgNDggPj4gMV0gPSBHMltCICsgMiA+PiAxXTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChjID0gayAtIDEgfCAwLCBoID0gYyAmIDY1NTM1LCBmID4+PiAwIDw9IGggPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgIGVbdCArIDQgPj4gMl0gPSBmLCBlW3QgPj4gMl0gPSBoLCBRKHIsIDIsIDE2OTE0LCB0KTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChHMltCICsgMiA+PiAxXSB8IChvIHwgMCkgPT0gKGggfCAwKSB8fCAoayA9IGVbQSArIDI0ID4+IDJdLCBmID0gayArIFoobywgNTIpIHwgMCwgZVt0ICsgNzIgPj4gMl0gPSBlW2YgKyA0OCA+PiAyXSwgbiA9IGVbZiArIDQ0ID4+IDJdLCB1ID0gdCAtIC02NCB8IDAsIGVbdSA+PiAyXSA9IGVbZiArIDQwID4+IDJdLCBlW3UgKyA0ID4+IDJdID0gbiwgbiA9IGVbZiArIDM2ID4+IDJdLCBlW3QgKyA1NiA+PiAyXSA9IGVbZiArIDMyID4+IDJdLCBlW3QgKyA2MCA+PiAyXSA9IG4sIG4gPSBlW2YgKyAyOCA+PiAyXSwgZVt0ICsgNDggPj4gMl0gPSBlW2YgKyAyNCA+PiAyXSwgZVt0ICsgNTIgPj4gMl0gPSBuLCBuID0gZVtmICsgMjAgPj4gMl0sIGVbdCArIDQwID4+IDJdID0gZVtmICsgMTYgPj4gMl0sIGVbdCArIDQ0ID4+IDJdID0gbiwgbiA9IGVbZiArIDEyID4+IDJdLCBlW3QgKyAzMiA+PiAyXSA9IGVbZiArIDggPj4gMl0sIGVbdCArIDM2ID4+IDJdID0gbiwgbiA9IGVbZiArIDQgPj4gMl0sIGVbdCArIDI0ID4+IDJdID0gZVtmID4+IDJdLCBlW3QgKyAyOCA+PiAyXSA9IG4sIG4gPSBaKGgsIDUyKSwgayA9IG4gKyBrIHwgMCwgZVtmICsgNDggPj4gMl0gPSBlW2sgKyA0OCA+PiAyXSwgYSA9IGVbayArIDQ0ID4+IDJdLCBlW2YgKyA0MCA+PiAyXSA9IGVbayArIDQwID4+IDJdLCBlW2YgKyA0NCA+PiAyXSA9IGEsIGEgPSBlW2sgKyAzNiA+PiAyXSwgZVtmICsgMzIgPj4gMl0gPSBlW2sgKyAzMiA+PiAyXSwgZVtmICsgMzYgPj4gMl0gPSBhLCBhID0gZVtrICsgMjggPj4gMl0sIGVbZiArIDI0ID4+IDJdID0gZVtrICsgMjQgPj4gMl0sIGVbZiArIDI4ID4+IDJdID0gYSwgYSA9IGVbayArIDIwID4+IDJdLCBlW2YgKyAxNiA+PiAyXSA9IGVbayArIDE2ID4+IDJdLCBlW2YgKyAyMCA+PiAyXSA9IGEsIGEgPSBlW2sgKyAxMiA+PiAyXSwgZVtmICsgOCA+PiAyXSA9IGVbayArIDggPj4gMl0sIGVbZiArIDEyID4+IDJdID0gYSwgYSA9IGVbayArIDQgPj4gMl0sIGVbZiA+PiAyXSA9IGVbayA+PiAyXSwgZVtmICsgNCA+PiAyXSA9IGEsIGsgPSBlW3QgKyAyOCA+PiAyXSwgZiA9IG4gKyBlW0EgKyAyNCA+PiAyXSB8IDAsIGVbZiA+PiAyXSA9IGVbdCArIDI0ID4+IDJdLCBlW2YgKyA0ID4+IDJdID0gaywgZVtmICsgNDggPj4gMl0gPSBlW3QgKyA3MiA+PiAyXSwgayA9IGVbdSArIDQgPj4gMl0sIGVbZiArIDQwID4+IDJdID0gZVt1ID4+IDJdLCBlW2YgKyA0NCA+PiAyXSA9IGssIGsgPSBlW3QgKyA2MCA+PiAyXSwgZVtmICsgMzIgPj4gMl0gPSBlW3QgKyA1NiA+PiAyXSwgZVtmICsgMzYgPj4gMl0gPSBrLCBrID0gZVt0ICsgNTIgPj4gMl0sIGVbZiArIDI0ID4+IDJdID0gZVt0ICsgNDggPj4gMl0sIGVbZiArIDI4ID4+IDJdID0gaywgayA9IGVbdCArIDQ0ID4+IDJdLCBlW2YgKyAxNiA+PiAyXSA9IGVbdCArIDQwID4+IDJdLCBlW2YgKyAyMCA+PiAyXSA9IGssIGsgPSBlW3QgKyAzNiA+PiAyXSwgZVtmICsgOCA+PiAyXSA9IGVbdCArIDMyID4+IDJdLCBlW2YgKyAxMiA+PiAyXSA9IGssIGwgKyAxID4+PiAwID49IHMgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSB3LCAhKGwgLSBzICYgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgayA9IGMsIGYgPSBaKHcsIDYpICsgZyB8IDAsIHUgPSBHMltmID4+IDFdOwogICAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1IHwgMCkgIT0gKG8gfCAwKSAmJiAoayA9IG8sICh1IHwgMCkgIT0gKGggfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIHUyW2YgPj4gMV0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB3ICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgJiA2NTUzNSkgPT0gKEMgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBmID0gYywgdSA9IFooaywgNiksIG4gPSB1ICsgZyB8IDAsIGEgPSBHMltuID4+IDFdOwogICAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgIT0gKG8gfCAwKSAmJiAoZiA9IG8sIChhIHwgMCkgIT0gKGggfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIHUyW24gPj4gMV0gPSBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjLCB1ID0gdSArIHYgfCAwLCBuID0gRzJbdSA+PiAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApICE9IChvIHwgMCkgJiYgKGYgPSBvLCAobiB8IDApICE9IChoIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB1Mlt1ID4+IDFdID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGsgKyAyIHwgMCwgKGsgJiA2NTUzNSkgPT0gKHMgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdTJbKGVbQSArIDI0ID4+IDJdICsgWihvLCA1MikgfCAwKSArIDQ4ID4+IDFdID0gRzJbQiArIDIgPj4gMV07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHcgPSB3ICsgMSB8IDAsIGwgPSBsICsgMSB8IDAsIChzIHwgMCkgPT0gKGwgfCAwKSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGwgPSBlW2kgKyA4ID4+IDJdLCBnID0gZVtsID4+IDJdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBnICYmIChSKGcpLCBsID0gZVtpICsgOCA+PiAyXSksIFIobCksIGVbaSArIDggPj4gMl0gPSAwLCBYID0gdCArIDgwIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBENChBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMDsKICAgICAgICAgICAgICBpZiAoayA9IEUyKDEsIDM2KSwgZVtBICsgNzIgPj4gMl0gPSBrLCAhaykKICAgICAgICAgICAgICAgIHJldHVybiBRKGYsIDEsIDMyMzksIDApLCAwOwogICAgICAgICAgICAgIEJpKHIsIGspLCBrID0gZVtyICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFrIHx8ICh0ID0gZVtyICsgMTYgPj4gMl0sICF0KSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmIChyID0gMCwgKHQgfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICBmb3IgKHUgPSB0ICYgLTI7IG4gPSBaKHIsIDUyKSwgbCA9IG4gKyBrIHwgMCwgbyA9IGVbbCArIDQ0ID4+IDJdLCBvICYmIChlWyhuICsgZVtlW0EgKyA3MiA+PiAyXSArIDI0ID4+IDJdIHwgMCkgKyA0NCA+PiAyXSA9IG8sIGVbbCArIDQ0ID4+IDJdID0gMCksIG4gPSBaKHIgfCAxLCA1MiksIGwgPSBuICsgayB8IDAsIG8gPSBlW2wgKyA0NCA+PiAyXSwgbyAmJiAoZVsobiArIGVbZVtBICsgNzIgPj4gMl0gKyAyNCA+PiAyXSB8IDApICsgNDQgPj4gMl0gPSBvLCBlW2wgKyA0NCA+PiAyXSA9IDApLCByID0gciArIDIgfCAwLCBhID0gYSArIDIgfCAwLCAodSB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAoISh0ICYgMSkgfHwgKHIgPSBaKHIsIDUyKSwgayA9IHIgKyBrIHwgMCwgdCA9IGVbayArIDQ0ID4+IDJdLCAhdCkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBlWyhyICsgZVtlW0EgKyA3MiA+PiAyXSArIDI0ID4+IDJdIHwgMCkgKyA0NCA+PiAyXSA9IHQsIGVbayArIDQ0ID4+IDJdID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdSA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFjMChlW0EgKyAxOTYgPj4gMl0sIDEzMSwgZikgfHwgIWMwKGVbQSArIDE5NiA+PiAyXSwgMTMyLCBmKSB8fCAhYzAoZVtBICsgMTk2ID4+IDJdLCAxMzMsIGYpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgbiA9IGVbQSArIDE5NiA+PiAyXSwgayA9IGVbbiA+PiAyXSwgdCA9IGVbbiArIDggPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSAxLCBsID0gayAmIDEsIChrIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gayAmIC0yLCBhID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIgfHwgKGsgPSAwLCAhKG8yW2VbdCA+PiAyXV0oQSwgaSwgZikgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAobzJbZVt0ICsgNCA+PiAyXV0oQSwgaSwgZikgfCAwKSAhPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gaywgdCA9IHQgKyA4IHwgMCwgYSA9IGEgKyAyIHwgMCwgKG8gfCAwKSA9PSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgayA9ICFyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAociA9IGwgPyAwIDogciwgayB8ICFsIHx8IChyID0gKG8yW2VbdCA+PiAyXV0oQSwgaSwgZikgfCAwKSAhPSAwKSwgZVtuID4+IDJdID0gMCwgcikKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVtuID4+IDJdID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghYzAoZVtBICsgMTkyID4+IDJdLCAxMzQsIGYpIHx8ICFjMChlW0EgKyAxOTIgPj4gMl0sIDEzNSwgZikgfHwgIWMwKGVbQSArIDE5MiA+PiAyXSwgMTM2LCBmKSB8fCAhYzAoZVtBICsgMTkyID4+IDJdLCAxMzcsIGYpIHx8ICFjMChlW0EgKyAxOTIgPj4gMl0sIDEzOCwgZikgfHwgIWMwKGVbQSArIDE5MiA+PiAyXSwgMTM5LCBmKSB8fCAhYzAoZVtBICsgMTkyID4+IDJdLCAxNDAsIGYpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIWVbQSArIDE2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGlmICghYzAoZVtBICsgMTkyID4+IDJdLCAxNDEsIGYpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGlmIChHMltBICsgODAgPj4gMV0gIT0gNCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoIWMwKGVbQSArIDE5MiA+PiAyXSwgMTQyLCBmKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFjMChlW0EgKyAxOTIgPj4gMl0sIDE0MywgZikgfHwgZVtBICsgMTAwID4+IDJdICYmICFjMChlW0EgKyAxOTIgPj4gMl0sIDE0NCwgZikgfHwgKEcyW0EgKyA4MCA+PiAxXSAmIDMzMDI0KSA9PSAzMzAyNCAmJiAhYzAoZVtBICsgMTkyID4+IDJdLCAxNDUsIGYpIHx8IGVbQSArIDIwMCA+PiAyXSAmJiAhYzAoZVtBICsgMTkyID4+IDJdLCAxNDYsIGYpIHx8ICFjMChlW0EgKyAxOTIgPj4gMl0sIDE0NywgZikgfHwgIWMwKGVbQSArIDE5MiA+PiAyXSwgMTQ4LCBmKSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIG4gPSBlW0EgKyAxOTIgPj4gMl0sIGsgPSBlW24gPj4gMl0sIHQgPSBlW24gKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGspIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gMSwgbCA9IGsgJiAxLCAoayB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlW24gPj4gMl0gPSAwLCAxOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGZvciAodSA9IGsgJiAtMiwgYSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgaWYgKCFyIHx8IChrID0gMCwgIShvMltlW3QgPj4gMl1dKEEsIGksIGYpIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgayA9IChvMltlW3QgKyA0ID4+IDJdXShBLCBpLCBmKSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChyID0gaywgdCA9IHQgKyA4IHwgMCwgYSA9IGEgKyAyIHwgMCwgKHUgfCAwKSA9PSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgayA9ICFyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdSA9IGwgPyAwIDogciwgayB8ICFsIHx8ICh1ID0gKG8yW2VbdCA+PiAyXV0oQSwgaSwgZikgfCAwKSAhPSAwKSwgZVtuID4+IDJdID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHUgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHRrKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDA7CiAgICAgICAgICAgICAgdCA9IFggLSA4MCB8IDAsIFggPSB0LCBlW3QgKyA3NiA+PiAyXSA9IDEsIGsgPSBlW0EgKyAyMDAgPj4gMl0sIGYgPSBlW2sgKyA0MCA+PiAyXTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChmKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGlmIChmID0gWihlW0EgKyAxMDggPj4gMl0sIGVbQSArIDEwNCA+PiAyXSksIGVbayArIDM2ID4+IDJdID0gZiwgZiA9IEUyKGYsIDQwKSwgayA9IGVbQSArIDIwMCA+PiAyXSwgZVtrICsgNDAgPj4gMl0gPSBmLCAhZikgewogICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCFlW2sgKyAzNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDAsIGwgPSBaKG4sIDQwKSwgZiA9IGwgKyBmIHwgMCwgZVtmICsgMjAgPj4gMl0gPSAwLCBlW2YgKyAyOCA+PiAyXSA9IDEwMCwgdSA9IEUyKDEwMCwgMjQpLCBhID0gZVtBICsgMjAwID4+IDJdLCBmID0gZVthICsgNDAgPj4gMl0sIGVbKGwgKyBmIHwgMCkgKyAyNCA+PiAyXSA9IHUsICF1KQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpZiAobiA9IG4gKyAxIHwgMCwgIShuID4+PiAwIDwgZFthICsgMzYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHUgPSBlW0EgKyA0NCA+PiAyXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKCFlW2YgKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBaKHUsIDQwKSArIGYgfCAwLCAhZVtmICsgNCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW0EgKyA1MiA+PiAyXSwgayA9IGVbQSArIDQ4ID4+IDJdICsgMiB8IDAsIGYgPSBrID4+PiAwIDwgMiA/IGYgKyAxIHwgMCA6IGYsIEdpKGksIGssIGYsIHIpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgayA9IDAsIFEociwgMSwgODk0MSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbZiArIDE2ID4+IDJdLCBrID0gZVtmID4+IDJdLCBmID0gZVtmICsgNCA+PiAyXSwgayA9IGsgKyAyIHwgMCwgZiA9IGsgPj4+IDAgPCAyID8gZiArIDEgfCAwIDogZiwgR2koaSwgaywgZiwgcikpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIGsgPSAwLCBRKHIsIDEsIDg5NDEsIDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gIT0gMjU2KQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSA4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbCA9IFooZVtBICsgMTA4ID4+IDJdLCBlW0EgKyAxMDQgPj4gMl0pOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIWwpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyAxNTYgPj4gMl0sIGYgPSAwLCBsID4+PiAwID49IDgpCiAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gbCAmIC04LCBuID0gMDsgZVsoayArIFooZiwgNTY0NCkgfCAwKSArIDU1ODggPj4gMl0gPSAtMSwgZVsoayArIFooZiB8IDEsIDU2NDQpIHwgMCkgKyA1NTg4ID4+IDJdID0gLTEsIGVbKGsgKyBaKGYgfCAyLCA1NjQ0KSB8IDApICsgNTU4OCA+PiAyXSA9IC0xLCBlWyhrICsgWihmIHwgMywgNTY0NCkgfCAwKSArIDU1ODggPj4gMl0gPSAtMSwgZVsoayArIFooZiB8IDQsIDU2NDQpIHwgMCkgKyA1NTg4ID4+IDJdID0gLTEsIGVbKGsgKyBaKGYgfCA1LCA1NjQ0KSB8IDApICsgNTU4OCA+PiAyXSA9IC0xLCBlWyhrICsgWihmIHwgNiwgNTY0NCkgfCAwKSArIDU1ODggPj4gMl0gPSAtMSwgZVsoayArIFooZiB8IDcsIDU2NDQpIHwgMCkgKyA1NTg4ID4+IDJdID0gLTEsIGYgPSBmICsgOCB8IDAsIG4gPSBuICsgOCB8IDAsIChhIHwgMCkgIT0gKG4gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBpZiAobiA9IGwgJiA3LCAhbikKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBmb3IgKDsgZVsoayArIFooZiwgNTY0NCkgfCAwKSArIDU1ODggPj4gMl0gPSAtMSwgZiA9IGYgKyAxIHwgMCwgbyA9IG8gKyAxIHwgMCwgKG4gfCAwKSAhPSAobyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGsgPSAwLCAhQ2UoQSwgdCArIDcyIHwgMCwgMCwgdCArIDY4IHwgMCwgdCAtIC02NCB8IDAsIHQgKyA2MCB8IDAsIHQgKyA1NiB8IDAsIHQgKyA1MiB8IDAsIHQgKyA3NiB8IDAsIGksIHIpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yIChsID0gdSArIDEgfCAwOyA7ICkgewogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlW3QgKyA3NiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW3QgKyA3MiA+PiAyXSwgIVBlKEEsIGYsIDAsIDAsIGksIHIpIHx8IChhID0gZVtBICsgMTA0ID4+IDJdLCBvID0gZVtBICsgMTA4ID4+IDJdLCBuID0gZiArIDEgfCAwLCBlW3QgKyAzMiA+PiAyXSA9IG4sIGVbdCArIDM2ID4+IDJdID0gWihhLCBvKSwgUShyLCA0LCAyMjg1NCwgdCArIDMyIHwgMCksICFVNChlW0EgKyAyMDggPj4gMl0sIGVbZVtBICsgNzYgPj4gMl0gKyAyNCA+PiAyXSkpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGVbQSArIDE1NiA+PiAyXSArIFooZiwgNTY0NCkgfCAwLCBhID0gZVtrICsgNTU5NiA+PiAyXSwgYSAmJiAoUihhKSwgZVtrICsgNTU5NiA+PiAyXSA9IDAsIGVbayArIDU2MDAgPj4gMl0gPSAwKSwgZVt0ICsgMTYgPj4gMl0gPSBuLCBRKHIsIDQsIDI4OTUxLCB0ICsgMTYgfCAwKSwgKGYgfCAwKSA9PSAodSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbQSArIDIwMCA+PiAyXSwgayA9IGVbZiArIDggPj4gMl0sIGYgPSBlW2YgKyAxMiA+PiAyXSwgayA9IGsgKyAyIHwgMCwgZiA9IGsgPj4+IDAgPCAyID8gZiArIDEgfCAwIDogZiwgR2koaSwgaywgZiwgcikpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBrID0gMCwgUShyLCAxLCA4OTQxLCAwKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChlW3QgKyA0ID4+IDJdID0gbCwgZVt0ID4+IDJdID0gbiwgUShyLCAyLCAyNTAwMywgdCksIGsgPSAwLCBDZShBLCB0ICsgNzIgfCAwLCAwLCB0ICsgNjggfCAwLCB0IC0gLTY0IHwgMCwgdCArIDYwIHwgMCwgdCArIDU2IHwgMCwgdCArIDUyIHwgMCwgdCArIDc2IHwgMCwgaSwgcikpCiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgayA9IEM2KEEsIHIpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IHQgKyA4MCB8IDAsIGsgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFU0KEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMCwgeSA9IDAsIHAgPSAwLCBIID0gMCwgSiA9IDA7CiAgICAgICAgICAgICAgaWYgKG0gPSBlW0EgKyAyNCA+PiAyXSwgIWVbbSArIDE2ID4+IDJdKQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgZm9yICh5ID0gZVttICsgMjQgPj4gMl0sIGggPSBlW2VbZVtBICsgMjAgPj4gMl0gPj4gMl0gKyAyMCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgIHIgPSBlW3kgKyAzNiA+PiAyXSwgZVtpICsgMzYgPj4gMl0gPSByLCBmID0gWihyLCAxNTIpLCByID0gZVtoICsgMjggPj4gMl0sIGYgPSBmICsgciB8IDAsIHAgPSBlW0EgKyA2NCA+PiAyXTsKICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgaWYgKHApIHsKICAgICAgICAgICAgICAgICAgICByID0gciArIFooZVtoICsgMjQgPj4gMl0sIDE1MikgfCAwLCBjID0gZVtyIC0gMTQ0ID4+IDJdIC0gZVtyIC0gMTUyID4+IDJdIHwgMCwgbyA9IGYgKyAxMiB8IDAsIGsgPSBmICsgNCB8IDAsIHQgPSBlW2YgKyA4ID4+IDJdLCB1ID0gZVtmID4+IDJdLCBmID0gMzY7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBvID0gZiArIDE0OCB8IDAsIGsgPSBmICsgMTQwIHwgMCwgdCA9IGVbZiArIDE0NCA+PiAyXSwgdSA9IGVbZiArIDEzNiA+PiAyXSwgYyA9IHQgLSB1IHwgMCwgZiA9IDUyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgSCA9IGVbZiArIGggPj4gMl07CiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIUgpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIHMgPSBlW2sgPj4gMl0sIHYgPSBlW28gPj4gMl0sIG8gPSB0IC0gdSB8IDAsIGcgPSBlW2kgKyA4ID4+IDJdLCBuID0gZywgYSA9IGVbaSArIDQwID4+IDJdLCBrID0gYSAmIDMxLCAoYSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChyID0gLTEgPDwgaywgZiA9IDApIDogKGYgPSAtMSA8PCBrLCByID0gZiB8ICgxIDw8IGspIC0gMSAmIC0xID4+PiAzMiAtIGspLCBsID0gZiBeIC0xLCBrID0gZVtpICsgMTYgPj4gMl0sIHcgPSBsICsgayB8IDAsIGYgPSByIF4gLTEsIHIgPSBmLCByID0gayA+Pj4gMCA+IHcgPj4+IDAgPyByICsgMSB8IDAgOiByLCBCID0gbiwgayA9IHcsIG4gPSBhICYgMzEsIChhICYgNjMpID4+PiAwID49IDMyID8gciA9IHIgPj4+IG4gfCAwIDogciA9ICgoMSA8PCBuKSAtIDEgJiByKSA8PCAzMiAtIG4gfCBrID4+PiBuLCBuID0gQiArIHIgfCAwOwogICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDwgdSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQiA9IHUgLSByIHwgMCwgQyA9IDAsIGsgPSAwLCB0ID4+PiAwIDw9IG4gPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8sIG8gPSBuIC0gdSB8IDAsIGsgPSByIC0gbyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoQyA9IHIgLSB1IHwgMCwgdCA+Pj4gMCA8PSBuID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvIC0gQyB8IDAsIEIgPSAwLCBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIEIgPSAwLCBvID0gZywgayA9IHQgLSBuIHwgMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IHYgLSBzIHwgMCwgbiA9IGVbaSArIDEyID4+IDJdLCByID0gbCwgbCA9IGVbaSArIDIwID4+IDJdLCB3ID0gciArIGwgfCAwLCByID0gZiwgciA9IGwgPj4+IDAgPiB3ID4+PiAwID8gciArIDEgfCAwIDogciwgZiA9IHcsIGwgPSBhICYgMzEsIChhICYgNjMpID4+PiAwID49IDMyID8gciA9IHIgPj4+IGwgfCAwIDogciA9ICgoMSA8PCBsKSAtIDEgJiByKSA8PCAzMiAtIGwgfCBmID4+PiBsLCBsID0gciArIG4gfCAwOwogICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDwgcyA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHMgLSByIHwgMCwgYSA9IDAsIGYgPSAwLCBsID4+PiAwID49IHYgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQsIHQgPSBsIC0gcyB8IDAsIGYgPSBmIC0gdCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IHIgLSBzIHwgMCwgbCA+Pj4gMCA+PSB2ID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0IC0gYSB8IDAsIHIgPSAwLCBmID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHIgPSAwLCB0ID0gbiwgZiA9IHYgLSBsIHwgMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSAwLCAoQyB8IGEgfCAoayB8IGYpKSA8IDAgfHwgKG8gfCB0KSA8IDApCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGwgPSBaKHIsIGcpICsgQiB8IDA7CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2kgKyA0NCA+PiAyXSwgYSA9IFooYSwgYykgKyBDIHwgMCwgciB8IGEgfCAoKGcgfCAwKSAhPSAoYyB8IDApIHwgbCkgfHwgKG8gfCAwKSAhPSAoZyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSAhPSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICByID0gKHAgPyAzNiA6IDUyKSArIGggfCAwLCBlW2kgKyA0NCA+PiAyXSA9IGVbciA+PiAyXSwgZVtyID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4gfHwgKGQwKG4sIDAsIGcsIDApLCBxMikgfHwgKHIgPSBaKG4sIGcpLCByID4+PiAwID4gMTA3Mzc0MTgyMykgfHwgKGYgPSBQMChyIDw8IDIpLCBlW2kgKyA0NCA+PiAyXSA9IGYsICFmKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gZVtpICsgOCA+PiAyXSwgciA9IGVbaSArIDEyID4+IDJdLCAoayB8IDApID09IChvIHwgMCkgJiAociB8IDApID09ICh0IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBkMihmLCAwLCBaKHIsIGspIDw8IDIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGlmIChuID0gdCAmIDEsIGcgPSBvIDw8IDIsIGsgPSBlW2kgKyA0NCA+PiAyXSArIChsIDw8IDIpIHwgMCwgdSA9IChhIDw8IDIpICsgSCB8IDAsICh0IHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IHQgJiAyMTQ3NDgzNjQ2LCB0ID0gMDsgayA9IEYyKGssIHUsIGcpLCByID0gYyA8PCAyLCBhID0gciArIHUgfCAwLCB1ID0gciArIGEgfCAwLCBrID0gRjIoKGVbaSArIDggPj4gMl0gPDwgMikgKyBrIHwgMCwgYSwgZykgKyAoZVtpICsgOCA+PiAyXSA8PCAyKSB8IDAsIHQgPSB0ICsgMiB8IDAsIChmIHwgMCkgIT0gKHQgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBGMihrLCB1LCBnKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoaCA9IGggKyA3NiB8IDAsIHkgPSB5ICsgNTIgfCAwLCBpID0gaSArIDUyIHwgMCwgdSA9IDEsIEogPSBKICsgMSB8IDAsIEogPj4+IDAgPCBkW20gKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gdTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBvMChBLCBpKSB7CiAgICAgICAgICAgICAgdmFyIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwOwogICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghQSkgewogICAgICAgICAgICAgICAgICBrID0gdjEoaSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA+PSA0Mjk0OTY3MjMyKSB7CiAgICAgICAgICAgICAgICAgIGVbMTI0ODVdID0gNDgsIGsgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbCA9IGkgPj4+IDAgPCAxMSA/IDE2IDogaSArIDExICYgLTgsIGsgPSBBIC0gOCB8IDAsIHUgPSBlW2sgKyA0ID4+IDJdLCB0ID0gdSAmIC04OwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoISh1ICYgMykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobCA+Pj4gMCA8IDI1NiB8fCB0ID4+PiAwID49IGwgKyA0ID4+PiAwICYmIChyID0gaywgdCAtIGwgPj4+IDAgPD0gZVsxMzA3OF0gPDwgMSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYSA9IHQgKyBrIHwgMDsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAwID49IGwgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gdCAtIGwgfCAwLCBmID4+PiAwIDwgMTYpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBlW2sgKyA0ID4+IDJdID0gdSAmIDEgfCBsIHwgMiwgciA9IGwgKyBrIHwgMCwgZVtyICsgNCA+PiAyXSA9IGYgfCAzLCBlW2EgKyA0ID4+IDJdID0gZVthICsgNCA+PiAyXSB8IDEsIHVpKHIsIGYpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbMTI5NjRdID09IChhIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCArIGVbMTI5NjFdIHwgMCwgdCA+Pj4gMCA8PSBsID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgZVtrICsgNCA+PiAyXSA9IHUgJiAxIHwgbCB8IDIsIGYgPSBsICsgayB8IDAsIHIgPSB0IC0gbCB8IDAsIGVbZiArIDQgPj4gMl0gPSByIHwgMSwgZVsxMjk2MV0gPSByLCBlWzEyOTY0XSA9IGY7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVsxMjk2M10gPT0gKGEgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0ICsgZVsxMjk2MF0gfCAwLCB0ID4+PiAwIDwgbCA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIHIgPSB0IC0gbCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwID49IDE2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgNCA+PiAyXSA9IHUgJiAxIHwgbCB8IDIsIGYgPSBsICsgayB8IDAsIGVbZiArIDQgPj4gMl0gPSByIHwgMSwgdCA9IHQgKyBrIHwgMCwgZVt0ID4+IDJdID0gciwgZVt0ICsgNCA+PiAyXSA9IGVbdCArIDQgPj4gMl0gJiAtMjsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVbayArIDQgPj4gMl0gPSB0IHwgdSAmIDEgfCAyLCByID0gdCArIGsgfCAwLCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSB8IDEsIHIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZVsxMjk2M10gPSBmLCBlWzEyOTYwXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbYSArIDQgPj4gMl0sIGYgJiAyIHx8IChvID0gdCArIChmICYgLTgpIHwgMCwgbyA+Pj4gMCA8IGwgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBoID0gbyAtIGwgfCAwLCBuID0gZVthICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPj4+IDAgPD0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVthICsgOCA+PiAyXSwgKHIgfCAwKSA9PSAobiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IDUxODMyLCB3ID0gZVsxMjk1OF0gJiBoMShmID4+PiAzIHwgMCksIGVbcyA+PiAyXSA9IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW3IgKyAxMiA+PiAyXSA9IG4sIGVbbiArIDggPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZyA9IGVbYSArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSAhPSAoYSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbYSArIDggPj4gMl0sIGVbciArIDEyID4+IDJdID0gbiwgZVtuICsgOCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2EgKyAyMCA+PiAyXSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBhICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW2EgKyAxNiA+PiAyXSwgIXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYSArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHQgPSBmLCBuID0gciwgZiA9IHIgKyAyMCB8IDAsIHIgPSBlW3IgKyAyMCA+PiAyXSwgISghciAmJiAoZiA9IG4gKyAxNiB8IDAsIHIgPSBlW24gKyAxNiA+PiAyXSwgIXIpKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVbdCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghZykKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW2EgKyAyOCA+PiAyXSwgciA9IChmIDw8IDIpICsgNTIxMzYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyID4+IDJdID09IChhIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtyID4+IDJdID0gbiwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IDUxODM2LCB3ID0gZVsxMjk1OV0gJiBoMShmKSwgZVtzID4+IDJdID0gdzsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtnICsgMTYgPj4gMl0gPT0gKGEgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtnICsgMTYgPj4gMl0gPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtnICsgMjAgPj4gMl0gPSBuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbikKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbiArIDI0ID4+IDJdID0gZywgciA9IGVbYSArIDE2ID4+IDJdLCByICYmIChlW24gKyAxNiA+PiAyXSA9IHIsIGVbciArIDI0ID4+IDJdID0gbiksIHIgPSBlW2EgKyAyMCA+PiAyXSwgIXIpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBlW24gKyAyMCA+PiAyXSA9IHIsIGVbciArIDI0ID4+IDJdID0gbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGggPj4+IDAgPD0gMTUpIHsKICAgICAgICAgICAgICAgICAgICAgIGVbayArIDQgPj4gMl0gPSB1ICYgMSB8IG8gfCAyLCByID0gayArIG8gfCAwLCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSB8IDE7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlW2sgKyA0ID4+IDJdID0gdSAmIDEgfCBsIHwgMiwgZiA9IGwgKyBrIHwgMCwgZVtmICsgNCA+PiAyXSA9IGggfCAzLCByID0gayArIG8gfCAwLCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSB8IDEsIHVpKGYsIGgpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHIgPSBrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGsgPSByICsgOCB8IDAsIHIgfHwgKHIgPSB2MShpKSwgayA9IDAsICFyKSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGYgPSBlW0EgLSA0ID4+IDJdLCBmID0gKGYgJiAzID8gLTQgOiAtOCkgKyAoZiAmIC04KSB8IDAsIEYyKHIsIEEsIGkgPj4+IDAgPiBmID4+PiAwID8gZiA6IGkpLCBSKEEpLCBrID0gcjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gbGsoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDA7CiAgICAgICAgICAgICAgbiA9IFggLSAxNiB8IDAsIFggPSBuLCBlW0EgKyA4ID4+IDJdID09IDE2ID8gbCA9IGVbQSArIDE1NiA+PiAyXSArIFooZVtBICsgMjA0ID4+IDJdLCA1NjQ0KSB8IDAgOiBsID0gZVtBICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFyKSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjg2OSwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYSA9IGVbQSArIDcyID4+IDJdLCBrID0gMSwgaDIoaSwgbiArIDggfCAwLCAxKSwgdCA9IGVbbiArIDggPj4gMl0sIHQgPj4+IDAgPj0gMikgewogICAgICAgICAgICAgICAgICBRKGYsIDIsIDIwMjc2LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgodCArIDEgfCAwKSAhPSAociB8IDApKSB7CiAgICAgICAgICAgICAgICAgIGsgPSAwLCBRKGYsIDIsIDY4NjksIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZiA9IGVbYSArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW2wgKyA1NTg0ID4+IDJdLCBmID4+PiAwID49IDgpCiAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gZiAmIC04LCByID0gMDsgZVtrICsgODYzNiA+PiAyXSA9IDAsIGVbayArIDc1NTYgPj4gMl0gPSAwLCBlW2sgKyA2NDc2ID4+IDJdID0gMCwgZVtrICsgNTM5NiA+PiAyXSA9IDAsIGVbayArIDQzMTYgPj4gMl0gPSAwLCBlW2sgKyAzMjM2ID4+IDJdID0gMCwgZVtrICsgMjE1NiA+PiAyXSA9IDAsIGVbayArIDEwNzYgPj4gMl0gPSAwLCBrID0gayArIDg2NDAgfCAwLCByID0gciArIDggfCAwLCAoYSB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgaWYgKGYgPSBmICYgNywgIWYpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZm9yIChyID0gMDsgZVtrICsgMTA3NiA+PiAyXSA9IDAsIGsgPSBrICsgMTA4MCB8IDAsIHIgPSByICsgMSB8IDAsIChmIHwgMCkgIT0gKHIgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyID0gZVtsICsgNTYwOCA+PiAyXSwgciAmJiAoUihyKSwgZVtsICsgNTYwOCA+PiAyXSA9IDAsIHQgPSBlW24gKyA4ID4+IDJdKSwgIXQpIHsKICAgICAgICAgICAgICAgICAgayA9IDE7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKGEgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICBpID0gaSArIDEgfCAwLCBoMihpLCBuICsgMTIgfCAwLCAxKTsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmICghZVtsICsgNTYzMiA+PiAyXSB8fCAoZiA9IGVbbCArIDU2MjggPj4gMl0sIGVbZiA+PiAyXSAhPSBlW24gKyAxMiA+PiAyXSkgfHwgKHQgPSBlW2YgKyA0ID4+IDJdLCB1ID0gZVtBICsgNzIgPj4gMl0sICh0IHwgMCkgIT0gZVt1ICsgMTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbZiArIDggPj4gMl0sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gMCwgdCA9IFoodCwgdCksIGVbciArIDE2ID4+IDJdICE9IChaKHQsIGVbKGVbciA+PiAyXSA8PCAyKSArIDMxMjAwID4+IDJdKSB8IDApIHx8IChvID0gVTIodCA8PCAyKSwgZVtsICsgNTYwOCA+PiAyXSA9IG8sICFvKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIG8yW2VbKGVbciA+PiAyXSA8PCAyKSArIDMxNjMyID4+IDJdXShlW3IgKyAxMiA+PiAyXSwgbywgdCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtmICsgMTIgPj4gMl0sICFyKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDAsIGYgPSBlW3UgKyAxNiA+PiAyXSwgZVtyICsgMTYgPj4gMl0gIT0gKFooZiwgZVsoZVtyID4+IDJdIDw8IDIpICsgMzEyMDAgPj4gMl0pIHwgMCkgfHwgKHQgPSBVMihmIDw8IDIpLCAhdCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIG8yW2VbKGVbciA+PiAyXSA8PCAyKSArIDMxNjQ4ID4+IDJdXShlW3IgKyAxMiA+PiAyXSwgdCwgZiksIHIgPSBlW3UgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB1ID0gciAmIDcsIGsgPSBlW2wgKyA1NTg0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8IDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IHIgJiAtOCwgZiA9IDAsIHIgPSB0OyBlW2sgKyAxMDc2ID4+IDJdID0gZVtyID4+IDJdLCBlW2sgKyAyMTU2ID4+IDJdID0gZVtyICsgNCA+PiAyXSwgZVtrICsgMzIzNiA+PiAyXSA9IGVbciArIDggPj4gMl0sIGVbayArIDQzMTYgPj4gMl0gPSBlW3IgKyAxMiA+PiAyXSwgZVtrICsgNTM5NiA+PiAyXSA9IGVbciArIDE2ID4+IDJdLCBlW2sgKyA2NDc2ID4+IDJdID0gZVtyICsgMjAgPj4gMl0sIGVbayArIDc1NTYgPj4gMl0gPSBlW3IgKyAyNCA+PiAyXSwgZVtrICsgODYzNiA+PiAyXSA9IGVbciArIDI4ID4+IDJdLCBrID0gayArIDg2NDAgfCAwLCByID0gciArIDMyIHwgMCwgZiA9IGYgKyA4IHwgMCwgKG8gfCAwKSAhPSAoZiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSAwLCAhdSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2sgKyAxMDc2ID4+IDJdID0gZVtyID4+IDJdLCBrID0gayArIDEwODAgfCAwLCByID0gciArIDQgfCAwLCBmID0gZiArIDEgfCAwLCAodSB8IDApICE9IChmIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBSKHQpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChrID0gMSwgYSA9IGEgKyAxIHwgMCwgIShhID4+PiAwIDwgZFtuICsgOCA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gbiArIDE2IHwgMCwgayB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gTTQoQSwgaSwgcikgewogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMDsKICAgICAgICAgICAgICBrID0gWCAtIDE2IHwgMCwgWCA9IGssIHQgPSBlW0EgKyA0NCA+PiAyXSwgQiA9IGVbQSArIDQ4ID4+IDJdLCBhID0gZVtBICsgMjA4ID4+IDJdLCBlW2EgKyAxNiA+PiAyXSA9IDAsIGVbQSArIDggPj4gMl0gPSAwLCBlW2sgKyA4ID4+IDJdID0gMCwgbiA9IGsgKyA4IHwgMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIWNyKEEsIHQsIEIsIG4sIHIpIHx8ICh1ID0gZVtrICsgOCA+PiAyXSwgbyA9IEIgLSB1IHwgMCwgZyA9IHQgKyB1IHwgMCwgIShJWyhlW0EgKyAxNTYgPj4gMl0gKyBaKGVbQSArIDIwNCA+PiAyXSwgNTY0NCkgfCAwKSArIDU2NDAgfCAwXSAmIDQpIHwgKEcyW0EgKyA4MCA+PiAxXSAtIDMgJiA2NTUzNSkgPj4+IDAgPCA0IHx8IChlW2sgKyA4ID4+IDJdID0gMCwgaDYoQSwgZywgbiksIG4gPSBlW2sgKyA4ID4+IDJdLCBvID0gbyAtIG4gfCAwLCBnID0gbiArIGcgfCAwLCB1ID0gbiArIHUgfCAwKSwgZVtrICsgOCA+PiAyXSA9IDAsICFmcihBLCBhLCBnLCBrICsgOCB8IDAsIG8sIHIpKSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGYgPSBlW2sgKyA4ID4+IDJdICsgdSB8IDAsIGsyKHQgKyA2IHwgMCwgZiwgNCksIGVbQSArIDE2ID4+IDJdICYmICh1ID0gZVtBICsgMjAgPj4gMl0gPyAxIDogMiwgazIoZVtBICsgMzYgPj4gMl0sIGVbQSArIDIwNCA+PiAyXSwgdSksIHUgPSB1ICsgZVtBICsgMzYgPj4gMl0gfCAwLCBlW0EgKyAzNiA+PiAyXSA9IHUsIGsyKHUsIGYsIDQpLCBlW0EgKyAzNiA+PiAyXSA9IGVbQSArIDM2ID4+IDJdICsgNCksIGMgPSBlW0EgKyAxNTYgPj4gMl0sIHYgPSBlW0EgKyAyMDggPj4gMl0sIGcgPSAwLCBDID0gQSArIDgwIHwgMCwgcyA9IGVbQSArIDIwNCA+PiAyXSwgaCA9IG9yKEMsIDAsIHMpLCBlW0EgKyAxMiA+PiAyXSA9IGVbQSArIDEyID4+IDJdICsgMSwgdSA9IEIgLSBmIHwgMCwgdCA9IGYgKyB0IHwgMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmIChoID4+PiAwIDwgMikgewogICAgICAgICAgICAgICAgICAgICAgZiA9IHU7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSAxLCBmID0gdTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyA4ID4+IDJdID0gbywgZVtrICsgMTIgPj4gMl0gPSAwLCBhID0gayArIDEyIHwgMCwgIWNyKEEsIHQsIGYsIGEsIHIpIHx8IChuID0gZVtrICsgMTIgPj4gMl0sIGVbayArIDEyID4+IDJdID0gMCwgdyA9IHQgKyBuIHwgMCwgZiA9IGYgLSBuIHwgMCwgIWZyKEEsIHYsIHcsIGEsIGYsIHIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gdCArIDYgfCAwLCBhID0gZVtrICsgMTIgPj4gMl0sIHQgPSBhICsgbiB8IDAsIGsyKGwsIHQsIDQpLCBlW0EgKyAxNiA+PiAyXSAmJiAobCA9IGVbQSArIDIwID4+IDJdID8gMSA6IDIsIGsyKGVbQSArIDM2ID4+IDJdLCBlW0EgKyAyMDQgPj4gMl0sIGwpLCBsID0gbCArIGVbQSArIDM2ID4+IDJdIHwgMCwgZVtBICsgMzYgPj4gMl0gPSBsLCBrMihsLCB0LCA0KSwgZVtBICsgMzYgPj4gMl0gPSBlW0EgKyAzNiA+PiAyXSArIDQpLCBmID0gZiAtIGEgfCAwLCB0ID0gYSArIHcgfCAwLCBnID0gYSArIChuICsgZyB8IDApIHwgMCwgZVtBICsgMTIgPj4gMl0gPSBlW0EgKyAxMiA+PiAyXSArIDEsIG8gPSBvICsgMSB8IDAsIChoIHwgMCkgPT0gKG8gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChjID0gYyArIFoocywgNTY0NCkgfCAwLCBlW2MgKyA0MjAgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMTsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW3YgKyAxNiA+PiAyXSA9IG4sIG8gPSAwLCBzID0gb3IoQywgbiwgZVtBICsgMjA0ID4+IDJdKSwgcykKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gPSBvLCBlW2sgKyAxMiA+PiAyXSA9IDAsIGggPSBrICsgMTIgfCAwLCAhY3IoQSwgdCwgZiwgaCwgcikgfHwgKGEgPSBlW2sgKyAxMiA+PiAyXSwgZVtrICsgMTIgPj4gMl0gPSAwLCB3ID0gdCArIGEgfCAwLCBmID0gZiAtIGEgfCAwLCAhZnIoQSwgdiwgdywgaCwgZiwgcikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IHQgKyA2IHwgMCwgaCA9IGVbayArIDEyID4+IDJdLCB0ID0gaCArIGEgfCAwLCBrMihsLCB0LCA0KSwgZVtBICsgMTYgPj4gMl0gJiYgKGwgPSBlW0EgKyAyMCA+PiAyXSA/IDEgOiAyLCBrMihlW0EgKyAzNiA+PiAyXSwgZVtBICsgMjA0ID4+IDJdLCBsKSwgbCA9IGwgKyBlW0EgKyAzNiA+PiAyXSB8IDAsIGVbQSArIDM2ID4+IDJdID0gbCwgazIobCwgdCwgNCksIGVbQSArIDM2ID4+IDJdID0gZVtBICsgMzYgPj4gMl0gKyA0KSwgZiA9IGYgLSBoIHwgMCwgdCA9IGggKyB3IHwgMCwgZyA9IGggKyAoYSArIGcgfCAwKSB8IDAsIGVbQSArIDEyID4+IDJdID0gZVtBICsgMTIgPj4gMl0gKyAxLCBvID0gbyArIDEgfCAwLCAocyB8IDApID09IChvIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgMSB8IDAsICEobiA+Pj4gMCA8PSBkW2MgKyA0MjAgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgbCA9IGksIGkgPSAoZyAtIHUgfCAwKSArIEIgfCAwLCAoTDAobCwgZVtBICsgNDQgPj4gMl0sIGksIHIpIHwgMCkgIT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBmID0gMSwgZVtBICsgMjA0ID4+IDJdID0gZVtBICsgMjA0ID4+IDJdICsgMTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGsgKyAxNiB8IDAsIGY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gbHIoQSwgaSwgciwgZiwgaywgdCwgbiwgbCkgewogICAgICAgICAgICAgIHZhciBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gMCwgQyA9IDAsIG0gPSAwOwogICAgICAgICAgICAgIGggPSBlW2VbQSArIDI0ID4+IDJdICsgMjQgPj4gMl0gKyBaKGksIDUyKSB8IDAsIGcgPSBlW2ggKyA0ID4+IDJdLCBvID0gZyAtIDEgfCAwLCB3ID0gZVtBICsgNjAgPj4gMl0sIHUgPSBvICsgdyB8IDAsIEIgPSAwIC0gIWcgfCAwLCBhID0gQiwgdiA9IGVbZVtlW0EgKyAyMCA+PiAyXSA+PiAyXSArIDIwID4+IDJdICsgWihpLCA3NikgfCAwLCBzID0gZVt2ICsgMTIgPj4gMl0sIGEgPSBuMCh1LCB1ID4+PiAwIDwgdyA+Pj4gMCA/IGEgKyAxIHwgMCA6IGEsIGcsIDApLCBjID0gYSA+Pj4gMCA+IHMgPj4+IDAgPyBzIDogYSwgdSA9IGVbaCA+PiAyXSwgaCA9IHUgLSAxIHwgMCwgQyA9IGVbQSArIDU2ID4+IDJdLCBzID0gaCArIEMgfCAwLCB3ID0gMCAtICF1IHwgMCwgYSA9IHcsIG0gPSBlW3YgKyA4ID4+IDJdLCBhID0gbjAocywgcyA+Pj4gMCA8IEMgPj4+IDAgPyBhICsgMSB8IDAgOiBhLCB1LCAwKSwgcyA9IGEgPj4+IDAgPiBtID4+PiAwID8gbSA6IGEsIGEgPSBCLCBtID0gZVt2ICsgNCA+PiAyXSwgQyA9IGVbQSArIDUyID4+IDJdLCBvID0gQyArIG8gfCAwLCBhID0gbjAobywgbyA+Pj4gMCA8IEMgPj4+IDAgPyBhICsgMSB8IDAgOiBhLCBnLCAwKSwgbyA9IGEgPj4+IDAgPCBtID4+PiAwID8gbSA6IGEsIGEgPSB3LCBCID0gZVt2ID4+IDJdLCBnID0gaCwgaCA9IGVbQSArIDQ4ID4+IDJdLCBnID0gZyArIGggfCAwLCBhID0gbjAoZywgZyA+Pj4gMCA8IGggPj4+IDAgPyBhICsgMSB8IDAgOiBhLCB1LCAwKSwgYSA9IGEgPj4+IDAgPCBCID4+PiAwID8gQiA6IGEsIGcgPSAwLCBCID0gZVsoZVtlW0EgKyAzMiA+PiAyXSArIDU1ODQgPj4gMl0gKyBaKGksIDEwODApIHwgMCkgKyAyMCA+PiAyXSwgciA9IGVbdiArIDIwID4+IDJdICsgKHIgPyAwIC0gciB8IDAgOiAtMSkgfCAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghcikgewogICAgICAgICAgICAgICAgICBBID0gcywgZyA9IGEsIGkgPSBvOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGggPSByIC0gMSB8IDAsIHUgPSAoZiAmIDEpIDw8IGgsIHUgPj4+IDAgPCBhID4+PiAwICYmIChBID0gciAmIDMxLCBnID0gYSAtIHUgfCAwLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IChhID0gLTEgPDwgQSwgQSA9IDApIDogKGkgPSAoMSA8PCBBKSAtIDEgJiAtMSA+Pj4gMzIgLSBBLCBBID0gLTEgPDwgQSwgYSA9IGkgfCBBKSwgaSA9IEEgXiAtMSwgQSA9IGcgKyBpIHwgMCwgYSA9IGEgXiAtMSwgYSA9IEEgPj4+IDAgPCBpID4+PiAwID8gYSArIDEgfCAwIDogYSwgaSA9IEEsIEEgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gZyA9IGEgPj4+IEEgfCAwIDogZyA9ICgoMSA8PCBBKSAtIDEgJiBhKSA8PCAzMiAtIEEgfCBpID4+PiBBKSwgQSA9IDAsIGkgPSAwLCBmID0gZiA+Pj4gMSA8PCBoLCBmID4+PiAwIDwgbyA+Pj4gMCAmJiAoaSA9IHIgJiAzMSwgdyA9IG8gLSBmIHwgMCwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyAoYSA9IC0xIDw8IGksIGkgPSAwKSA6IChhID0gKDEgPDwgaSkgLSAxICYgLTEgPj4+IDMyIC0gaSwgaSA9IC0xIDw8IGksIGEgPSBhIHwgaSksIG8gPSBpIF4gLTEsIGkgPSB3ICsgbyB8IDAsIGEgPSBhIF4gLTEsIGEgPSBpID4+PiAwIDwgbyA+Pj4gMCA/IGEgKyAxIHwgMCA6IGEsIG8gPSBpLCBpID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IGkgPSBhID4+PiBpIHwgMCA6IGkgPSAoKDEgPDwgaSkgLSAxICYgYSkgPDwgMzIgLSBpIHwgbyA+Pj4gaSksIHUgPj4+IDAgPCBzID4+PiAwICYmIChBID0gciAmIDMxLCBvID0gcyAtIHUgfCAwLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IChhID0gLTEgPDwgQSwgQSA9IDApIDogKGEgPSAoMSA8PCBBKSAtIDEgJiAtMSA+Pj4gMzIgLSBBLCBBID0gLTEgPDwgQSwgYSA9IGEgfCBBKSwgdSA9IEEgXiAtMSwgQSA9IG8gKyB1IHwgMCwgYSA9IGEgXiAtMSwgYSA9IEEgPj4+IDAgPCB1ID4+PiAwID8gYSArIDEgfCAwIDogYSwgdSA9IEEsIEEgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gQSA9IGEgPj4+IEEgfCAwIDogQSA9ICgoMSA8PCBBKSAtIDEgJiBhKSA8PCAzMiAtIEEgfCB1ID4+PiBBKSwgZiA+Pj4gMCA+PSBjID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgIGMgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbyA9IGMgLSBmIHwgMCwgZiA9IHIgJiAzMSwgKHIgJiA2MykgPj4+IDAgPj0gMzIgPyAoYSA9IC0xIDw8IGYsIGYgPSAwKSA6IChhID0gKDEgPDwgZikgLSAxICYgLTEgPj4+IDMyIC0gZiwgZiA9IC0xIDw8IGYsIGEgPSBhIHwgZiksIHUgPSBmIF4gLTEsIGYgPSBvICsgdSB8IDAsIGEgPSBhIF4gLTEsIGEgPSBmID4+PiAwIDwgdSA+Pj4gMCA/IGEgKyAxIHwgMCA6IGEsIHUgPSBmLCBmID0gciAmIDMxLCAociAmIDYzKSA+Pj4gMCA+PSAzMiA/IGMgPSBhID4+PiBmIHwgMCA6IGMgPSAoKDEgPDwgZikgLSAxICYgYSkgPDwgMzIgLSBmIHwgdSA+Pj4gZjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHIgPSAoQiB8IDApID09IDEgPyAyIDogMywgZiA9IHIgKyBBIHwgMCwgZiA9IChBID4+PiAwID4gZiA+Pj4gMCA/IC0xIDogZikgPj4+IDAgPiBrID4+PiAwLCBBID0gciArIGMgfCAwLCBmID0gZiAmIChBID4+PiAwIDwgYyA+Pj4gMCA/IC0xIDogQSkgPj4+IDAgPiB0ID4+PiAwLCBBID0gZyAtIHIgfCAwLCBmID0gZiAmIChBID4+PiAwIDw9IGcgPj4+IDAgPyBBIDogMCkgPj4+IDAgPCBuID4+PiAwLCBBID0gaSAtIHIgfCAwLCBmICYgKEEgPj4+IDAgPD0gaSA+Pj4gMCA/IEEgOiAwKSA+Pj4gMCA8IGwgPj4+IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUzQoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDA7CiAgICAgICAgICAgICAgdSA9IFggLSAyNTYgfCAwLCBYID0gdTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIUEpIHsKICAgICAgICAgICAgICAgICAgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIShlW0EgPj4gMl0gPT0gKGkgfCAwKSAmIGVbQSArIDQgPj4gMl0gPT0gKHIgfCAwKSkpIHsKICAgICAgICAgICAgICAgICAgZm9yIChlW0EgKyA0ID4+IDJdID0gciwgZVtBID4+IDJdID0gaSwgZVt1ID4+IDJdID0gciwgZVt1ICsgMTI4ID4+IDJdID0gaSwgayA9IHIsIG4gPSBpOyB3ID0gYSwgYSA9IGEgKyAxIHwgMCwgbCA9IGEgPDwgMiwgcyA9IChrICsgMSB8IDApIC8gMiB8IDAsIGVbbCArIHUgPj4gMl0gPSBzLCBvID0gbCArICh1ICsgMTI4IHwgMCkgfCAwLCBsID0gKG4gKyAxIHwgMCkgLyAyIHwgMCwgZVtvID4+IDJdID0gbCwgaCA9IFooaywgbiksIHQgPSBoICsgdCB8IDAsIGsgPSBzLCBuID0gbCwgaCA+Pj4gMCA+IDE7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSB0OwogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDEyID4+IDJdLCAhaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgUihpKSwgZVtBICsgMTIgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0IDw8IDQsIHQgPj4+IDAgPD0gZFtBICsgMTYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBvMChlW0EgKyAxMiA+PiAyXSwgdCksIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFEoZiwgMSwgMTA0MTIsIDApLCBpID0gZVtBICsgMTIgPj4gMl0sICFpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIFIoaSksIGVbQSArIDEyID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIFIoQSksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVtBICsgMTIgPj4gMl0gPSBpLCByID0gaSwgaSA9IGVbQSArIDE2ID4+IDJdLCBkMihyICsgaSB8IDAsIDAsIHQgLSBpIHwgMCksIGVbQSArIDE2ID4+IDJdID0gdCwgciA9IGVbQSArIDQgPj4gMl0sIGkgPSBlW0EgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW0EgKyAxMiA+PiAyXSwgdykKICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSAwLCBrID0gKFooaSwgcikgPDwgNCkgKyBuIHwgMCwgdCA9IGs7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICBpID0gZiA8PCAyLCBvID0gZVtpICsgdSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvIHwgMCkgPD0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gbyAtIDEgfCAwLCBnID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtpICsgKHUgKyAxMjggfCAwKSA+PiAyXSwgKHIgfCAwKSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gbyAmIDEsIGEgPSAwLCAobyB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gdCwgdCA9IHI7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbiA+PiAyXSA9IGssICh0IHwgMCkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbiArIDE2IHwgMCwgayA9IGsgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtuICsgMTYgPj4gMl0gPSBrLCBrID0gayArIDE2IHwgMCwgbiA9IG4gKyAzMiB8IDAsIGwgPSAodCB8IDApID4gMiwgdCA9IHQgLSAyIHwgMCwgbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gKChnIHwgMCkgPT0gKGggfCAwKSB8IGcpICYgMSwgdCA9IGwgPyBrIDogaSArIChyIDw8IDQpIHwgMCwgayA9IGwgPyBrIDogaSwgZyA9IGcgKyAxIHwgMCwgKG8gfCAwKSA9PSAoZyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gbyAmIDIxNDc0ODM2NDY7IGkgPSAoYSB8IDApID09IChoIHwgMCksIGEgPSBhICsgMiB8IDAsIGsgPSBpID8gayA6IHQsIHQgPSBrLCBpID0gaywgZyA9IGcgKyAyIHwgMCwgKGwgfCAwKSAhPSAoZyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0ID0gKHIgPDwgNCkgKyBpIHwgMCwgciA9ICgoYSB8IDApID09IChoIHwgMCkgfCBhKSAmIDEsIHQgPSByID8gayA6IHQsIGsgPSByID8gayA6IGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGYgKyAxIHwgMCwgKHcgfCAwKSA9PSAoZiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbbiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAociA9IGVbQSArIDggPj4gMl0sICFyKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyAxMiA+PiAyXSwgciA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICBmb3IgKGkgPSByICYgLTQsIG4gPSAwOyBlW2sgKyA2MCA+PiAyXSA9IDAsIGVbayArIDUyID4+IDJdID0gOTk5LCBlW2sgKyA1NiA+PiAyXSA9IDAsIGVbayArIDQ0ID4+IDJdID0gMCwgZVtrICsgMzYgPj4gMl0gPSA5OTksIGVbayArIDQwID4+IDJdID0gMCwgZVtrICsgMjggPj4gMl0gPSAwLCBlW2sgKyAyMCA+PiAyXSA9IDk5OSwgZVtrICsgMjQgPj4gMl0gPSAwLCBlW2sgKyAxMiA+PiAyXSA9IDAsIGVbayArIDQgPj4gMl0gPSA5OTksIGVbayArIDggPj4gMl0gPSAwLCBrID0gayAtIC02NCB8IDAsIG4gPSBuICsgNCB8IDAsIChpIHwgMCkgIT0gKG4gfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGlmIChpID0gciAmIDMsICFpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yIChuID0gMDsgZVtrICsgMTIgPj4gMl0gPSAwLCBlW2sgKyA0ID4+IDJdID0gOTk5LCBlW2sgKyA4ID4+IDJdID0gMCwgayA9IGsgKyAxNiB8IDAsIG4gPSBuICsgMSB8IDAsIChpIHwgMCkgIT0gKG4gfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gdSArIDI1NiB8IDAsIEE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZ2koQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMDsKICAgICAgICAgICAgICBpZiAobiA9IGVbQSArIDE2ID4+IDJdLCBuID4+PiAwID49IDMyKQogICAgICAgICAgICAgICAgcmV0dXJuIGVbQSArIDggPj4gMl07CiAgICAgICAgICAgICAgZiA9IGVbQSArIDIwID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID49IDQpIHsKICAgICAgICAgICAgICAgICAgaSA9IGVbQSA+PiAyXSwgciA9IGVbaSAtIDMgPj4gMl0sIGYgPSBmIC0gNCB8IDAsIGVbQSArIDIwID4+IDJdID0gZiwgZVtBID4+IDJdID0gaSAtIDQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKGYgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgbyA9IGYgJiAxLCBpID0gZVtBID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoKGYgfCAwKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgayA9IDI0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZm9yICh1ID0gZiAmIDIxNDc0ODM2NDYsIGsgPSAyNDsgbCA9IGkgLSAxIHwgMCwgZVtBID4+IDJdID0gbCwgYSA9IElbaSB8IDBdLCBpID0gaSAtIDIgfCAwLCBlW0EgPj4gMl0gPSBpLCBlW0EgKyAyMCA+PiAyXSA9IGYgLSAxLCBsID0gSVtsIHwgMF0sIGYgPSBmIC0gMiB8IDAsIGVbQSArIDIwID4+IDJdID0gZiwgciA9IGEgPDwgayB8IHIgfCBsIDw8IGsgLSA4LCBrID0gayAtIDE2IHwgMCwgdCA9IHQgKyAyIHwgMCwgKHUgfCAwKSAhPSAodCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbyAmJiAoZVtBID4+IDJdID0gaSAtIDEsIGkgPSBJW2kgfCAwXSwgZVtBICsgMjAgPj4gMl0gPSBmIC0gMSwgciA9IGkgPDwgayB8IHIpLCBmID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyAyNCA+PiAyXSwgdSA9IHIgJiAyNTUsIGVbQSArIDI0ID4+IDJdID0gdSA+Pj4gMCA+IDE0MywgaSA9IGkgJiYgKHIgJiAyMTMwNzA2NDMyKSA9PSAyMTMwNzA2NDMyID8gNyA6IDgsIGwgPSBpICsgKHIgPj4+IDAgPD0gMjQxNTkxOTEwMyA/IDggOiAociAmIDgzMjMwNzIpID09IDgzMjMwNzIgPyA3IDogOCkgfCAwLCB0ID0gciA+Pj4gMTYgJiAyNTUsIGEgPSBsICsgKHQgPj4+IDAgPD0gMTQzID8gOCA6IChyICYgMzI1MTIpID09IDMyNTEyID8gNyA6IDgpIHwgMCwgayA9IHIgPj4+IDggJiAyNTUsIG8gPSBhICsgKG4gKyAoayA+Pj4gMCA8PSAxNDMgPyA4IDogKHIgJiAxMjcpID09IDEyNyA/IDcgOiA4KSB8IDApIHwgMCwgZVtBICsgMTYgPj4gMl0gPSBvLCBnID0gZVtBICsgMTIgPj4gMl0sIGkgPSB0IDw8IGkgfCByID4+PiAyNCB8IGsgPDwgbCB8IHUgPDwgYSwgciA9IG4gJiAzMSwgKG4gJiA2MykgPj4+IDAgPj0gMzIgPyAoayA9IGkgPDwgciwgaSA9IDApIDogKGsgPSAoMSA8PCByKSAtIDEgJiBpID4+PiAzMiAtIHIsIGkgPSBpIDw8IHIpLCBuID0gaSB8IGVbQSArIDggPj4gMl0sIGkgPSBrIHwgZywgbCA9IGksIGVbQSArIDggPj4gMl0gPSBuLCBlW0EgKyAxMiA+PiAyXSA9IGksIG8gPj4+IDAgPD0gMzEpIHsKICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgPj0gNCkgewogICAgICAgICAgICAgICAgICAgIGkgPSBlW0EgPj4gMl0sIHIgPSBlW2kgLSAzID4+IDJdLCBlW0EgKyAyMCA+PiAyXSA9IGYgLSA0LCBlW0EgPj4gMl0gPSBpIC0gNDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICByID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGEgPSBmICYgMSwgaSA9IGVbQSA+PiAyXTsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgIGsgPSAyNCwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBmICYgMjE0NzQ4MzY0NiwgayA9IDI0LCByID0gMCwgdCA9IDA7IGggPSBpIC0gMSB8IDAsIGVbQSA+PiAyXSA9IGgsIHMgPSBJW2kgfCAwXSwgaSA9IGkgLSAyIHwgMCwgZVtBID4+IDJdID0gaSwgZVtBICsgMjAgPj4gMl0gPSBmIC0gMSwgaCA9IElbaCB8IDBdLCBmID0gZiAtIDIgfCAwLCBlW0EgKyAyMCA+PiAyXSA9IGYsIHIgPSBzIDw8IGsgfCByIHwgaCA8PCBrIC0gOCwgayA9IGsgLSAxNiB8IDAsIHQgPSB0ICsgMiB8IDAsIChnIHwgMCkgIT0gKHQgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBlW0EgPj4gMl0gPSBpIC0gMSwgaSA9IElbaSB8IDBdLCBlW0EgKyAyMCA+PiAyXSA9IGYgLSAxLCByID0gaSA8PCBrIHwgcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSByICYgMjU1LCBlW0EgKyAyNCA+PiAyXSA9IGYgPj4+IDAgPiAxNDMsIHUgPSB1ID4+PiAwIDw9IDE0MyA/IDggOiAociAmIDIxMzA3MDY0MzIpID09IDIxMzA3MDY0MzIgPyA3IDogOCwgYSA9IHUgKyAociA+Pj4gMCA8PSAyNDE1OTE5MTAzID8gOCA6IChyICYgODMyMzA3MikgPT0gODMyMzA3MiA/IDcgOiA4KSB8IDAsIHQgPSByID4+PiAxNiAmIDI1NSwgZyA9IGEgKyAodCA+Pj4gMCA8PSAxNDMgPyA4IDogKHIgJiAzMjUxMikgPT0gMzI1MTIgPyA3IDogOCkgfCAwLCBrID0gciA+Pj4gOCAmIDI1NSwgZVtBICsgMTYgPj4gMl0gPSBnICsgKChrID4+PiAwIDw9IDE0MyA/IDggOiAociAmIDEyNykgPT0gMTI3ID8gNyA6IDgpICsgbyB8IDApLCBpID0gQSwgQSA9IHQgPDwgdSB8IHIgPj4+IDI0IHwgayA8PCBhIHwgZiA8PCBnLCByID0gbyAmIDMxLCAobyAmIDYzKSA+Pj4gMCA+PSAzMiA/IChmID0gQSA8PCByLCBBID0gMCkgOiAoZiA9ICgxIDw8IHIpIC0gMSAmIEEgPj4+IDMyIC0gciwgQSA9IEEgPDwgciksIG4gPSBBIHwgbiwgZVtpICsgOCA+PiAyXSA9IG4sIGVbaSArIDEyID4+IDJdID0gZiB8IGw7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGFrKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwOwogICAgICAgICAgICAgIGsgPSBYIC0gODAgfCAwLCBYID0gaywgZVtrICsgNzYgPj4gMl0gPSAxOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW0EgKyAxMDQgPj4gMl0sIChmIHwgMCkgIT0gMSB8IGVbQSArIDEwOCA+PiAyXSAhPSAxIHwgKGVbQSArIDg0ID4+IDJdIHwgZVtBICsgODggPj4gMl0pIHx8ICh0ID0gZVtBICsgNzYgPj4gMl0sIGVbdCA+PiAyXSB8IGVbdCArIDQgPj4gMl0gfCAoZVt0ICsgOCA+PiAyXSAhPSBlW0EgKyA5MiA+PiAyXSB8IGVbdCArIDEyID4+IDJdICE9IGVbQSArIDk2ID4+IDJdKSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgaWYgKGYgPSAwLCAhQ2UoQSwgayArIDcyIHwgMCwgMCwgayArIDY4IHwgMCwgayAtIC02NCB8IDAsIGsgKyA2MCB8IDAsIGsgKyA1NiB8IDAsIGsgKyA1MiB8IDAsIGsgKyA3NiB8IDAsIGksIHIpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoUGUoQSwgZVtrICsgNzIgPj4gMl0sIDAsIDAsIGksIHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDc2ID4+IDJdLCBlW2kgKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGYgPSAxOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgUShyLCAxLCAxOTA2MSwgMCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmb3IgKGkgPSBlW2kgKyAyNCA+PiAyXSwgciA9IDA7IGYgPSBaKHIsIDUyKSwgUihlWyhmICsgaSB8IDApICsgNDQgPj4gMl0pLCB0ID0gZVtBICsgNzYgPj4gMl0sIGkgPSBlW3QgKyAyNCA+PiAyXSwgbiA9IGYgKyBpIHwgMCwgbCA9IGVbQSArIDIwOCA+PiAyXSwgYSA9IGVbZVtlW2wgKyAyMCA+PiAyXSA+PiAyXSArIDIwID4+IDJdICsgWihyLCA3NikgfCAwLCBlW24gKyA0NCA+PiAyXSA9IGVbYSArIDM2ID4+IDJdLCBlW24gKyAzNiA+PiAyXSA9IGVbKGYgKyBlW2VbbCArIDI0ID4+IDJdICsgMjQgPj4gMl0gfCAwKSArIDM2ID4+IDJdLCBlW2EgKyAzNiA+PiAyXSA9IDAsIGYgPSAxLCByID0gciArIDEgfCAwLCByID4+PiAwIDwgZFt0ICsgMTYgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICghKCFlW2VbQSArIDE1NiA+PiAyXSArIDU1OTYgPj4gMl0gfCAoKGYgfCAwKSAhPSAxIHwgZVtBICsgMTA4ID4+IDJdICE9IDEpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyA3MiA+PiAyXSA9IDAsIGVbQSArIDIwNCA+PiAyXSA9IDAsIGVbQSArIDggPj4gMl0gPSBlW0EgKyA4ID4+IDJdIHwgMTI4LCBmID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgIUNlKEEsIGsgKyA3MiB8IDAsIDAsIGsgKyA2OCB8IDAsIGsgLSAtNjQgfCAwLCBrICsgNjAgfCAwLCBrICsgNTYgfCAwLCBrICsgNTIgfCAwLCBrICsgNzYgfCAwLCBpLCByKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIGlmICghZVtrICsgNzYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBmID0gZVtrICsgNzIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZiArIDEgfCAwLCBsID0gUGUoQSwgZiwgMCwgMCwgaSwgciksIG4gPSBaKGVbQSArIDEwNCA+PiAyXSwgZVtBICsgMTA4ID4+IDJdKSwgIWwpIHsKICAgICAgICAgICAgICAgICAgICAgIGVbayArIDQgPj4gMl0gPSBuLCBlW2sgPj4gMl0gPSB0LCBRKHIsIDEsIDE3MTkyLCBrKSwgZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVtrICsgMzYgPj4gMl0gPSBuLCBlW2sgKyAzMiA+PiAyXSA9IHQsIFEociwgNCwgMjI4NTQsIGsgKyAzMiB8IDApLCAhVTQoZVtBICsgMjA4ID4+IDJdLCBlW2VbQSArIDc2ID4+IDJdICsgMjQgPj4gMl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICBmID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICghKGVbQSArIDEwNCA+PiAyXSAhPSAxIHwgZVtBICsgMTA4ID4+IDJdICE9IDEpICYmIChuID0gZVtBICsgNzYgPj4gMl0sIGwgPSBlW0EgKyA3MiA+PiAyXSwgZVtuID4+IDJdICE9IGVbbCA+PiAyXSB8IGVbbiArIDQgPj4gMl0gIT0gZVtsICsgNCA+PiAyXSB8IChlW24gKyA4ID4+IDJdICE9IGVbbCArIDggPj4gMl0gfCBlW24gKyAxMiA+PiAyXSAhPSBlW2wgKyAxMiA+PiAyXSkpIHx8IChmID0gZVtBICsgMTU2ID4+IDJdICsgWihmLCA1NjQ0KSB8IDAsIG4gPSBlW2YgKyA1NTk2ID4+IDJdLCAhbikpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBSKG4pLCBlW2YgKyA1NTk2ID4+IDJdID0gMCwgZVtmICsgNTYwMCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChlW2sgKyAxNiA+PiAyXSA9IHQsIFEociwgNCwgMjg5NTEsIGsgKyAxNiB8IDApLCB0ID0gZVtpICsgMTIgPj4gMl0sIG4gPSB0LCBmID0gZVtpICsgOCA+PiAyXSwgdCB8IGYgPyAobCA9IGVbaSArIDU2ID4+IDJdLCB0ID0gZiAtIGwgfCAwLCBmID0gbiAtIChlW2kgKyA2MCA+PiAyXSArIChmID4+PiAwIDwgbCA+Pj4gMCkgfCAwKSB8IDApIDogKHQgPSAwLCBmID0gMCksICEoZiB8IHQpICYgZVtBICsgOCA+PiAyXSA9PSA2NCkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhICsgMSB8IDAsIGYgPSBlW0EgKyAxMDQgPj4gMl0sIChhIHwgMCkgIT0gKFooZiwgZVtBICsgMTA4ID4+IDJdKSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmID0gQzYoQSwgcik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gayArIDgwIHwgMCwgZiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdWsoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICAgICAgICBrID0gKChmIHwgMCkgIT0gMCkgKyByIHwgMCwgbiA9IGsgPj4+IDEgfCAwLCBvID0gciAtIG4gfCAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChmKSB7CiAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDwgMikKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgIGZvciAoayA9IChuIDw8IDIpICsgaSB8IDAsIHQgPSAobiA+Pj4gMCA8PSAyID8gMiA6IG4pIC0gMSB8IDAsIGYgPSAwOyBoID0gayArIChmIDw8IDIpIHwgMCwgbCA9IChmIDw8IDMpICsgQSB8IDAsIGYgPSBmICsgMSB8IDAsIGVbaCA+PiAyXSA9IGVbbCArIDQgPj4gMl0gLSAoZVsoZiA8PCAzKSArIEEgPj4gMl0gKyBlW2wgPj4gMl0gPj4gMSksIChmIHwgMCkgIT0gKHQgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBrID0gMSwgbCA9IHIgJiAxLCBsIHx8IChmID0gKHQgPDwgMykgKyBBIHwgMCwgZVsoKG4gPDwgMikgKyBpIHwgMCkgKyAodCA8PCAyKSA+PiAyXSA9IGVbZiArIDQgPj4gMl0gLSBlW2YgPj4gMl0pLCBpID0gKG4gPDwgMikgKyBpIHwgMCwgZVtBID4+IDJdID0gZVtBID4+IDJdICsgKChlW2kgPj4gMl0gPDwgMSkgKyAyID4+IDIpOwogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChvIHwgMCkgPCAyKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIGsgPSAobiBeIC0xKSArIHIgfCAwLCB0ID0gayAmIDEsIChyIC0gMiB8IDApICE9IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGcgPSBrICYgLTIsIGsgPSAwOyB1ID0gZiA8PCAyLCByID0gdSArIGkgfCAwLCBlW0EgKyB1ID4+IDJdID0gZVsoZiA8PCAzKSArIEEgPj4gMl0gKyAoKGVbciAtIDQgPj4gMl0gKyBlW3IgPj4gMl0gfCAwKSArIDIgPj4gMiksIHUgPSBmICsgMSB8IDAsIGEgPSB1IDw8IDIsIHIgPSBhICsgaSB8IDAsIGVbQSArIGEgPj4gMl0gPSBlWyh1IDw8IDMpICsgQSA+PiAyXSArICgoZVtyIC0gNCA+PiAyXSArIGVbciA+PiAyXSB8IDApICsgMiA+PiAyKSwgZiA9IGYgKyAyIHwgMCwgayA9IGsgKyAyIHwgMCwgKGcgfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IG8sICF0KQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB0ID0gZiA8PCAyLCByID0gdCArIGkgfCAwLCBlW0EgKyB0ID4+IDJdID0gZVsoZiA8PCAzKSArIEEgPj4gMl0gKyAoKGVbciAtIDQgPj4gMl0gKyBlW3IgPj4gMl0gfCAwKSArIDIgPj4gMik7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgbCAmJiAociA9IGsgPDwgMiwgZVtyICsgQSA+PiAyXSA9IGVbKGsgPDwgMykgKyBBID4+IDJdICsgKChlWyhpICsgciB8IDApIC0gNCA+PiAyXSA8PCAxKSArIDIgPj4gMikpLCBGMigobiA8PCAyKSArIEEgfCAwLCBpLCBvIDw8IDIpOwogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZiA9IGVbQSA+PiAyXSwgKHIgfCAwKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgIGVbQSA+PiAyXSA9IGYgPDwgMTsKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHQgPSAobiA8PCAyKSArIGkgfCAwLCBlW3QgPj4gMl0gPSBmIC0gZVtBICsgNCA+PiAyXSwgaSA9IDEsIGsgPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgZm9yIChrID0gQSAtIDQgfCAwLCBpID0gbiA+Pj4gMCA8PSAyID8gMiA6IG4sIGYgPSAxOyBsID0gZiA8PCAzLCBnID0gbCArIEEgfCAwLCBlW3QgKyAoZiA8PCAyKSA+PiAyXSA9IGVbZyA+PiAyXSAtIChlW2sgKyBsID4+IDJdICsgZVtnICsgNCA+PiAyXSA+PiAxKSwgZiA9IGYgKyAxIHwgMCwgKGYgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgbCA9IHIgJiAxLCBsICYmIChmID0gdCArIChpIDw8IDIpIHwgMCwgaSA9IChpIDw8IDMpICsgQSB8IDAsIGVbZiA+PiAyXSA9IGVbaSA+PiAyXSAtIGVbaSAtIDQgPj4gMl0pLCBpID0gMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKChvIHwgMCkgPCAyKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGlmIChpID0gbyAtIDEgfCAwLCBnID0gaSAmIDEsIGYgPSAwLCAociAtIDIgfCAwKSAhPSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgIGZvciAodSA9IGkgJiAtMiwgayA9IDA7IGEgPSBmIDw8IDIsIHIgPSBhICsgdCB8IDAsIGVbQSArIGEgPj4gMl0gPSBlWygoZiA8PCAzKSArIEEgfCAwKSArIDQgPj4gMl0gKyAoKGVbciA+PiAyXSArIGVbciArIDQgPj4gMl0gfCAwKSArIDIgPj4gMiksIGEgPSBmIHwgMSwgaCA9IGEgPDwgMiwgciA9IHQgKyBoIHwgMCwgZVtBICsgaCA+PiAyXSA9IGVbKChhIDw8IDMpICsgQSB8IDApICsgNCA+PiAyXSArICgoZVtyID4+IDJdICsgZVtyICsgNCA+PiAyXSB8IDApICsgMiA+PiAyKSwgZiA9IGYgKyAyIHwgMCwgayA9IGsgKyAyIHwgMCwgKHUgfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmICghZykKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBrID0gZiA8PCAyLCByID0gayArIHQgfCAwLCBlW0EgKyBrID4+IDJdID0gZVsoKGYgPDwgMykgKyBBIHwgMCkgKyA0ID4+IDJdICsgKChlW3IgPj4gMl0gKyBlW3IgKyA0ID4+IDJdIHwgMCkgKyAyID4+IDIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbCB8fCAociA9IGkgPDwgMiwgZVtyICsgQSA+PiAyXSA9IGVbKChpIDw8IDMpICsgQSB8IDApICsgNCA+PiAyXSArICgoZVtyICsgdCA+PiAyXSA8PCAxKSArIDIgPj4gMikpLCBGMigobiA8PCAyKSArIEEgfCAwLCB0LCBvIDw8IDIpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBrMShBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwOwogICAgICAgICAgICAgIGlmIChsID0gZVtBICsgMTYgPj4gMl0sIGwgPj4+IDAgPj0gMzIpCiAgICAgICAgICAgICAgICByZXR1cm4gZVtBICsgOCA+PiAyXTsKICAgICAgICAgICAgICBmID0gZVtBICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgPj0gNCkgewogICAgICAgICAgICAgICAgICBpID0gZVtBID4+IDJdLCByID0gZVtpID4+IDJdLCBuID0gZiAtIDQgfCAwLCBlW0EgKyAyNCA+PiAyXSA9IG4sIGVbQSA+PiAyXSA9IGkgKyA0OwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHIgPSBlW0EgKyAyOCA+PiAyXSA/IC0xIDogMCwgKGYgfCAwKSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgIG4gPSBmOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdSA9IGYgJiAxLCBpID0gZVtBID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoKGYgfCAwKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgdCA9IGk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmb3IgKGEgPSBmICYgMjE0NzQ4MzY0NjsgZVtBID4+IDJdID0gaSArIDEsIG8gPSBJW2kgfCAwXSwgdCA9IGkgKyAyIHwgMCwgZVtBID4+IDJdID0gdCwgZVtBICsgMjQgPj4gMl0gPSBmIC0gMSwgaSA9IElbaSArIDEgfCAwXSwgZiA9IGYgLSAyIHwgMCwgZVtBICsgMjQgPj4gMl0gPSBmLCByID0gKCgyNTUgPDwgayBeIC0xKSAmIHIgfCBvIDw8IGspICYgKDY1MjgwIDw8IGsgXiAtMSkgfCBpIDw8IChrIHwgOCksIGsgPSBrICsgMTYgfCAwLCBpID0gdCwgbiA9IG4gKyAyIHwgMCwgKGEgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG4gPSAwLCAhdSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGVbQSA+PiAyXSA9IHQgKyAxLCBpID0gSVt0IHwgMF0sIGVbQSArIDI0ID4+IDJdID0gZiAtIDEsIHIgPSAoMjU1IDw8IGsgXiAtMSkgJiByIHwgaSA8PCBrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDIwID4+IDJdLCBhID0gciA+Pj4gMjQgfCAwLCBlW0EgKyAyMCA+PiAyXSA9IChhIHwgMCkgPT0gMjU1LCB0ID0gciA+Pj4gMTYgJiAyNTUsIGYgPSByID4+PiA4ICYgMjU1LCBpID0gaSA/IDcgOiA4LCByID0gciAmIDI1NSwgayA9IGkgKyAoKHIgfCAwKSA9PSAyNTUgPyA3IDogOCkgfCAwLCBvID0gKChmIHwgMCkgPT0gMjU1ID8gNyA6IDgpICsgayB8IDAsIHUgPSAobCArICgodCB8IDApID09IDI1NSA/IDcgOiA4KSB8IDApICsgbyB8IDAsIGVbQSArIDE2ID4+IDJdID0gdSwgZyA9IGVbQSArIDEyID4+IDJdLCBpID0gciB8IChmIDw8IGkgfCB0IDw8IGsgfCBhIDw8IG8pLCByID0gbCAmIDMxLCAobCAmIDYzKSA+Pj4gMCA+PSAzMiA/ICh0ID0gaSA8PCByLCBpID0gMCkgOiAodCA9ICgxIDw8IHIpIC0gMSAmIGkgPj4+IDMyIC0gciwgaSA9IGkgPDwgciksIGwgPSBpIHwgZVtBICsgOCA+PiAyXSwgaSA9IHQgfCBnLCBvID0gaSwgZVtBICsgOCA+PiAyXSA9IGwsIGVbQSArIDEyID4+IDJdID0gaSwgdSA+Pj4gMCA8PSAzMSkgewogICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA+PSA0KSB7CiAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSA+PiAyXSwgZiA9IGVbaSA+PiAyXSwgZVtBICsgMjQgPj4gMl0gPSBuIC0gNCwgZVtBID4+IDJdID0gaSArIDQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoayA9IDAsIGYgPSBlW0EgKyAyOCA+PiAyXSA/IC0xIDogMCwgKG4gfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGcgPSBuICYgMSwgaSA9IGVbQSA+PiAyXTsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgIHIgPSBpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gbiAmIDIxNDc0ODM2NDYsIHQgPSAwOyBlW0EgPj4gMl0gPSBpICsgMSwgcyA9IElbaSB8IDBdLCByID0gaSArIDIgfCAwLCBlW0EgPj4gMl0gPSByLCBlW0EgKyAyNCA+PiAyXSA9IG4gLSAxLCBpID0gSVtpICsgMSB8IDBdLCBuID0gbiAtIDIgfCAwLCBlW0EgKyAyNCA+PiAyXSA9IG4sIGYgPSAoKDI1NSA8PCBrIF4gLTEpICYgZiB8IHMgPDwgaykgJiAoNjUyODAgPDwgayBeIC0xKSB8IGkgPDwgKGsgfCA4KSwgayA9IGsgKyAxNiB8IDAsIGkgPSByLCB0ID0gdCArIDIgfCAwLCAoaCB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoIWcpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZVtBID4+IDJdID0gciArIDEsIGkgPSBJW3IgfCAwXSwgZVtBICsgMjQgPj4gMl0gPSBuIC0gMSwgZiA9ICgyNTUgPDwgayBeIC0xKSAmIGYgfCBpIDw8IGs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByID0gZiA+Pj4gMjQgfCAwLCBlW0EgKyAyMCA+PiAyXSA9IChyIHwgMCkgPT0gMjU1LCB0ID0gZiA+Pj4gMTYgJiAyNTUsIG4gPSBmID4+PiA4ICYgMjU1LCBrID0gKGEgfCAwKSA9PSAyNTUgPyA3IDogOCwgZiA9IGYgJiAyNTUsIGEgPSBrICsgKChmIHwgMCkgPT0gMjU1ID8gNyA6IDgpIHwgMCwgZyA9ICgobiB8IDApID09IDI1NSA/IDcgOiA4KSArIGEgfCAwLCBlW0EgKyAxNiA+PiAyXSA9ICgoKHQgfCAwKSA9PSAyNTUgPyA3IDogOCkgKyB1IHwgMCkgKyBnLCBpID0gQSwgQSA9IGYgfCAobiA8PCBrIHwgdCA8PCBhIHwgciA8PCBnKSwgciA9IHUgJiAzMSwgKHUgJiA2MykgPj4+IDAgPj0gMzIgPyAodCA9IEEgPDwgciwgQSA9IDApIDogKHQgPSAoMSA8PCByKSAtIDEgJiBBID4+PiAzMiAtIHIsIEEgPSBBIDw8IHIpLCBsID0gQSB8IGwsIGVbaSArIDggPj4gMl0gPSBsLCBlW2kgKyAxMiA+PiAyXSA9IHQgfCBvOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBONChBLCBpLCByLCBmLCBrKSB7CiAgICAgICAgICAgICAgdmFyIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDA7CiAgICAgICAgICAgICAgYSA9IFggLSAzMiB8IDAsIFggPSBhLCBlW0EgKyA4ID4+IDJdID09IDE2ID8gdCA9IGVbQSArIDE1NiA+PiAyXSArIFooZVtBICsgMjA0ID4+IDJdLCA1NjQ0KSB8IDAgOiB0ID0gZVtBICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGRbZiA+PiAyXSA8PSA0KSB7CiAgICAgICAgICAgICAgICAgIEEgPSAwLCBRKGssIDEsIDQ1MjIsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHQgPSBlW3QgKyA1NTg0ID4+IDJdICsgWihpLCAxMDgwKSB8IDAsIGgyKHIsIHQgKyA0IHwgMCwgMSksIGwgPSBlW3QgKyA0ID4+IDJdICsgMSB8IDAsIGVbdCArIDQgPj4gMl0gPSBsLCBsID4+PiAwID49IDM0KSB7CiAgICAgICAgICAgICAgICAgIGVbYSArIDQgPj4gMl0gPSAzMywgZVthID4+IDJdID0gbCwgUShrLCAxLCAxNzI5MCwgYSksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG4gPSBlW0EgKyAxNjAgPj4gMl0sIG4gPj4+IDAgPj0gbCA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBlW2EgKyAyNCA+PiAyXSA9IGwsIGVbYSArIDIwID4+IDJdID0gbiwgZVthICsgMTYgPj4gMl0gPSBpLCBRKGssIDEsIDI4NzczLCBhICsgMTYgfCAwKSwgZVtBICsgOCA+PiAyXSA9IGVbQSArIDggPj4gMl0gfCAzMjc2OCwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaDIociArIDEgfCAwLCB0ICsgOCB8IDAsIDEpLCBlW3QgKyA4ID4+IDJdID0gZVt0ICsgOCA+PiAyXSArIDIsIGgyKHIgKyAyIHwgMCwgdCArIDEyIHwgMCwgMSksIEEgPSBlW3QgKyAxMiA+PiAyXSArIDIgfCAwLCBlW3QgKyAxMiA+PiAyXSA9IEEsIGkgPSBlW3QgKyA4ID4+IDJdLCAhKCEoaSA+Pj4gMCA+IDEwIHwgQSA+Pj4gMCA+IDEwKSAmIEEgKyBpID4+PiAwIDwgMTMpKSB7CiAgICAgICAgICAgICAgICAgIEEgPSAwLCBRKGssIDEsIDg5NjksIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGgyKHIgKyAzIHwgMCwgdCArIDE2IHwgMCwgMSksIElbdCArIDE2IHwgMF0gJiAxMjgpIHsKICAgICAgICAgICAgICAgICAgQSA9IDAsIFEoaywgMSwgMTA1NjEsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGgyKHIgKyA0IHwgMCwgdCArIDIwIHwgMCwgMSksIGRbdCArIDIwID4+IDJdID49IDIpIHsKICAgICAgICAgICAgICAgICAgQSA9IDAsIFEoaywgMSwgMTA0OTYsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGkgPSBlW2YgPj4gMl0gLSA1IHwgMCwgZVtmID4+IDJdID0gaSwgQSA9IDEsIGwgPSBlW3QgKyA0ID4+IDJdLCAhKEZbdCB8IDBdICYgMSkpIHsKICAgICAgICAgICAgICAgICAgaWYgKCFsKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGlmIChmID0gdCArIDk0NCB8IDAsIGsgPSB0ICsgODEyIHwgMCwgaSA9IDAsIHIgPSAwLCBsID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gbCAmIC00LCBuID0gMDsgdCA9IHIgPDwgMiwgZVt0ICsgayA+PiAyXSA9IDE1LCBlW2YgKyB0ID4+IDJdID0gMTUsIHUgPSB0IHwgNCwgZVt1ICsgayA+PiAyXSA9IDE1LCBlW2YgKyB1ID4+IDJdID0gMTUsIHUgPSB0IHwgOCwgZVt1ICsgayA+PiAyXSA9IDE1LCBlW2YgKyB1ID4+IDJdID0gMTUsIHQgPSB0IHwgMTIsIGVbdCArIGsgPj4gMl0gPSAxNSwgZVtmICsgdCA+PiAyXSA9IDE1LCByID0gciArIDQgfCAwLCBuID0gbiArIDQgfCAwLCAobyB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgaWYgKHQgPSBsICYgMywgIXQpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZm9yICg7IEEgPSByIDw8IDIsIGVbQSArIGsgPj4gMl0gPSAxNSwgZVtBICsgZiA+PiAyXSA9IDE1LCBBID0gMSwgciA9IHIgKyAxIHwgMCwgaSA9IGkgKyAxIHwgMCwgKHQgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPj0gbCA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsKSB7CiAgICAgICAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChoMihyICsgNSB8IDAsIGEgKyAyOCB8IDAsIDEpLCBBID0gZVthICsgMjggPj4gMl0sIGVbdCArIDk0NCA+PiAyXSA9IEEgPj4+IDQsIGVbdCArIDgxMiA+PiAyXSA9IEEgJiAxNSwgbiA9IGVbdCArIDQgPj4gMl0sIG4gPj4+IDAgPj0gMikKICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IHQgKyA5NDQgfCAwLCBvID0gdCArIDgxMiB8IDAsIEEgPSByICsgNiB8IDAsIHIgPSAxOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBoMihBLCBhICsgMjggfCAwLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVthICsgMjggPj4gMl0sIGkgPj4+IDAgPj0gMTYgJiYgKG4gPSBpICYgMTUsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gMCwgUShrLCAxLCA5OTY2LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID0gciA8PCAyLCBlW3UgKyBvID4+IDJdID0gbiwgZVtsICsgdSA+PiAyXSA9IGkgPj4+IDQsIEEgPSBBICsgMSB8IDAsIHIgPSByICsgMSB8IDAsIG4gPSBlW3QgKyA0ID4+IDJdLCAhKHIgPj4+IDAgPCBuID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpID0gZVtmID4+IDJdOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbZiA+PiAyXSA9IGkgLSBuLCBBID0gMTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEEgPSAwLCBRKGssIDEsIDQ1MjIsIDApOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGEgKyAzMiB8IDAsIEE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUDQoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDA7CiAgICAgICAgICAgICAgZVtBICsgOCA+PiAyXSA9IDAsIGVbQSArIDEyID4+IDJdID0gMCwgZVtBID4+IDJdID0gaSwgZVtBICsgMjggPj4gMl0gPSBmLCBlW0EgKyAxNiA+PiAyXSA9IDAsIGVbQSArIDIwID4+IDJdID0gMCwgbCA9IHIgLSAxIHwgMCwgZVtBICsgMjQgPj4gMl0gPSBsLCBzID0gaSAmIDM7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPD0gMCkgewogICAgICAgICAgICAgICAgICBrID0gaSwgaSA9IGY7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBrID0gaSArIDEgfCAwLCBlW0EgPj4gMl0gPSBrLCBpID0gSVtpIHwgMF07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIG4gPSBpLCBhID0gOCwgZVtBICsgMTYgPj4gMl0gPSA4LCB1ID0gKG4gfCAwKSA9PSAyNTUsIGVbQSArIDIwID4+IDJdID0gdSwgZVtBICsgOCA+PiAyXSA9IG4sIGVbQSArIDEyID4+IDJdID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoKHMgfCAwKSA9PSAzKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgbyA9IHIgLSAyIHwgMCwgZVtBICsgMjQgPj4gMl0gPSBvOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA8IDIpIHsKICAgICAgICAgICAgICAgICAgICBpID0gaywgayA9IGY7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpID0gayArIDEgfCAwLCBlW0EgPj4gMl0gPSBpLCBrID0gSVtrIHwgMF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodSA9IChrIHwgMCkgPT0gMjU1LCBlW0EgKyAyMCA+PiAyXSA9IHUsIGEgPSAobiB8IDApID09IDI1NSA/IDE1IDogMTYsIGVbQSArIDE2ID4+IDJdID0gYSwgbiA9IG4gfCBrIDw8IDgsIGVbQSArIDggPj4gMl0gPSBuLCBlW0EgKyAxMiA+PiAyXSA9IDAsIChzIHwgMCkgPT0gMikgewogICAgICAgICAgICAgICAgICBrID0gaSwgciA9IGwsIGwgPSBvOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdyA9IHIgLSAzIHwgMCwgZVtBICsgMjQgPj4gMl0gPSB3OwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA8IDMpIHsKICAgICAgICAgICAgICAgICAgICB0ID0gaSwgaSA9IGY7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB0ID0gaSArIDEgfCAwLCBlW0EgPj4gMl0gPSB0LCBpID0gSVtpIHwgMF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodSA9IChpIHwgMCkgPT0gMjU1LCBlW0EgKyAyMCA+PiAyXSA9IHUsIGcgPSAoKGsgfCAwKSA9PSAyNTUgPyA3IDogOCkgKyBhIHwgMCwgZVtBICsgMTYgPj4gMl0gPSBnLCBrID0gYSAmIDMxLCAoYSAmIDYzKSA+Pj4gMCA+PSAzMiA/IChoID0gaSA8PCBrLCBrID0gMCkgOiAoaCA9ICgxIDw8IGspIC0gMSAmIGkgPj4+IDMyIC0gaywgayA9IGkgPDwgayksIG4gPSBrIHwgbiwgZVtBICsgOCA+PiAyXSA9IG4sIGVbQSArIDEyID4+IDJdID0gaCwgKHMgfCAwKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgIGsgPSB0LCBhID0gZywgciA9IG8sIGwgPSB3OwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbCA9IHIgLSA0IHwgMCwgZVtBICsgMjQgPj4gMl0gPSBsOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA8IDQpIHsKICAgICAgICAgICAgICAgICAgICBrID0gdCwgciA9IGY7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBrID0gdCArIDEgfCAwLCBlW0EgPj4gMl0gPSBrLCByID0gSVt0IHwgMF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1ID0gKHIgfCAwKSA9PSAyNTUsIGVbQSArIDIwID4+IDJdID0gdSwgYSA9IGcgKyAoKGkgfCAwKSA9PSAyNTUgPyA3IDogOCkgfCAwLCBlW0EgKyAxNiA+PiAyXSA9IGEsIGkgPSBnICYgMzEsIChnICYgNjMpID4+PiAwID49IDMyID8gKHQgPSByIDw8IGksIGkgPSAwKSA6ICh0ID0gKDEgPDwgaSkgLSAxICYgciA+Pj4gMzIgLSBpLCBpID0gciA8PCBpKSwgbiA9IGkgfCBuLCBpID0gdCB8IGgsIGggPSBpLCBlW0EgKyA4ID4+IDJdID0gbiwgZVtBICsgMTIgPj4gMl0gPSBpLCByID0gdzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPj0gNSkgewogICAgICAgICAgICAgICAgICBmID0gZVtrID4+IDJdLCBlW0EgKyAyNCA+PiAyXSA9IHIgLSA1LCBlW0EgPj4gMl0gPSBrICsgNDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpID0gMCwgZiA9IGYgPyAtMSA6IDAsIChyIHwgMCkgPCAyKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yICg7IHIgPSBrICsgMSB8IDAsIGVbQSA+PiAyXSA9IHIsIGsgPSBJW2sgfCAwXSwgdCA9IGwgLSAxIHwgMCwgZVtBICsgMjQgPj4gMl0gPSB0LCBmID0gKDI1NSA8PCBpIF4gLTEpICYgZiB8IGsgPDwgaSwgaSA9IGkgKyA4IHwgMCwgbyA9IGwgPj4+IDAgPiAxLCBrID0gciwgbCA9IHQsICEhbzsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGkgPSBmID4+PiAyNCB8IDAsIGVbQSArIDIwID4+IDJdID0gKGkgfCAwKSA9PSAyNTUsIHIgPSBmID4+PiAxNiAmIDI1NSwgayA9IGYgPj4+IDggJiAyNTUsIGwgPSB1ID8gNyA6IDgsIGYgPSBmICYgMjU1LCB0ID0gbCArICgoZiB8IDApID09IDI1NSA/IDcgOiA4KSB8IDAsIG8gPSAoKGsgfCAwKSA9PSAyNTUgPyA3IDogOCkgKyB0IHwgMCwgZVtBICsgMTYgPj4gMl0gPSAoKChyIHwgMCkgPT0gMjU1ID8gNyA6IDgpICsgYSB8IDApICsgbywgaSA9IGYgfCAoayA8PCBsIHwgciA8PCB0IHwgaSA8PCBvKSwgciA9IEEsIHIgPSBBLCBBID0gaSwgaSA9IGEgJiAzMSwgKGEgJiA2MykgPj4+IDAgPj0gMzIgPyAoZiA9IEEgPDwgaSwgQSA9IDApIDogKGYgPSAoMSA8PCBpKSAtIDEgJiBBID4+PiAzMiAtIGksIEEgPSBBIDw8IGkpLCBlW3IgKyA4ID4+IDJdID0gQSB8IG4sIGVbciArIDEyID4+IDJdID0gZiB8IGg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gYXIoQSwgaSkgewogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gMCwgQyA9IDAsIG0gPSAwLCB5ID0gMCwgcCA9IDAsIEggPSAwLCBKID0gMCwgRSA9IDAsIEQgPSAwLCBVID0gMDsKICAgICAgICAgICAgICB1ID0gWCAtIDMyIHwgMCwgWCA9IHUsIHYgPSBlW0EgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIXYpIHsKICAgICAgICAgICAgICAgICAgbyA9IDE7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBrID0gZVtBID4+IDJdLCByID0gayA+PiAzMSwgYSA9IHI7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICgociB8IDApIDwgMCB8fCAobiA9IGVbQSArIDQgPj4gMl0sIHIgPSBuID4+IDMxLCBnID0gciwgKHIgfCAwKSA8IDApIHx8IChmID0gZVtBICsgOCA+PiAyXSwgciA9IGYgPj4gMzEsIGggPSByLCAociB8IDApIDwgMCkgfHwgKGwgPSBlW0EgKyAxMiA+PiAyXSwgciA9IGwgPj4gMzEsIChyIHwgMCkgPCAwKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBmb3IgKEEgPSBlW0EgKyAyNCA+PiAyXSwgeSA9IGsgLSAxIHwgMCwgcCA9IGEgLSAhayB8IDAsIEggPSBuIC0gMSB8IDAsIEogPSBnIC0gIW4gfCAwLCBnID0gZiAtIDEgfCAwLCBFID0gaCAtICFmIHwgMCwgaCA9IGwgLSAxIHwgMCwgRCA9IHIgLSAhbCB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW0EgPj4gMl0sIHIgPSBmICsgeSB8IDAsIHMgPSBmID4+IDMxLCB0ID0gcyArIHAgfCAwLCBhID0gejAociwgciA+Pj4gMCA8IGYgPj4+IDAgPyB0ICsgMSB8IDAgOiB0LCBmLCBzKSwgZVtBICsgMTYgPj4gMl0gPSBhLCBsID0gZVtBICsgNCA+PiAyXSwgayA9IGwgKyBIIHwgMCwgdyA9IGwgPj4gMzEsIHIgPSB3ICsgSiB8IDAsIG8gPSB6MChrLCBrID4+PiAwIDwgbCA+Pj4gMCA/IHIgKyAxIHwgMCA6IHIsIGwsIHcpLCBlW0EgKyAyMCA+PiAyXSA9IG8sIG4gPSBlW0EgKyA0MCA+PiAyXSwgayA9IG4gJiAzMSwgKG4gJiA2MykgPj4+IDAgPj0gMzIgPyAociA9IDEgPDwgaywgdCA9IDApIDogKHQgPSAxIDw8IGssIHIgPSB0IC0gMSAmIDEgPj4+IDMyIC0gayksIEIgPSB0LCBVID0gciwgayA9IEIgLSAxIHwgMCwgciA9IHIgLSAhQiB8IDAsIEMgPSByLCB0ID0gcyArIEUgfCAwLCBtID0gZiArIGcgfCAwLCB0ID0gbSA+Pj4gMCA8IGcgPj4+IDAgPyB0ICsgMSB8IDAgOiB0LCBmID0gejAobSwgdCwgZiwgcyksIHIgPSAoZiA+PiAzMSkgKyByIHwgMCwgdCA9IGYsIGYgPSBmICsgayB8IDAsIHIgPSB0ID4+PiAwID4gZiA+Pj4gMCA/IHIgKyAxIHwgMCA6IHIsIHQgPSBmLCBmID0gbiAmIDMxLCAobiAmIDYzKSA+Pj4gMCA+PSAzMiA/IGYgPSByID4+IGYgOiBmID0gKCgxIDw8IGYpIC0gMSAmIHIpIDw8IDMyIC0gZiB8IHQgPj4+IGYsIHIgPSAoYSA+PiAzMSkgKyBDIHwgMCwgdCA9IGEsIGEgPSBrICsgYSB8IDAsIHIgPSB0ID4+PiAwID4gYSA+Pj4gMCA/IHIgKyAxIHwgMCA6IHIsIHQgPSBmLCBmID0gbiAmIDMxLCAobiAmIDYzKSA+Pj4gMCA+PSAzMiA/IGYgPSByID4+IGYgOiBmID0gKCgxIDw8IGYpIC0gMSAmIHIpIDw8IDMyIC0gZiB8IGEgPj4+IGYsIHIgPSB0IC0gZiB8IDAsIChyIHwgMCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBlW3UgKyA0ID4+IDJdID0gciwgZVt1ID4+IDJdID0gYywgUShpLCAxLCAyNDg2NSwgdSksIG8gPSAwOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gPSByLCByID0gdyArIEQgfCAwLCBmID0gbCArIGggfCAwLCByID0gZiA+Pj4gMCA8IGggPj4+IDAgPyByICsgMSB8IDAgOiByLCBmID0gejAoZiwgciwgbCwgdyksIHIgPSAoZiA+PiAzMSkgKyBDIHwgMCwgayA9IGYgKyBrIHwgMCwgciA9IGsgPj4+IDAgPCBmID4+PiAwID8gciArIDEgfCAwIDogciwgZiA9IGssIGsgPSBuICYgMzEsIChuICYgNjMpID4+PiAwID49IDMyID8gZiA9IHIgPj4gayA6IGYgPSAoKDEgPDwgaykgLSAxICYgcikgPDwgMzIgLSBrIHwgZiA+Pj4gaywgciA9IFUgKyAobyA+PiAzMSkgfCAwLCBrID0gbyArIEIgfCAwLCByID0gayA+Pj4gMCA8IEIgPj4+IDAgPyByICsgMSB8IDAgOiByLCBsID0gayAtIDEgfCAwLCB0ID0gZiwgayA9IHIgLSAhayB8IDAsIGYgPSBsLCByID0gbiAmIDMxLCAobiAmIDYzKSA+Pj4gMCA+PSAzMiA/IGYgPSBrID4+IHIgOiBmID0gKCgxIDw8IHIpIC0gMSAmIGspIDw8IDMyIC0gciB8IGYgPj4+IHIsIHIgPSB0IC0gZiB8IDAsIChyIHwgMCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBlW3UgKyAyMCA+PiAyXSA9IHIsIGVbdSArIDE2ID4+IDJdID0gYywgUShpLCAxLCAyNDkzNCwgdSArIDE2IHwgMCksIG8gPSAwOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDEyID4+IDJdID0gciwgQSA9IEEgKyA1MiB8IDAsIG8gPSAxLCBjID0gYyArIDEgfCAwLCAodiB8IDApID09IChjIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgUShpLCAxLCAxMDcxNywgMCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gdSArIDMyIHwgMCwgbzsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB4NChBLCBpLCByKSB7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwOwogICAgICAgICAgICAgIGYgPSBlW0EgKyAxMTYgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgdCA9IFooaSwgcik7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA+IGRbQSArIDEzMiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUihmKSwgZiA9IFAwKHQgPDwgMiksIGVbQSArIDExNiA+PiAyXSA9IGYsICFmKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDEzMiA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGQyKGYsIDAsIHQgPDwgMik7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW0EgKyAxMjAgPj4gMl0sIHQgPSBpICsgMiB8IDAsIHUgPSByICsgMyA+Pj4gMiB8IDAsIGwgPSBaKHQsIHUgKyAyIHwgMCksIGwgPj4+IDAgPD0gZFtBICsgMTM2ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgbiA9IGwgPDwgMjsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChSKGYpLCBuID0gbCA8PCAyLCBmID0gUDAobiksIGVbQSArIDEyMCA+PiAyXSA9IGYsIGYpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlW0EgKyAxMzYgPj4gMl0gPSBsLCBkMihmLCAwLCBuKTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAobiA9IGVbQSArIDEyMCA+PiAyXSwgZiA9IG4sIGwgPSBpICsgMSB8IDAsIGwgPj4+IDAgPj0gNykKICAgICAgICAgICAgICAgICAgZm9yIChhID0gdCAmIC04OyBlW2YgKyAyNCA+PiAyXSA9IDEyMjY4MzM5MjAsIGVbZiArIDI4ID4+IDJdID0gMTIyNjgzMzkyMCwgZVtmICsgMTYgPj4gMl0gPSAxMjI2ODMzOTIwLCBlW2YgKyAyMCA+PiAyXSA9IDEyMjY4MzM5MjAsIGVbZiArIDggPj4gMl0gPSAxMjI2ODMzOTIwLCBlW2YgKyAxMiA+PiAyXSA9IDEyMjY4MzM5MjAsIGVbZiA+PiAyXSA9IDEyMjY4MzM5MjAsIGVbZiArIDQgPj4gMl0gPSAxMjI2ODMzOTIwLCBmID0gZiArIDMyIHwgMCwgayA9IGsgKyA4IHwgMCwgKGEgfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgaWYgKGEgPSB0ICYgNywgYSkKICAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgZVtmID4+IDJdID0gMTIyNjgzMzkyMCwgZiA9IGYgKyA0IHwgMCwgayA9IGsgKyAxIHwgMCwgKGEgfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgaWYgKGYgPSBuICsgKFoodCwgdSArIDEgfCAwKSA8PCAyKSB8IDAsIGwgPj4+IDAgPj0gNykKICAgICAgICAgICAgICAgICAgZm9yIChhID0gdCAmIC04LCBrID0gMDsgZVtmICsgMjQgPj4gMl0gPSAxMjI2ODMzOTIwLCBlW2YgKyAyOCA+PiAyXSA9IDEyMjY4MzM5MjAsIGVbZiArIDE2ID4+IDJdID0gMTIyNjgzMzkyMCwgZVtmICsgMjAgPj4gMl0gPSAxMjI2ODMzOTIwLCBlW2YgKyA4ID4+IDJdID0gMTIyNjgzMzkyMCwgZVtmICsgMTIgPj4gMl0gPSAxMjI2ODMzOTIwLCBlW2YgPj4gMl0gPSAxMjI2ODMzOTIwLCBlW2YgKyA0ID4+IDJdID0gMTIyNjgzMzkyMCwgZiA9IGYgKyAzMiB8IDAsIGsgPSBrICsgOCB8IDAsIChhIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGlmIChhID0gdCAmIDcsIGEpCiAgICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGVbZiA+PiAyXSA9IDEyMjY4MzM5MjAsIGYgPSBmICsgNCB8IDAsIGsgPSBrICsgMSB8IDAsIChhIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGlmIChmID0gciAmIDMsICFmKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKGsgPSAoZiB8IDApID09IDEgPyAxMjI0NzM2NzY4IDogKGYgfCAwKSA9PSAyID8gMTIwNzk1OTU1MiA6IDEwNzM3NDE4MjQsIGYgPSBuICsgKFoodCwgdSkgPDwgMikgfCAwLCBsID4+PiAwID49IDcpCiAgICAgICAgICAgICAgICAgIGZvciAobCA9IHQgJiAtOCwgbiA9IDA7IGVbZiArIDI4ID4+IDJdID0gaywgZVtmICsgMjQgPj4gMl0gPSBrLCBlW2YgKyAyMCA+PiAyXSA9IGssIGVbZiArIDE2ID4+IDJdID0gaywgZVtmICsgMTIgPj4gMl0gPSBrLCBlW2YgKyA4ID4+IDJdID0gaywgZVtmICsgNCA+PiAyXSA9IGssIGVbZiA+PiAyXSA9IGssIGYgPSBmICsgMzIgfCAwLCBuID0gbiArIDggfCAwLCAobCB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAodCA9IHQgJiA3LCAhdCkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGZvciAobiA9IDA7IGVbZiA+PiAyXSA9IGssIGYgPSBmICsgNCB8IDAsIG4gPSBuICsgMSB8IDAsICh0IHwgMCkgIT0gKG4gfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBlW0EgKyAxMjggPj4gMl0gPSByLCBlW0EgKyAxMjQgPj4gMl0gPSBpLCAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG9rKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwOwogICAgICAgICAgICAgIG4gPSBYIC0gMTYgfCAwLCBYID0gbiwgZVtuICsgMTIgPj4gMl0gPSByLCBsID0gZVtBICsgNzIgPj4gMl0sIGVbQSArIDggPj4gMl0gPT0gMTYgPyBrID0gZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCA6IGsgPSBlW0EgKyAxMiA+PiAyXSwgRltrICsgNTY0MCB8IDBdID0gSVtrICsgNTY0MCB8IDBdIHwgMTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8PSA0KSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNzQ4MiwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaDIoaSwgaywgMSksIGRbayA+PiAyXSA+PSA4KSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNzQyMiwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaDIoaSArIDEgfCAwLCBuICsgOCB8IDAsIDEpLCByID0gZVtuICsgOCA+PiAyXSwgZVtrICsgNCA+PiAyXSA9IHIsIChyIHwgMCkgPj0gNSAmJiAoUShmLCAxLCA3MzgxLCAwKSwgZVtrICsgNCA+PiAyXSA9IC0xKSwgaDIoaSArIDIgfCAwLCBrICsgOCB8IDAsIDIpLCByID0gZVtrICsgOCA+PiAyXSwgciAtIDY1NTM2ID4+PiAwIDw9IDQyOTQ5MDE3NjApIHsKICAgICAgICAgICAgICAgICAgZVtuID4+IDJdID0gciwgUShmLCAxLCAxODIzMywgbik7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYSA9IGVbQSArIDE2NCA+PiAyXSwgZVtrICsgMTIgPj4gMl0gPSBhIHx8IHIsIGgyKGkgKyA0IHwgMCwgayArIDE2IHwgMCwgMSksIGRbayArIDE2ID4+IDJdID49IDIpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCA5MDM3LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEgPSBpICsgNSB8IDAsIGVbbiArIDEyID4+IDJdID0gZVtuICsgMTIgPj4gMl0gLSA1LCBsID0gZVtsICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghbCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbayA+PiAyXSAmIDEsIHIgPSBlW2sgKyA1NTg0ID4+IDJdLCBrID0gMCwgbCA+Pj4gMCA+PSA4KQogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IGwgJiAtODsgZVtyICsgWih0LCAxMDgwKSA+PiAyXSA9IGksIGVbciArIFoodCB8IDEsIDEwODApID4+IDJdID0gaSwgZVtyICsgWih0IHwgMiwgMTA4MCkgPj4gMl0gPSBpLCBlW3IgKyBaKHQgfCAzLCAxMDgwKSA+PiAyXSA9IGksIGVbciArIFoodCB8IDQsIDEwODApID4+IDJdID0gaSwgZVtyICsgWih0IHwgNSwgMTA4MCkgPj4gMl0gPSBpLCBlW3IgKyBaKHQgfCA2LCAxMDgwKSA+PiAyXSA9IGksIGVbciArIFoodCB8IDcsIDEwODApID4+IDJdID0gaSwgdCA9IHQgKyA4IHwgMCwgdSA9IHUgKyA4IHwgMCwgKG8gfCAwKSAhPSAodSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAmIDcsICFsKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGZvciAoOyBlW3IgKyBaKHQsIDEwODApID4+IDJdID0gaSwgdCA9IHQgKyAxIHwgMCwgayA9IGsgKyAxIHwgMCwgKGwgfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHQgPSAwLCAhTjQoQSwgMCwgYSwgbiArIDEyIHwgMCwgZikpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCA3NDgyLCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlW24gKyAxMiA+PiAyXSkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDc0ODIsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gPT0gMTYgPyBpID0gZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCA6IGkgPSBlW0EgKyAxMiA+PiAyXSwgZFtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdID49IDIpCiAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGVbaSArIDU1ODQgPj4gMl0sIGYgPSBlW2kgKyA0ID4+IDJdIDw8IDIsIHQgPSBpICsgOTQ0IHwgMCwgbCA9IGkgKyA4MTIgfCAwLCBrID0gMSwgciA9IGk7IGVbciArIDEwODQgPj4gMl0gPSBlW2kgKyA0ID4+IDJdLCBlW3IgKyAxMDg4ID4+IDJdID0gZVtpICsgOCA+PiAyXSwgZVtyICsgMTA5MiA+PiAyXSA9IGVbaSArIDEyID4+IDJdLCBlW3IgKyAxMDk2ID4+IDJdID0gZVtpICsgMTYgPj4gMl0sIGVbciArIDExMDAgPj4gMl0gPSBlW2kgKyAyMCA+PiAyXSwgRjIociArIDE4OTIgfCAwLCBsLCBmKSwgRjIociArIDIwMjQgfCAwLCB0LCBmKSwgciA9IHIgKyAxMDgwIHwgMCwgayA9IGsgKyAxIHwgMCwgayA+Pj4gMCA8IGRbZVtBICsgNzIgPj4gMl0gKyAxNiA+PiAyXTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHQgPSAxOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IG4gKyAxNiB8IDAsIHQgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHVyKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMCwgYyA9IDAsIHYgPSAwLCBDID0gMCwgbSA9IDAsIHkgPSAwLCBwID0gMCwgSCA9IDAsIEogPSAwLCBFID0gMCwgRCA9IDAsIFUgPSAwLCBQID0gMCwgeCA9IDAsIHogPSAwLCBqID0gMCwgTyA9IDA7CiAgICAgICAgICAgICAgaWYgKHYgPSAoaSA8PCAzKSArIEEgfCAwLCBuID0gdiwgZVtuICsgNDAgPj4gMl0gPSAwLCBlW24gKyA0NCA+PiAyXSA9IDAsIHkgPSBlW0EgKyAxNiA+PiAyXSwgIXkpCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICBmb3IgKFAgPSBlW0EgKyAyMCA+PiAyXSwgeCA9IFooaSwgMjQpLCBwID0gMTsgOyApIHsKICAgICAgICAgICAgICAgIGlmIChBID0gWihDLCA3NikgKyBQIHwgMCwgSCA9IGVbQSArIDIwID4+IDJdLCBIKQogICAgICAgICAgICAgICAgICBmb3IgKHogPSBlW0EgKyAyOCA+PiAyXSwgaCA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBaKGgsIDE1MikgKyB6IHwgMCwgSiA9IGVbcyArIDI0ID4+IDJdLCBKKQogICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gcyArIDI4IHwgMCwgdyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBaKHcsIDM2KSArIGogfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gPT0gZVtBID4+IDJdIHwgZVtBICsgMTIgPj4gMl0gPT0gZVtBICsgNCA+PiAyXSB8fCAoRSA9IFooZVtzICsgMjAgPj4gMl0sIGVbcyArIDE2ID4+IDJdKSwgIUUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKE8gPSBlW0EgKyAyMCA+PiAyXSwgQiA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA9IFooQiwgNDApICsgTyB8IDAsIEQgPSBaKGVbbSArIDIwID4+IDJdLCBlW20gKyAxNiA+PiAyXSksIEQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGVbbSArIDI0ID4+IDJdICsgWihjLCA1MikgfCAwLCBBID0gZVtsICsgNCA+PiAyXSwgaSB8fCAoZVtsICsgNDQgPj4gMl0gPSAwKSwgdSA9IEEgKyB4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGVbbCArIDQ0ID4+IDJdLCBuID0gZVtsICsgNDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGVbbCArIDQ0ID4+IDJdLCBVID0gZVtsICsgNDggPj4gMl0sIGsgPj4+IDAgPj0gVSA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZyA9IGVbbCArIDggPj4gMl0sIG4gPSBrLCBBID0gazsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGcgKyBaKEEsIDI0KSB8IDAsIHQgPSBlW28gPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBRMltvICsgOCA+PiAzXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBRMltvICsgOCA+PiAzXSwgbyA9IGcgKyBaKG4sIDI0KSB8IDAsIGEgPSBhIC0gUTJbbyAtIDE2ID4+IDNdLCB0ID0gdCAtIGVbbyAtIDI0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IEEgKyAxIHwgMCwgbiA9ICh0ID8gciAtIGEgLyArKHQgPj4+IDApIDwgMjIyMDQ0NjA0OTI1MDMxM2UtMzEgOiBhICE9IDApID8gQSA6IG4sIChBIHwgMCkgPT0gKFUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVbdSA+PiAyXSwgQSA9IG4gLSBrIHwgMCwgKHQgfCAwKSAhPSAoQSB8IDApID8gKGVbdSA+PiAyXSA9IEEsIHAgPSAwKSA6IEEgPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW3UgKyA4ID4+IDJdID0gMCwgZVt1ICsgMTIgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGVbbCArIDggPj4gMl0sIHQgPSBnICsgWihuIC0gMSB8IDAsIDI0KSB8IDAsIEEgPSBlW3QgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBRMlt0ICsgOCA+PiAzXSwgdCA9IGVbbCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBnICsgWihrLCAyNCkgfCAwLCBhID0gUTJbdCArIDggPj4gM10gLSBRMltrIC0gMTYgPj4gM10sIGsgPSBlW2sgLSAyNCA+PiAyXSwgdCA9IGsgKyBlW2wgPj4gMl0gfCAwLCBBID0gQSAtIGsgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbdSArIDE2ID4+IDJdID0gdCwgZVt1ICsgNCA+PiAyXSA9IEEsIFEyW3UgKyA4ID4+IDNdID0gYSwgUTJbdiArIDQwID4+IDNdID0gYSArIFEyW3YgKyA0MCA+PiAzXSwgIWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2wgKyA0NCA+PiAyXSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID0gYyArIDEgfCAwLCAoRCB8IDApID09IChjIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSBCICsgMSB8IDAsIChFIHwgMCkgPT0gKEIgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID0gdyArIDEgfCAwLCAoSiB8IDApID09ICh3IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBoICsgMSB8IDAsIChIIHwgMCkgPT0gKGggfCAwKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoQyA9IEMgKyAxIHwgMCwgKHkgfCAwKSA9PSAoQyB8IDApKQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gVDQoQSwgaSwgcikgewogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMDsKICAgICAgICAgICAgICB1ID0gWCAtIDI1NiB8IDAsIFggPSB1LCB0ID0gRTIoMSwgMjApOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghdCkgewogICAgICAgICAgICAgICAgICBRKHIsIDEsIDEwMzc0LCAwKSwgdCA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKGVbdCArIDQgPj4gMl0gPSBpLCBlW3QgPj4gMl0gPSBBLCBlW3UgPj4gMl0gPSBpLCBlW3UgKyAxMjggPj4gMl0gPSBBOyBCID0gbiwgbiA9IG4gKyAxIHwgMCwgbCA9IG4gPDwgMiwgZiA9IChpICsgMSB8IDApIC8gMiB8IDAsIGVbbCArIHUgPj4gMl0gPSBmLCBoID0gbCArICh1ICsgMTI4IHwgMCkgfCAwLCBsID0gKEEgKyAxIHwgMCkgLyAyIHwgMCwgZVtoID4+IDJdID0gbCwgYSA9IFooQSwgaSksIGsgPSBhICsgayB8IDAsIGkgPSBmLCBBID0gbCwgYSA+Pj4gMCA+IDE7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgaWYgKGVbdCArIDggPj4gMl0gPSBrLCAhaykgewogICAgICAgICAgICAgICAgICBSKHQpLCB0ID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChmID0gRTIoaywgMTYpLCBlW3QgKyAxMiA+PiAyXSA9IGYsICFmKSB7CiAgICAgICAgICAgICAgICAgIFEociwgMSwgNjA3NSwgMCksIFIodCksIHQgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGcgPSBlW3QgKyA4ID4+IDJdLCBlW3QgKyAxNiA+PiAyXSA9IGcgPDwgNCwgQSA9IGYsIEIpCiAgICAgICAgICAgICAgICAgIGZvciAoayA9IChaKGVbdCArIDQgPj4gMl0sIGVbdCA+PiAyXSkgPDwgNCkgKyBmIHwgMCwgaSA9IGs7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgciA9IHMgPDwgMiwgYSA9IGVbciArIHUgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgPD0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIHcgPSBhIC0gMSB8IDAsIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbciArICh1ICsgMTI4IHwgMCkgPj4gMl0sIChyIHwgMCkgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gMCwgKGEgfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gYSAmIDIxNDc0ODM2NDY7IGggPSAobiB8IDApID09ICh3IHwgMCksIG4gPSBuICsgMiB8IDAsIGsgPSBoID8gaSA6IGssIGkgPSBrLCBsID0gbCArIDIgfCAwLCAobyB8IDApICE9IChsIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhICYgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSBrLCBrID0gcjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSA+PiAyXSA9IGksIChrIHwgMCkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBBICsgMTYgfCAwLCBpID0gaSArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyAxNiA+PiAyXSA9IGksIGkgPSBpICsgMTYgfCAwLCBBID0gQSArIDMyIHwgMCwgbyA9IChrIHwgMCkgPiAyLCBrID0gayAtIDIgfCAwLCBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gKChsIHwgMCkgPT0gKHcgfCAwKSB8IGwpICYgMSwgayA9IG8gPyBpIDogbiArIChyIDw8IDQpIHwgMCwgaSA9IG8gPyBpIDogbiwgbCA9IGwgKyAxIHwgMCwgKGEgfCAwKSA9PSAobCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIG4gPSAoKG4gfCAwKSA9PSAodyB8IDApIHwgbikgJiAxLCByID0gbiA/IGkgOiAociA8PCA0KSArIGsgfCAwLCBpID0gbiA/IGkgOiBrLCBrID0gcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSBzICsgMSB8IDAsIChzIHwgMCkgPT0gKEIgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW0EgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIWcpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgICBmb3IgKEEgPSBnICYgLTQsIGkgPSAwOyBlW2YgKyA2MCA+PiAyXSA9IDAsIGVbZiArIDUyID4+IDJdID0gOTk5LCBlW2YgKyA1NiA+PiAyXSA9IDAsIGVbZiArIDQ0ID4+IDJdID0gMCwgZVtmICsgMzYgPj4gMl0gPSA5OTksIGVbZiArIDQwID4+IDJdID0gMCwgZVtmICsgMjggPj4gMl0gPSAwLCBlW2YgKyAyMCA+PiAyXSA9IDk5OSwgZVtmICsgMjQgPj4gMl0gPSAwLCBlW2YgKyAxMiA+PiAyXSA9IDAsIGVbZiArIDQgPj4gMl0gPSA5OTksIGVbZiArIDggPj4gMl0gPSAwLCBmID0gZiAtIC02NCB8IDAsIGkgPSBpICsgNCB8IDAsIChBIHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBpZiAoQSA9IGcgJiAzLCAhQSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBlW2YgKyAxMiA+PiAyXSA9IDAsIGVbZiArIDQgPj4gMl0gPSA5OTksIGVbZiArIDggPj4gMl0gPSAwLCBmID0gZiArIDE2IHwgMCwgaSA9IGkgKyAxIHwgMCwgKEEgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IHUgKyAyNTYgfCAwLCB0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGhpKEEsIGksIHIsIGYsIGspIHsKICAgICAgICAgICAgICB2YXIgdCA9IDAsIG4gPSBXKDApLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gVygwKTsKICAgICAgICAgICAgICBhID0gciA+Pj4gMCA8IGYgPj4+IDAgPyByIDogZjsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgQSA9IGk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodCA9IGkgLSAzMiB8IDAsIG4gPSBHW2kgPj4gMl0sIEdbdCA+PiAyXSA9IFcoVyhHW0EgPj4gMl0gKyBuKSAqIGspICsgR1t0ID4+IDJdLCB0ID0gaSAtIDI4IHwgMCwgR1t0ID4+IDJdID0gVyhXKEdbQSArIDQgPj4gMl0gKyBHW2kgKyA0ID4+IDJdKSAqIGspICsgR1t0ID4+IDJdLCB0ID0gaSAtIDI0IHwgMCwgR1t0ID4+IDJdID0gVyhXKEdbQSArIDggPj4gMl0gKyBHW2kgKyA4ID4+IDJdKSAqIGspICsgR1t0ID4+IDJdLCB0ID0gaSAtIDIwIHwgMCwgR1t0ID4+IDJdID0gVyhXKEdbQSArIDEyID4+IDJdICsgR1tpICsgMTIgPj4gMl0pICogaykgKyBHW3QgPj4gMl0sIHQgPSBpIC0gMTYgfCAwLCBHW3QgPj4gMl0gPSBXKFcoR1tBICsgMTYgPj4gMl0gKyBHW2kgKyAxNiA+PiAyXSkgKiBrKSArIEdbdCA+PiAyXSwgdCA9IGkgLSAxMiB8IDAsIEdbdCA+PiAyXSA9IFcoVyhHW0EgKyAyMCA+PiAyXSArIEdbaSArIDIwID4+IDJdKSAqIGspICsgR1t0ID4+IDJdLCB0ID0gaSAtIDggfCAwLCBHW3QgPj4gMl0gPSBXKFcoR1tBICsgMjQgPj4gMl0gKyBHW2kgKyAyNCA+PiAyXSkgKiBrKSArIEdbdCA+PiAyXSwgdCA9IGkgLSA0IHwgMCwgR1t0ID4+IDJdID0gVyhXKEdbQSArIDI4ID4+IDJdICsgR1tpICsgMjggPj4gMl0pICogaykgKyBHW3QgPj4gMl0sIEEgPSBpIC0gLTY0IHwgMCwgdSA9IDEsIChhIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGZvciAoOyB0ID0gQSAtIDMyIHwgMCwgbyA9IG4sIG4gPSBHW2kgKyA2NCA+PiAyXSwgR1t0ID4+IDJdID0gVyhXKG8gKyBuKSAqIGspICsgR1t0ID4+IDJdLCB0ID0gQSwgbCA9IEEgLSAyOCB8IDAsIEdbbCA+PiAyXSA9IFcoVyhHW2kgKyA0ID4+IDJdICsgR1tBICsgNCA+PiAyXSkgKiBrKSArIEdbbCA+PiAyXSwgbCA9IEEgLSAyNCB8IDAsIEdbbCA+PiAyXSA9IFcoVyhHW2kgKyA4ID4+IDJdICsgR1tBICsgOCA+PiAyXSkgKiBrKSArIEdbbCA+PiAyXSwgbCA9IEEgLSAyMCB8IDAsIEdbbCA+PiAyXSA9IFcoVyhHW2kgKyAxMiA+PiAyXSArIEdbQSArIDEyID4+IDJdKSAqIGspICsgR1tsID4+IDJdLCBsID0gQSAtIDE2IHwgMCwgR1tsID4+IDJdID0gVyhXKEdbaSArIDE2ID4+IDJdICsgR1tBICsgMTYgPj4gMl0pICogaykgKyBHW2wgPj4gMl0sIGwgPSBBIC0gMTIgfCAwLCBHW2wgPj4gMl0gPSBXKFcoR1tpICsgMjAgPj4gMl0gKyBHW0EgKyAyMCA+PiAyXSkgKiBrKSArIEdbbCA+PiAyXSwgbCA9IEEgLSA4IHwgMCwgR1tsID4+IDJdID0gVyhXKEdbaSArIDI0ID4+IDJdICsgR1tBICsgMjQgPj4gMl0pICogaykgKyBHW2wgPj4gMl0sIGwgPSBBIC0gNCB8IDAsIEdbbCA+PiAyXSA9IFcoVyhHW2kgKyAyOCA+PiAyXSArIEdbQSArIDI4ID4+IDJdKSAqIGspICsgR1tsID4+IDJdLCBBID0gQSAtIC02NCB8IDAsIGkgPSB0LCB1ID0gdSArIDEgfCAwLCAodSB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByID4+PiAwID4gZiA+Pj4gMCAmJiAoaSA9IEEgLSAzMiB8IDAsIG4gPSBHW0EgKyAtNjQgPj4gMl0sIEdbaSA+PiAyXSA9IFcoVyhuICsgbikgKiBrKSArIEdbaSA+PiAyXSwgaSA9IEEgLSAyOCB8IDAsIG4gPSBHW0EgLSA2MCA+PiAyXSwgR1tpID4+IDJdID0gVyhXKG4gKyBuKSAqIGspICsgR1tpID4+IDJdLCBpID0gQSAtIDI0IHwgMCwgbiA9IEdbQSAtIDU2ID4+IDJdLCBHW2kgPj4gMl0gPSBXKFcobiArIG4pICogaykgKyBHW2kgPj4gMl0sIGkgPSBBIC0gMjAgfCAwLCBuID0gR1tBIC0gNTIgPj4gMl0sIEdbaSA+PiAyXSA9IFcoVyhuICsgbikgKiBrKSArIEdbaSA+PiAyXSwgaSA9IEEgLSAxNiB8IDAsIG4gPSBHW0EgLSA0OCA+PiAyXSwgR1tpID4+IDJdID0gVyhXKG4gKyBuKSAqIGspICsgR1tpID4+IDJdLCBpID0gQSAtIDEyIHwgMCwgbiA9IEdbQSAtIDQ0ID4+IDJdLCBHW2kgPj4gMl0gPSBXKFcobiArIG4pICogaykgKyBHW2kgPj4gMl0sIGkgPSBBIC0gOCB8IDAsIG4gPSBHW0EgLSA0MCA+PiAyXSwgR1tpID4+IDJdID0gVyhXKG4gKyBuKSAqIGspICsgR1tpID4+IDJdLCBpID0gQSAtIDQgfCAwLCBuID0gR1tBIC0gMzYgPj4gMl0sIEdbaSA+PiAyXSA9IFcoVyhuICsgbikgKiBrKSArIEdbaSA+PiAyXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gejQoQSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMDsKICAgICAgICAgICAgICB2YXIgaSA9IDAsIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoZiA9IEUyKDEsIDQ4KSwgZikgewogICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDIwMCA+PiAyXSwgciA9IGVbaSArIDQgPj4gMl0sIGVbZiA+PiAyXSA9IGVbaSA+PiAyXSwgZVtmICsgNCA+PiAyXSA9IHIsIHIgPSBlW2kgKyAxMiA+PiAyXSwgZVtmICsgOCA+PiAyXSA9IGVbaSArIDggPj4gMl0sIGVbZiArIDEyID4+IDJdID0gciwgciA9IGVbaSArIDIwID4+IDJdLCBlW2YgKyAxNiA+PiAyXSA9IGVbaSArIDE2ID4+IDJdLCBlW2YgKyAyMCA+PiAyXSA9IHIsIHIgPSBlW2kgKyAyNCA+PiAyXSwgZVtmICsgMjQgPj4gMl0gPSByLCBpID0gVTIoWihyLCAyNCkpLCBlW2YgKyAyOCA+PiAyXSA9IGksICFpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBSKGYpLCAwOwogICAgICAgICAgICAgICAgICByID0gZVtlW0EgKyAyMDAgPj4gMl0gKyAyOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICBGMihpLCByLCBaKGVbZiArIDI0ID4+IDJdLCAyNCkpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgUihpKSwgZVtmICsgMjggPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtlW0EgKyAyMDAgPj4gMl0gKyAzNiA+PiAyXSwgZVtmICsgMzYgPj4gMl0gPSByLCBpID0gRTIociwgNDApLCBlW2YgKyA0MCA+PiAyXSA9IGksICFpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBSKGVbZiArIDI4ID4+IDJdKSwgUihmKSwgMDsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmIChlW2VbQSArIDIwMCA+PiAyXSArIDQwID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVbZiArIDM2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gWihuLCA0MCksIHIgPSBlWyhrICsgZVtlW0EgKyAyMDAgPj4gMl0gKyA0MCA+PiAyXSB8IDApICsgMjAgPj4gMl0sIGVbKGkgKyBrIHwgMCkgKyAyMCA+PiAyXSA9IHIsIHQgPSBVMihaKHIsIDI0KSksIHIgPSBlW2YgKyA0MCA+PiAyXSwgaSA9IHIgKyBrIHwgMCwgZVtpICsgMjQgPj4gMl0gPSB0LCAhdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBSKGVbKGVbZiArIDQwID4+IDJdICsgWihpLCA0MCkgfCAwKSArIDI0ID4+IDJdKSwgaSA9IGkgKyAxIHwgMCwgKG4gfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2YgKyA0MCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByID0gZVsoayArIGVbZVtBICsgMjAwID4+IDJdICsgNDAgPj4gMl0gfCAwKSArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyKHQsIHIsIFooZVtpICsgMjAgPj4gMl0sIDI0KSksIGkgPSBlW2YgKyA0MCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIFIodCksIGkgPSBlW2YgKyA0MCA+PiAyXSwgZVsoayArIGkgfCAwKSArIDI0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbKGsgKyBlW2VbQSArIDIwMCA+PiAyXSArIDQwID4+IDJdIHwgMCkgKyA0ID4+IDJdLCBlWyhpICsgayB8IDApICsgNCA+PiAyXSA9IHIsIHQgPSBVMihaKHIsIDI0KSksIHIgPSBlW2YgKyA0MCA+PiAyXSwgaSA9IHIgKyBrIHwgMCwgZVtpICsgMTYgPj4gMl0gPSB0LCAhdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBBID0gWihpLCA0MCksIFIoZVsoQSArIGVbZiArIDQwID4+IDJdIHwgMCkgKyAyNCA+PiAyXSksIFIoZVsoQSArIGVbZiArIDQwID4+IDJdIHwgMCkgKyAxNiA+PiAyXSksIGkgPSBpICsgMSB8IDAsIChuIHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVtmICsgNDAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbKGsgKyBlW2VbQSArIDIwMCA+PiAyXSArIDQwID4+IDJdIHwgMCkgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMih0LCByLCBaKGVbaSArIDQgPj4gMl0sIDI0KSksIGkgPSBlW2YgKyA0MCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIFIodCksIGkgPSBlW2YgKyA0MCA+PiAyXSwgZVsoayArIGkgfCAwKSArIDE2ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGkgKyBrIHwgMCwgZVtyICsgMzIgPj4gMl0gPSAwLCBlW3IgKyAzNiA+PiAyXSA9IDAsIG4gPSBuICsgMSB8IDAsICEobiA+Pj4gMCA8IGRbZiArIDM2ID4+IDJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIFIoaSksIGVbZiArIDQwID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuIGYgfCAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gUihyKSwgUihlW2YgKyAyOCA+PiAyXSksIFIoZiksIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZ2soQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMDsKICAgICAgICAgICAgICBpZiAoayA9IGVbQSArIDQ4ID4+IDJdLCBrID4+PiAwID49IGkgPj4+IDApCiAgICAgICAgICAgICAgICByZXR1cm4gZVtBICsgNDggPj4gMl0gPSBrIC0gaSwgZVtBICsgMzYgPj4gMl0gPSBlW0EgKyAzNiA+PiAyXSArIGksIGsgPSByICsgZVtBICsgNjAgPj4gMl0gfCAwLCBmID0gaSArIGVbQSArIDU2ID4+IDJdIHwgMCwgayA9IGYgPj4+IDAgPCBpID4+PiAwID8gayArIDEgfCAwIDogaywgZVtBICsgNTYgPj4gMl0gPSBmLCBlW0EgKyA2MCA+PiAyXSA9IGssIHEyID0gciwgaSB8IDA7CiAgICAgICAgICAgICAgaWYgKElbQSArIDY4IHwgMF0gJiA0KQogICAgICAgICAgICAgICAgcmV0dXJuIGVbQSArIDQ4ID4+IDJdID0gMCwgZVtBICsgMzYgPj4gMl0gPSBrICsgZVtBICsgMzYgPj4gMl0sIG4gPSBlW0EgKyA2MCA+PiAyXSwgciA9IGVbQSArIDU2ID4+IDJdLCBpID0gciArIGsgfCAwLCBlW0EgKyA1NiA+PiAyXSA9IGksIGVbQSArIDYwID4+IDJdID0gaSA+Pj4gMCA8IHIgPj4+IDAgPyBuICsgMSB8IDAgOiBuLCBxMiA9IGsgPyAwIDogLTEsIChrIHx8IC0xKSB8IDA7CiAgICAgICAgICAgICAgayAmJiAoZVtBICsgNDggPj4gMl0gPSAwLCBlW0EgKyAzNiA+PiAyXSA9IGVbQSArIDMyID4+IDJdLCBsID0gaSwgdCA9IGssIGkgPSBpIC0gayB8IDAsIHIgPSByIC0gKGsgPj4+IDAgPiBsID4+PiAwKSB8IDApOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICgociB8IDApID4gMCA/IGwgPSAxIDogbCA9ICEhaSAmIChyIHwgMCkgPj0gMCwgbCkKICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW0EgKyAxMiA+PiAyXSwgayA9IHIgKyBuIHwgMCwgYSA9IGkgKyB0IHwgMCwgayA9IGVbQSArIDYwID4+IDJdICsgKGEgPj4+IDAgPCB0ID4+PiAwID8gayArIDEgfCAwIDogaykgfCAwLCB1ID0gYSwgYSA9IGEgKyBlW0EgKyA1NiA+PiAyXSB8IDAsIGsgPSB1ID4+PiAwID4gYSA+Pj4gMCA/IGsgKyAxIHwgMCA6IGssIChrIHwgMCkgPT0gKGwgfCAwKSAmIGEgPj4+IDAgPiBkW0EgKyA4ID4+IDJdIHwgayA+Pj4gMCA+IGwgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgIFEoZiwgNCwgMjc2OTIsIDApLCBlW0EgKyA0OCA+PiAyXSA9IDAsIGVbQSArIDM2ID4+IDJdID0gZVtBICsgMzIgPj4gMl0sIGkgPSBuICsgZVtBICsgNjAgPj4gMl0gfCAwLCByID0gdCArIGVbQSArIDU2ID4+IDJdIHwgMCwgaSA9IHIgPj4+IDAgPCB0ID4+PiAwID8gaSArIDEgfCAwIDogaSwgZVtBICsgNTYgPj4gMl0gPSByLCBlW0EgKyA2MCA+PiAyXSA9IGksIGYgPSBlW0EgKyA4ID4+IDJdLCB0ID0gZiAtIHIgfCAwLCBrID0gZVtBICsgMTIgPj4gMl0sIG4gPSBrIC0gKChyID4+PiAwID4gZiA+Pj4gMCkgKyBpIHwgMCkgfCAwLCBsID0gbzJbZVtBICsgMjggPj4gMl1dKGYsIGssIGVbQSA+PiAyXSkgfCAwLCBhID0gZVtBICsgNjggPj4gMl0sIGwgJiYgKGVbQSArIDU2ID4+IDJdID0gZiwgZVtBICsgNjAgPj4gMl0gPSBrKSwgZVtBICsgNjggPj4gMl0gPSBhIHwgNCwgQSA9IChyIHwgMCkgPT0gKGYgfCAwKSAmIChpIHwgMCkgPT0gKGsgfCAwKSwgaSA9IEEgPyAtMSA6IHQ7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoayA9IG8yW2VbQSArIDI0ID4+IDJdXShpLCByLCBlW0EgPj4gMl0pIHwgMCwgbCA9IHEyLCBhID0gbCwgKGsgJiBhKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgUShmLCA0LCAyNzY5MiwgMCksIGVbQSArIDY4ID4+IDJdID0gZVtBICsgNjggPj4gMl0gfCA0LCBrID0gbiArIGVbQSArIDYwID4+IDJdIHwgMCwgaSA9IHQgKyBlW0EgKyA1NiA+PiAyXSB8IDAsIGsgPSBpID4+PiAwIDwgdCA+Pj4gMCA/IGsgKyAxIHwgMCA6IGssIGVbQSArIDU2ID4+IDJdID0gaSwgZVtBICsgNjAgPj4gMl0gPSBrLCBBID0gIShuIHwgdCksIGkgPSBBID8gLTEgOiB0OwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgYSB8IDAsIHQgPSBrICsgdCB8IDAsIG4gPSB0ID4+PiAwIDwgayA+Pj4gMCA/IG4gKyAxIHwgMCA6IG4sIGwgPSBpLCBpID0gaSAtIGsgfCAwLCByID0gciAtICgoayA+Pj4gMCA+IGwgPj4+IDApICsgYSB8IDApIHwgMCwgISghIWkgJiAociB8IDApID49IDAgfCAociB8IDApID4gMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGkgPSBuICsgZVtBICsgNjAgPj4gMl0gfCAwLCByID0gdCArIGVbQSArIDU2ID4+IDJdIHwgMCwgaSA9IHIgPj4+IDAgPCB0ID4+PiAwID8gaSArIDEgfCAwIDogaSwgZVtBICsgNTYgPj4gMl0gPSByLCBlW0EgKyA2MCA+PiAyXSA9IGksIHEyID0gbiwgdCB8IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBxMiA9IEEgPyAtMSA6IG4sIGkgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGhrKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDA7CiAgICAgICAgICAgICAgayA9IFggLSA4MCB8IDAsIFggPSBrOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDw9IDIpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCAyNjAxOSwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoSVtBICsgMTI0IHwgMF0pIHsKICAgICAgICAgICAgICAgICAgUShmLCA0LCAyMTc3MiwgMCksIG4gPSAxOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbiA9IDEsIGgyKGksIEEgKyA0MCB8IDAsIDEpLCBoMihpICsgMSB8IDAsIEEgKyA1MiB8IDAsIDEpLCBoMihpICsgMiB8IDAsIEEgKyA0NCB8IDAsIDEpLCB0ID0gaSArIDMgfCAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBBOgogICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobCA9IGVbQSArIDQwID4+IDJdLCBsIC0gMSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8PSA2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtrICsgMTYgPj4gMl0gPSByLCBRKGYsIDEsIDI3MTUwLCBrICsgMTYgfCAwKSwgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA9PSA3IHwgZVtBICsgNDggPj4gMl0gPT0gMTQgfHwgKGVbayArIDQ4ID4+IDJdID0gciwgUShmLCAyLCAyNzE1MCwgayArIDQ4IHwgMCkpLCBoMih0LCBBICsgNDggfCAwLCA0KSwgZVtBICsgNDggPj4gMl0gIT0gMTQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBVMigzNiksICF0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDAsIFEoZiwgMSwgMTc4ODgsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZVt0ID4+IDJdID0gMTQsIGVbayArIDY0ID4+IDJdID0gMCwgZVtrICsgNTYgPj4gMl0gPSAwLCBlW2sgKyA3MiA+PiAyXSA9IDAsIGVbayArIDYwID4+IDJdID0gMCwgZVtrICsgNjggPj4gMl0gPSAwLCBlW2sgKyA3NiA+PiAyXSA9IDAsIG4gPSA0NDcwMDY0LCBlW2sgKyA1MiA+PiAyXSA9IDQ0NzAwNjQsIGVbdCArIDQgPj4gMl0gPSAxMTQ1MzkwNTkyOwogICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgIT0gNykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPT0gMzUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDIoaSArIDcgfCAwLCBrICsgNzYgfCAwLCA0KSwgaDIoaSArIDExIHwgMCwgayArIDcyIHwgMCwgNCksIGgyKGkgKyAxNSB8IDAsIGsgKyA2OCB8IDAsIDQpLCBoMihpICsgMTkgfCAwLCBrIC0gLTY0IHwgMCwgNCksIGgyKGkgKyAyMyB8IDAsIGsgKyA2MCB8IDAsIDQpLCBoMihpICsgMjcgfCAwLCBrICsgNTYgfCAwLCA0KSwgaDIoaSArIDMxIHwgMCwgayArIDUyIHwgMCwgNCksIGVbdCArIDQgPj4gMl0gPSAwLCBuID0gZVtrICsgNTIgPj4gMl0sIHIgPSBlW2sgKyA1NiA+PiAyXSwgZiA9IGVbayArIDY0ID4+IDJdLCBhID0gZVtrICsgNjggPj4gMl0sIHUgPSBlW2sgKyA3NiA+PiAyXSwgbCA9IGVbayArIDcyID4+IDJdLCBpID0gZVtrICsgNjAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2sgKyAzMiA+PiAyXSA9IHIsIFEoZiwgMiwgMjcxODYsIGsgKyAzMiB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMCwgZiA9IDAsIGwgPSAwLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlW3QgKyAyNCA+PiAyXSA9IGksIGVbdCArIDE2ID4+IDJdID0gYSwgZVt0ICsgOCA+PiAyXSA9IHUsIGVbdCArIDMyID4+IDJdID0gbiwgZVt0ICsgMjggPj4gMl0gPSByLCBlW3QgKyAyMCA+PiAyXSA9IGYsIGVbdCArIDEyID4+IDJdID0gbCwgZVtBICsgMTEyID4+IDJdID0gMCwgZVtBICsgMTA4ID4+IDJdID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gciAtIDMgfCAwLCBlW0EgKyAxMTIgPj4gMl0gPSBpLCBmID0gRTIoMSwgaSksIGVbQSArIDEwOCA+PiAyXSA9IGYsICFmKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPD0gMykKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IDA7IGgyKHQsIGsgKyA3NiB8IDAsIDEpLCBGW2VbQSArIDEwOCA+PiAyXSArIHIgfCAwXSA9IGVbayArIDc2ID4+IDJdLCB0ID0gdCArIDEgfCAwLCByID0gciArIDEgfCAwLCAoaSB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGwgPj4+IDAgPCAzKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBlW2sgPj4gMl0gPSBsLCBRKGYsIDQsIDI4MzAwLCBrKTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIG4gPSAwLCBlW0EgKyAxMTIgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbiA9IDEsIEZbQSArIDEyNCB8IDBdID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBrICsgODAgfCAwLCBuIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBpMShBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDA7CiAgICAgICAgICAgICAgaWYgKG4gPSBlW0EgKyA0OCA+PiAyXSwgbiA+Pj4gMCA+PSByID4+PiAwKQogICAgICAgICAgICAgICAgcmV0dXJuIEYyKGksIGVbQSArIDM2ID4+IDJdLCByKSwgZVtBICsgMzYgPj4gMl0gPSBlW0EgKyAzNiA+PiAyXSArIHIsIGVbQSArIDQ4ID4+IDJdID0gZVtBICsgNDggPj4gMl0gLSByLCB0ID0gZVtBICsgNjAgPj4gMl0sIGkgPSBlW0EgKyA1NiA+PiAyXSArIHIgfCAwLCB0ID0gaSA+Pj4gMCA8IHIgPj4+IDAgPyB0ICsgMSB8IDAgOiB0LCBlW0EgKyA1NiA+PiAyXSA9IGksIGVbQSArIDYwID4+IDJdID0gdCwgcjsKICAgICAgICAgICAgICBpZiAoSVtBICsgNjggfCAwXSAmIDQpCiAgICAgICAgICAgICAgICByZXR1cm4gRjIoaSwgZVtBICsgMzYgPj4gMl0sIG4pLCByID0gZVtBICsgNDggPj4gMl0sIGVbQSArIDQ4ID4+IDJdID0gMCwgZVtBICsgMzYgPj4gMl0gPSByICsgZVtBICsgMzYgPj4gMl0sIGkgPSBlW0EgKyA2MCA+PiAyXSwgZiA9IHIsIHIgPSBlW0EgKyA1NiA+PiAyXSArIHIgfCAwLCBpID0gZiA+Pj4gMCA+IHIgPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBlW0EgKyA1NiA+PiAyXSA9IHIsIGVbQSArIDYwID4+IDJdID0gaSwgbiB8fCAtMTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICBsID0gRjIoaSwgZVtBICsgMzYgPj4gMl0sIG4pLCBhID0gZVtBICsgMzIgPj4gMl0sIGVbQSArIDM2ID4+IDJdID0gYSwgayA9IGVbQSArIDQ4ID4+IDJdLCBlW0EgKyA0OCA+PiAyXSA9IDAsIGkgPSBlW0EgKyA2MCA+PiAyXSwgdCA9IGVbQSArIDU2ID4+IDJdICsgayB8IDAsIGkgPSB0ID4+PiAwIDwgayA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGVbQSArIDU2ID4+IDJdID0gdCwgZVtBICsgNjAgPj4gMl0gPSBpLCByID0gciAtIGsgfCAwLCBpID0gayArIGwgfCAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYSA9IGVbQSArIDMyID4+IDJdLCBlW0EgKyAzNiA+PiAyXSA9IGE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgayA9IGVbQSA+PiAyXSwgbCA9IGVbQSArIDE2ID4+IDJdLCB0ID0gZVtBICsgNjQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID4+PiAwID4gciA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbzJbbCB8IDBdKGEsIHQsIGspIHwgMCwgZVtBICsgNDggPj4gMl0gPSBsLCAobCB8IDApID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8PSBsID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBGMihpLCBlW0EgKyAzNiA+PiAyXSwgbCksIGEgPSBlW0EgKyAzMiA+PiAyXSwgZVtBICsgMzYgPj4gMl0gPSBhLCBrID0gZVtBICsgNDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IG8yW2wgfCAwXShpLCByLCBrKSB8IDAsIGVbQSArIDQ4ID4+IDJdID0gaywgKGsgfCAwKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8PSBrID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlW0EgKyAzMiA+PiAyXSwgZVtBICsgMzYgPj4gMl0gPSBhLCBsID0gazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDQ4ID4+IDJdID0gMCwgdCA9IGVbQSArIDYwID4+IDJdLCB1ID0gZVtBICsgNTYgPj4gMl0gKyBrIHwgMCwgdCA9IHUgPj4+IDAgPCBrID4+PiAwID8gdCArIDEgfCAwIDogdCwgZVtBICsgNTYgPj4gMl0gPSB1LCBlW0EgKyA2MCA+PiAyXSA9IHQsIGkgPSBpICsgayB8IDAsIHIgPSByIC0gayB8IDAsIG4gPSBuICsgbCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIEYyKGksIGVbQSArIDM2ID4+IDJdLCByKSwgZVtBICsgMzYgPj4gMl0gPSBlW0EgKyAzNiA+PiAyXSArIHIsIGVbQSArIDQ4ID4+IDJdID0gZVtBICsgNDggPj4gMl0gLSByLCBpID0gZVtBICsgNjAgPj4gMl0sIGYgPSBlW0EgKyA1NiA+PiAyXSArIHIgfCAwLCBpID0gZiA+Pj4gMCA8IHIgPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBlW0EgKyA1NiA+PiAyXSA9IGYsIGVbQSArIDYwID4+IDJdID0gaSwgciArIG4gfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGVbQSArIDQ4ID4+IDJdID0gMCwgZVtBICsgMzYgPj4gMl0gPSBlW0EgKyAzMiA+PiAyXSwgaSA9IGVbQSArIDYwID4+IDJdLCByID0gZVtBICsgNTYgPj4gMl0gKyBrIHwgMCwgaSA9IHIgPj4+IDAgPCBrID4+PiAwID8gaSArIDEgfCAwIDogaSwgZVtBICsgNTYgPj4gMl0gPSByLCBlW0EgKyA2MCA+PiAyXSA9IGksIGsgKyBuIHwgMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFEoZiwgNCwgMjc2OTIsIDApLCBlW0EgKyA0OCA+PiAyXSA9IDAsIGVbQSArIDY4ID4+IDJdID0gZVtBICsgNjggPj4gMl0gfCA0LCBuIHx8IC0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGQ0KEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwOwogICAgICAgICAgICAgIGlmIChrID0gZVtBICsgMjQgPj4gMl0sIHUgPSBlW2sgKyAxNiA+PiAyXSwgIXUpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICB0ID0gZVtrICsgMjQgPj4gMl0sIGsgPSBlW2VbZVtBICsgMjAgPj4gMl0gPj4gMl0gKyAyMCA+PiAyXTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICByID0gZVt0ICsgMjQgPj4gMl0sIEEgPSBlW2sgKyAyOCA+PiAyXSArIFooZVtrICsgMjQgPj4gMl0sIDE1MikgfCAwLCBuID0gZVtBIC0gMTQwID4+IDJdLCBsID0gZVtBIC0gMTQ4ID4+IDJdLCBmID0gbiAtIGwgfCAwLCBBID0gZVtBIC0gMTQ0ID4+IDJdIC0gZVtBIC0gMTUyID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgPT0gKGwgfCAwKSB8fCAoZDAoQSwgMCwgZiwgMCksICFxMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGYgPSBaKEEsIGYpOwogICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IChyID4+PiAzIHwgMCkgKyAoKHIgJiA3KSAhPSAwKSB8IDAsIHIgPSAoQSB8IDApID09IDMgPyA0IDogQSwgIXIgfHwgKGQwKHIsIDAsIGYsIDApLCAhcTIpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IC0xLCByID0gWihyLCBmKSwgciA+Pj4gMCA+IChpIF4gLTEpID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBrICsgNzYgfCAwLCB0ID0gdCArIDUyIHwgMCwgaSA9IGkgKyByIHwgMCwgQSA9IGksIGEgPSBhICsgMSB8IDAsICh1IHwgMCkgPT0gKGEgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGkgPSAwLCAhZVtBICsgNjQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW3QgKyAyNCA+PiAyXSwgQSA9IGVbayArIDI4ID4+IDJdICsgWihlW2sgKyAyNCA+PiAyXSwgMTUyKSB8IDAsIG4gPSBlW0EgLSA0ID4+IDJdLCBsID0gZVtBIC0gMTIgPj4gMl0sIGYgPSBuIC0gbCB8IDAsIEEgPSBlW0EgLSA4ID4+IDJdIC0gZVtBIC0gMTYgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA9PSAobCB8IDApIHx8IChkMChBLCAwLCBmLCAwKSwgIXEyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZiA9IFooQSwgZik7CiAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gKHIgPj4+IDMgfCAwKSArICgociAmIDcpICE9IDApIHwgMCwgciA9IChBIHwgMCkgPT0gMyA/IDQgOiBBLCAhciB8fCAoZDAociwgMCwgZiwgMCksICFxMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gLTEsIHIgPSBaKHIsIGYpLCByID4+PiAwID4gKGkgXiAtMSkgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGsgKyA3NiB8IDAsIHQgPSB0ICsgNTIgfCAwLCBpID0gaSArIHIgfCAwLCBBID0gaSwgYSA9IGEgKyAxIHwgMCwgKHUgfCAwKSA9PSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICByID0gZVt0ICsgMjQgPj4gMl0sIEEgPSBlW2sgKyAyOCA+PiAyXSArIFooZVtrICsgMjQgPj4gMl0sIDE1MikgfCAwLCBuID0gZVtBIC0gMTQwID4+IDJdLCBsID0gZVtBIC0gMTQ4ID4+IDJdLCBmID0gbiAtIGwgfCAwLCBBID0gZVtBIC0gMTQ0ID4+IDJdIC0gZVtBIC0gMTUyID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA9PSAobCB8IDApIHx8IChkMChBLCAwLCBmLCAwKSwgIXEyKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGYgPSBaKEEsIGYpOwogICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gKHIgPj4+IDMgfCAwKSArICgociAmIDcpICE9IDApIHwgMCwgciA9IChBIHwgMCkgPT0gMyA/IDQgOiBBLCAhciB8fCAoZDAociwgMCwgZiwgMCksICFxMikpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IC0xLCByID0gWihyLCBmKSwgciA+Pj4gMCA+IChpIF4gLTEpID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGsgKyA3NiB8IDAsIHQgPSB0ICsgNTIgfCAwLCBpID0gaSArIHIgfCAwLCBBID0gaSwgYSA9IGEgKyAxIHwgMCwgKHUgfCAwKSA9PSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBBOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gc2koQSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMDsKICAgICAgICAgICAgICB2YXIgaSA9IDAsIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwOwogICAgICAgICAgICAgIGlmIChBKSB7CiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgIGlmIChlW0EgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICBpID0gZVtBICsgMTIgPj4gMl0sIGkgJiYgKHZpKGkpLCBSKGVbQSArIDEyID4+IDJdKSwgZVtBICsgMTIgPj4gMl0gPSAwKSwgaSA9IGVbQSArIDE2ID4+IDJdLCBpICYmIChSKGkpLCBlW0EgKyAxNiA+PiAyXSA9IDAsIGVbQSArIDIwID4+IDJdID0gMCksIFIoZVtBICsgNjQgPj4gMl0pLCBlW0EgKyA2MCA+PiAyXSA9IDAsIGVbQSArIDY0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChpID0gZVtBICsgNDQgPj4gMl0sIGkgJiYgKFIoaSksIGVbQSArIDQ0ID4+IDJdID0gMCksIGkgPSBlW0EgKyAzMiA+PiAyXSwgaSAmJiAoUihpKSwgZVtBICsgMzIgPj4gMl0gPSAwLCBlW0EgKyAzNiA+PiAyXSA9IDApLCBpID0gZVtBICsgNTIgPj4gMl0sICFpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIFIoaSksIGVbQSArIDUyID4+IDJdID0gMCwgZVtBICsgNTYgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHdpKGVbQSArIDIwOCA+PiAyXSksIGkgPSBlW0EgKyAxNTYgPj4gMl0sIGkpIHsKICAgICAgICAgICAgICAgICAgaWYgKGYgPSBaKGVbQSArIDEwNCA+PiAyXSwgZVtBICsgMTA4ID4+IDJdKSwgZikgewogICAgICAgICAgICAgICAgICAgIGZvciAoOyB2aShpKSwgaSA9IGkgKyA1NjQ0IHwgMCwgciA9IHIgKyAxIHwgMCwgKGYgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDE1NiA+PiAyXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBSKGkpLCBlW0EgKyAxNTYgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyAxMTYgPj4gMl0sIGkpIHsKICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW0EgKyAxMTIgPj4gMl0sIHIpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBmID0gZVtlW0EgKyAxMTYgPj4gMl0gKyAoaSA8PCAzKSA+PiAyXSwgZiAmJiAoUihmKSwgciA9IGVbQSArIDExMiA+PiAyXSksIGkgPSBpICsgMSB8IDAsIHIgPj4+IDAgPiBpID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDExNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW0EgKyAxMTIgPj4gMl0gPSAwLCBSKGkpLCBlW0EgKyAxMTYgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKFIoZVtBICsgMTM2ID4+IDJdKSwgZVtBICsgMTIwID4+IDJdID0gMCwgZVtBICsgMTM2ID4+IDJdID0gMCwgUihlW0EgKyAxMDAgPj4gMl0pLCBlW0EgKyAxMDAgPj4gMl0gPSAwLCBJW0EgKyAxODggfCAwXSAmIDIgfHwgUihlW0EgKyAxNjggPj4gMl0pLCBkMihBICsgODAgfCAwLCAwLCAxMTIpLCB5aShlW0EgKyAxOTIgPj4gMl0pLCBlW0EgKyAxOTIgPj4gMl0gPSAwLCB5aShlW0EgKyAxOTYgPj4gMl0pLCBlW0EgKyAxOTIgPj4gMl0gPSAwLCBpID0gZVtBICsgMjAwID4+IDJdLCBpKSB7CiAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtpICsgMjggPj4gMl0sIHIgJiYgKFIociksIGVbaSArIDI4ID4+IDJdID0gMCksIHIgPSBlW2kgKyA0MCA+PiAyXSwgcikgewogICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyAzNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBmID0gWih0LCA0MCksIGsgPSBlWyhmICsgciB8IDApICsgMzYgPj4gMl0sIGsgJiYgKFIoayksIHIgPSBlW2kgKyA0MCA+PiAyXSwgZVsoZiArIHIgfCAwKSArIDM2ID4+IDJdID0gMCksIGsgPSBlWyhyICsgZiB8IDApICsgMTYgPj4gMl0sIGsgJiYgKFIoayksIHIgPSBlW2kgKyA0MCA+PiAyXSwgZVsoZiArIHIgfCAwKSArIDE2ID4+IDJdID0gMCksIGsgPSBlWyhyICsgZiB8IDApICsgMjQgPj4gMl0sIGsgJiYgKFIoayksIHIgPSBlW2kgKyA0MCA+PiAyXSwgZVsoZiArIHIgfCAwKSArIDI0ID4+IDJdID0gMCksIHQgPSB0ICsgMSB8IDAsIHQgPj4+IDAgPCBkW2kgKyAzNiA+PiAyXTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgUihyKSwgZVtpICsgNDAgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIFIoaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW0EgKyAyMDAgPj4gMl0gPSAwLCB5MShlW0EgKyA3MiA+PiAyXSksIGVbQSArIDcyID4+IDJdID0gMCwgeTEoZVtBICsgNzYgPj4gMl0pLCBlW0EgKyA3NiA+PiAyXSA9IDAsIGdyKGVbQSArIDIxMiA+PiAyXSksIGVbQSArIDIxMiA+PiAyXSA9IDAsIFIoQSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEs0KEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwLCBjID0gMCwgdiA9IDAsIEMgPSAwLCBtID0gMDsKICAgICAgICAgICAgICBrID0gZVtBICsgMjggPj4gMl0gKyBaKGksIDE1MikgfCAwLCByID0gZVtrIC0gMTQ0ID4+IDJdIC0gZVtrIC0gMTUyID4+IDJdIHwgMCwgbiA9IHIsIGsgPSBlW2sgLSAxNDAgPj4gMl0gLSBlW2sgLSAxNDggPj4gMl0gfCAwLCB0ID0gaywgciA9IHIgPj4+IDAgPj0gNjQgPyA2NCA6IHIsIGYgPSBrID4+PiAwID49IDY0ID8gNjQgOiBrOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKCFuIHwgIWsgfCAoIXIgfCAhZikgfHwgciA+Pj4gMCA+IDQyOTQ5NjcyOTUgLyAoZiA+Pj4gMCkgPj4+IDIgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgayA9IEUyKDEsIDI4KSwgZVtrICsgMTIgPj4gMl0gPSBmLCBlW2sgKyA4ID4+IDJdID0gciwgZVtrICsgNCA+PiAyXSA9IHQsIGVbayA+PiAyXSA9IG4sIGwgPSB0LCB0ID0gZiArIHQgfCAwLCBhID0gbCA+Pj4gMCA+IHQgPj4+IDAgPyAxIDogYSwgZiA9IG4wKHQgLSAxIHwgMCwgYSAtICF0IHwgMCwgZiwgMCksIGVbayArIDIwID4+IDJdID0gZiwgdCA9IDAsIGwgPSBuLCBuID0gciArIG4gfCAwLCB0ID0gbCA+Pj4gMCA+IG4gPj4+IDAgPyAxIDogdCwgciA9IG4wKG4gLSAxIHwgMCwgdCAtICFuIHwgMCwgciwgMCksIGVbayArIDE2ID4+IDJdID0gciwgZDAoZiwgMCwgciwgMCk7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAocTIgfHwgKHIgPSBFMig0LCBaKHIsIGYpKSwgZVtrICsgMjQgPj4gMl0gPSByLCAhcikpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgUihrKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoIWspCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSBaKHMsIDE1MiksIHQgPSB3ICsgZVtBICsgMjggPj4gMl0gfCAwLCByID0gZVt0ICsgMjQgPj4gMl0sIHIpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHYgPSB0ICsgMjggfCAwLCBmID0gZVt0ICsgMjAgPj4gMl0sIG4gPSBlW3QgKyAxNiA+PiAyXSwgZyA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChaKGYsIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gWihnLCAzNikgKyB2IHwgMCwgaCA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGVbYSArIDIwID4+IDJdICsgWihoLCA0MCkgfCAwLCByID0gZVtvICsgMjAgPj4gMl0sIHUgPSBlW28gKyAxNiA+PiAyXSwgWihyLCB1KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZVtvICsgMjQgPj4gMl0gKyAobiA8PCA2KSB8IDAsIEIgPSBlW2YgKyA2MCA+PiAyXSwgQikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBlW2YgKyAxMiA+PiAyXSwgQyA9IGVbZiArIDIwID4+IDJdLCBtID0gZVtmICsgMTYgPj4gMl0sIGMgPSBlW2YgKyA4ID4+IDJdLCBmID0gYyAtIGVbYSA+PiAyXSB8IDAsIGwgPSBlW2EgKyAxNiA+PiAyXSwgbCAmIDEgJiYgKHIgPSBlW0EgKyAyOCA+PiAyXSArIHcgfCAwLCBmID0gKGVbciAtIDE0NCA+PiAyXSArIGYgfCAwKSAtIGVbciAtIDE1MiA+PiAyXSB8IDApLCByID0gdSAtIGVbYSArIDQgPj4gMl0gfCAwLCBsICYgMiAmJiAobCA9IHIsIHIgPSBlW0EgKyAyOCA+PiAyXSArIHcgfCAwLCByID0gKGwgKyBlW3IgLSAxNDAgPj4gMl0gfCAwKSAtIGVbciAtIDE0OCA+PiAyXSB8IDApLCBsID0gZiwgZiA9IG0gLSBjIHwgMCwgIWFlKGssIGwsIHIsIGwgKyBmIHwgMCwgKEMgLSB1IHwgMCkgKyByIHwgMCwgQiwgMSwgZiwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZVtvICsgMTYgPj4gMl0sIHIgPSBlW28gKyAyMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgMSB8IDAsICEobiA+Pj4gMCA8IFoociwgdSkgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbdCArIDE2ID4+IDJdLCBmID0gZVt0ICsgMjAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGggKyAxIHwgMCwgIShoID4+PiAwIDwgWihmLCBuKSA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVt0ICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBnICsgMSB8IDAsICEoZyA+Pj4gMCA8IHIgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChzID0gcyArIDEgfCAwLCAocyB8IDApID09IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiAkMShrKSwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBqNChBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDA7CiAgICAgICAgICAgICAgayA9IEUyKDEsIDM2KSwgZVtpICsgNzIgPj4gMl0gPSBrOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKCFrKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoYzAoZVtpICsgMTk2ID4+IDJdLCAxMjAsIGYpICYmIGMwKGVbaSArIDE5NiA+PiAyXSwgMTIxLCBmKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB1ID0gZVtpICsgMTk2ID4+IDJdLCB0ID0gZVt1ID4+IDJdLCBuID0gZVt1ICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDEsIG8gPSB0ICYgMSwgKHQgfCAwKSA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSB0ICYgLTI7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFrIHx8IChhID0gMCwgIShvMltlW24gPj4gMl1dKGksIEEsIGYpIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChvMltlW24gKyA0ID4+IDJdXShpLCBBLCBmKSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gYSwgbiA9IG4gKyA4IHwgMCwgbCA9IGwgKyAyIHwgMCwgKHQgfCAwKSA9PSAobCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBvID8gMCA6IGssIHQgfCAhbyB8fCAoayA9IChvMltlW24gPj4gMl1dKGksIEEsIGYpIHwgMCkgIT0gMCksIGVbdSA+PiAyXSA9IDAsIGspCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlW3UgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoYzAoZVtpICsgMTkyID4+IDJdLCAxMjIsIGYpICYmIGMwKGVbaSArIDE5MiA+PiAyXSwgMTIzLCBmKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB1ID0gZVtpICsgMTkyID4+IDJdLCB0ID0gZVt1ID4+IDJdLCBuID0gZVt1ICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDEsIG8gPSB0ICYgMSwgKHQgfCAwKSA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSB0ICYgLTIsIGwgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghayB8fCAoYSA9IDAsICEobzJbZVtuID4+IDJdXShpLCBBLCBmKSB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAobzJbZVtuICsgNCA+PiAyXV0oaSwgQSwgZikgfCAwKSAhPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGEsIG4gPSBuICsgOCB8IDAsIGwgPSBsICsgMiB8IDAsICh0IHwgMCkgPT0gKGwgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gbyA/IDAgOiBrLCB0IHwgIW8gfHwgKGsgPSAobzJbZVtuID4+IDJdXShpLCBBLCBmKSB8IDApICE9IDApLCBlW3UgPj4gMl0gPSAwLCBrKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVt1ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoQSA9IEUyKDEsIDM2KSwgZVtyID4+IDJdID0gQSwgIUEpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgQmkoZVtpICsgNzIgPj4gMl0sIEEpLCBBID0gWihlW2kgKyAxMDggPj4gMl0sIGVbaSArIDEwNCA+PiAyXSksIGVbZVtpICsgMjAwID4+IDJdICsgMzYgPj4gMl0gPSBBLCBsID0gRTIoQSwgNDApLCBBID0gZVtpICsgMjAwID4+IDJdLCBlW0EgKyA0MCA+PiAyXSA9IGw7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWwpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIGlmICghZVtBICsgMzYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBaKG4sIDQwKSwgQSA9IGYgKyBsIHwgMCwgZVtBICsgMjAgPj4gMl0gPSAwLCBlW0EgKyAyOCA+PiAyXSA9IDEwMCwgQSA9IEUyKDEwMCwgMjQpLCBrID0gZVtpICsgMjAwID4+IDJdLCBsID0gZVtrICsgNDAgPj4gMl0sIGVbKGYgKyBsIHwgMCkgKyAyNCA+PiAyXSA9IEEsICFBKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSAxLCBuID0gbiArIDEgfCAwLCAhKG4gPj4+IDAgPCBkW2sgKyAzNiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHkxKGVbciA+PiAyXSksIGcgPSAwLCBlW3IgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGcgfCAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4geTEoZVtpICsgNzIgPj4gMl0pLCBlW2kgKyA3MiA+PiAyXSA9IDAsIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gc2soQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDA7CiAgICAgICAgICAgICAgdSA9IGVbQSArIDcyID4+IDJdLCBvID0gWihlW0EgKyAxMDQgPj4gMl0sIGVbQSArIDEwOCA+PiAyXSk7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKG8pCiAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGVbdSArIDE2ID4+IDJdLCB3ID0gWihpLCAxMDgwKSwgZyA9IFooaSwgaSkgPDwgMiwgayA9IGVbQSArIDEyID4+IDJdLCBmID0gZVtBICsgMTU2ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICAgIGlmIChoID0gZVtmICsgNTU4NCA+PiAyXSwgaSA9IEYyKGYsIGssIDU2NDQpLCBlW2kgKyA1NjA4ID4+IDJdID0gMCwgZVtpICsgNTU4OCA+PiAyXSA9IC0xLCBlW2kgKyA1MTY4ID4+IDJdID0gMCwgZVtpICsgNTYzNiA+PiAyXSA9IDAsIGVbaSArIDU2MTYgPj4gMl0gPSAwLCBlW2kgKyA1NjI0ID4+IDJdID0gMCwgZVtpICsgNTYyOCA+PiAyXSA9IDAsIGVbaSArIDU1ODQgPj4gMl0gPSBoLCBGW2kgKyA1NjQwIHwgMF0gPSBJW2kgKyA1NjQwIHwgMF0gJiAyNTIsIGVbayArIDU2MDggPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gVTIoZyksIGVbaSArIDU2MDggPj4gMl0gPSBmLCAhZikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICBGMihmLCBlW2sgKyA1NjA4ID4+IDJdLCBnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBaKGVbayArIDU2MjQgPj4gMl0sIDIwKSwgZiA9IFUyKHQpLCBlW2kgKyA1NjE2ID4+IDJdID0gZiwgbCA9IDAsICFmKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpZiAoRjIoZiwgZVtrICsgNTYxNiA+PiAyXSwgdCksIG4gPSBlW2sgKyA1NjIwID4+IDJdLCBuKQogICAgICAgICAgICAgICAgICAgICAgZm9yIChmID0gZVtrICsgNTYxNiA+PiAyXSwgdCA9IGVbaSArIDU2MTYgPj4gMl0sIGEgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtmICsgMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IFUyKGVbZiArIDE2ID4+IDJdKSwgZVt0ICsgMTIgPj4gMl0gPSBuLCAhbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIEYyKG4sIGVbZiArIDEyID4+IDJdLCBlW2YgKyAxNiA+PiAyXSksIG4gPSBlW2sgKyA1NjIwID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyA1NjI0ID4+IDJdID0gZVtpICsgNTYyNCA+PiAyXSArIDEsIHQgPSB0ICsgMjAgfCAwLCBmID0gZiArIDIwIHwgMCwgYSA9IGEgKyAxIHwgMCwgIShhID4+PiAwIDwgbiA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBaKGVbayArIDU2MzYgPj4gMl0sIDIwKSwgZiA9IFUyKHQpLCBlW2kgKyA1NjI4ID4+IDJdID0gZiwgIWYpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGlmIChGMihmLCBlW2sgKyA1NjI4ID4+IDJdLCB0KSwgbCA9IGVbayArIDU2MzYgPj4gMl0sIGVbaSArIDU2MzYgPj4gMl0gPSBsLCBsKQogICAgICAgICAgICAgICAgICAgICAgZm9yIChmID0gZVtrICsgNTYyOCA+PiAyXSwgdCA9IGVbaSArIDU2MjggPj4gMl0sIGEgPSAwOyBuID0gZVtmICsgOCA+PiAyXSwgbiAmJiAoZVt0ICsgOCA+PiAyXSA9IGVbaSArIDU2MTYgPj4gMl0gKyAobiAtIGVbayArIDU2MTYgPj4gMl0gfCAwKSksIG4gPSBlW2YgKyAxMiA+PiAyXSwgbiAmJiAoZVt0ICsgMTIgPj4gMl0gPSBlW2kgKyA1NjE2ID4+IDJdICsgKG4gLSBlW2sgKyA1NjE2ID4+IDJdIHwgMCkpLCB0ID0gdCArIDIwIHwgMCwgZiA9IGYgKyAyMCB8IDAsIGEgPSBhICsgMSB8IDAsIChsIHwgMCkgIT0gKGEgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaWYgKEYyKGgsIGVbayArIDU1ODQgPj4gMl0sIHcpLCBmID0gaSArIDU2NDQgfCAwLCBzID0gcyArIDEgfCAwLCAobyB8IDApID09IChzIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGwgPSAxLCBpID0gcTYoMSksIGVbQSArIDIwOCA+PiAyXSA9IGksICFpKQogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIGlmIChSNihpLCB1LCBBICsgODAgfCAwLCBlW0EgKyAyMTIgPj4gMl0pKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgd2koZVtBICsgMjA4ID4+IDJdKSwgbCA9IDAsIGVbQSArIDIwOCA+PiAyXSA9IDAsIFEociwgMSwgNjE3OSwgMCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBsIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBMNChBLCBpKSB7CiAgICAgICAgICAgICAgdmFyIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyA2MCA+PiAyXSwgIWspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgMTYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChhID0gVTIoWihrLCA1MikpLCAhYSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBpZiAoayA9IDAsIGVbaSArIDE2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGVbaSArIDI0ID4+IDJdOyBrID0gWih0LCA1MiksIFIoZVsoayArIGYgfCAwKSArIDQ0ID4+IDJdKSwgZiA9IGVbaSArIDI0ID4+IDJdLCBlWyhrICsgZiB8IDApICsgNDQgPj4gMl0gPSAwLCB0ID0gdCArIDEgfCAwLCBrID0gZVtpICsgMTYgPj4gMl0sIHQgPj4+IDAgPCBrID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyA2MCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodCA9IGVbZVtBICsgNzYgPj4gMl0gKyAyNCA+PiAyXSwgayA9IDA7IGwgPSBaKGVbZVtBICsgNjQgPj4gMl0gKyAoayA8PCAyKSA+PiAyXSwgNTIpLCBmID0gbCArIHQgfCAwLCByID0gZVtmICsgNCA+PiAyXSwgbiA9IGEgKyBaKGssIDUyKSB8IDAsIGVbbiA+PiAyXSA9IGVbZiA+PiAyXSwgZVtuICsgNCA+PiAyXSA9IHIsIGVbbiArIDQ4ID4+IDJdID0gZVtmICsgNDggPj4gMl0sIHIgPSBlW2YgKyA0NCA+PiAyXSwgZVtuICsgNDAgPj4gMl0gPSBlW2YgKyA0MCA+PiAyXSwgZVtuICsgNDQgPj4gMl0gPSByLCByID0gZVtmICsgMzYgPj4gMl0sIGVbbiArIDMyID4+IDJdID0gZVtmICsgMzIgPj4gMl0sIGVbbiArIDM2ID4+IDJdID0gciwgciA9IGVbZiArIDI4ID4+IDJdLCBlW24gKyAyNCA+PiAyXSA9IGVbZiArIDI0ID4+IDJdLCBlW24gKyAyOCA+PiAyXSA9IHIsIHIgPSBlW2YgKyAyMCA+PiAyXSwgZVtuICsgMTYgPj4gMl0gPSBlW2YgKyAxNiA+PiAyXSwgZVtuICsgMjAgPj4gMl0gPSByLCByID0gZVtmICsgMTIgPj4gMl0sIGVbbiArIDggPj4gMl0gPSBlW2YgKyA4ID4+IDJdLCBlW24gKyAxMiA+PiAyXSA9IHIsIHQgPSBlW2VbQSArIDc2ID4+IDJdICsgMjQgPj4gMl0sIHIgPSBsICsgdCB8IDAsIGVbbiArIDM2ID4+IDJdID0gZVtyICsgMzYgPj4gMl0sIGVbbiArIDQ0ID4+IDJdID0gZVtyICsgNDQgPj4gMl0sIGVbciArIDQ0ID4+IDJdID0gMCwgayA9IGsgKyAxIHwgMCwgciA9IGVbQSArIDYwID4+IDJdLCBrID4+PiAwIDwgciA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIGsgPSBlW2kgKyAxNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoaykgewogICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGVbZVtBICsgNzYgPj4gMl0gKyAyNCA+PiAyXSwgdCA9IDA7IHIgPSBaKHQsIDUyKSwgUihlWyhyICsgZiB8IDApICsgNDQgPj4gMl0pLCBmID0gZVtlW0EgKyA3NiA+PiAyXSArIDI0ID4+IDJdLCBlWyhyICsgZiB8IDApICsgNDQgPj4gMl0gPSAwLCB0ID0gdCArIDEgfCAwLCB0ID4+PiAwIDwgZFtpICsgMTYgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICByID0gZVtBICsgNjAgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbaSArIDE2ID4+IDJdID0gciwgUihlW2kgKyAyNCA+PiAyXSksIGVbaSArIDI0ID4+IDJdID0gYSwgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoayA9IGVbaSArIDI0ID4+IDJdLCB0ID0gZVtlW0EgKyA3NiA+PiAyXSArIDI0ID4+IDJdOyBsID0gWihmLCA1MiksIHIgPSBsICsgayB8IDAsIGVbciArIDM2ID4+IDJdID0gZVsodCArIGwgfCAwKSArIDM2ID4+IDJdLCBSKGVbciArIDQ0ID4+IDJdKSwgayA9IGVbaSArIDI0ID4+IDJdLCB0ID0gZVtlW0EgKyA3NiA+PiAyXSArIDI0ID4+IDJdLCByID0gbCArIHQgfCAwLCBlWyhsICsgayB8IDApICsgNDQgPj4gMl0gPSBlW3IgKyA0NCA+PiAyXSwgZVtyICsgNDQgPj4gMl0gPSAwLCBmID0gZiArIDEgfCAwLCBmID4+PiAwIDwgZFtpICsgMTYgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiB5MShlW0EgKyA3MiA+PiAyXSksIGVbQSArIDcyID4+IDJdID0gMCwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBPNChBKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwOwogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwLCBzID0gMCwgdyA9IDAsIEIgPSAwOwogICAgICAgICAgICAgIG4gPSBYIC0gMTYgfCAwLCBYID0gbiwgdyA9IGVbZVtBICsgNzIgPj4gMl0gKyAxNiA+PiAyXSwgaSA9IEUyKDEsIDU2KSwgZVtuICsgMTIgPj4gMl0gPSBpOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmICh1ID0gZVtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdLCBlW2kgKyAyNCA+PiAyXSA9IHUsIGVbaSA+PiAyXSA9IGVbQSArIDg0ID4+IDJdLCBlW2kgKyA0ID4+IDJdID0gZVtBICsgODggPj4gMl0sIGVbaSArIDggPj4gMl0gPSBlW0EgKyA5MiA+PiAyXSwgZVtpICsgMTIgPj4gMl0gPSBlW0EgKyA5NiA+PiAyXSwgZVtpICsgMTYgPj4gMl0gPSBlW0EgKyAxMDQgPj4gMl0sIGwgPSBlW0EgKyAxMDggPj4gMl0sIGVbaSArIDUyID4+IDJdID0gMCwgZVtpICsgMjAgPj4gMl0gPSBsLCBhID0gZVtBICsgMTIgPj4gMl0sIGVbaSArIDMyID4+IDJdID0gZVthID4+IDJdLCBlW2kgKyAzNiA+PiAyXSA9IGVbYSArIDQgPj4gMl0sIGVbaSArIDQwID4+IDJdID0gZVthICsgOCA+PiAyXSwgZVtpICsgNDQgPj4gMl0gPSBlW2EgKyAxNiA+PiAyXSwgQSA9IEUyKHUsIDEwODApLCBlW2kgKyA0OCA+PiAyXSA9IEEsIEEpIHsKICAgICAgICAgICAgICAgICAgaWYgKHcpCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICBBID0gWihvLCAxMDgwKSwgZiA9IEEgKyBlW2kgKyA0OCA+PiAyXSB8IDAsIHIgPSBBICsgZVthICsgNTU4NCA+PiAyXSB8IDAsIGVbZiArIDQgPj4gMl0gPSBlW3IgPj4gMl0sIEEgPSBlW3IgKyA0ID4+IDJdLCBlW2YgKyA4ID4+IDJdID0gQSwgZVtmICsgMTIgPj4gMl0gPSBlW3IgKyA4ID4+IDJdLCBlW2YgKyAxNiA+PiAyXSA9IGVbciArIDEyID4+IDJdLCBlW2YgKyAyMCA+PiAyXSA9IGVbciArIDE2ID4+IDJdLCBlW2YgKyAyNCA+PiAyXSA9IGVbciArIDIwID4+IDJdLCBBID4+PiAwIDw9IDMyICYmIChGMihmICsgOTQ4IHwgMCwgciArIDk0NCB8IDAsIEEpLCBGMihmICsgODE2IHwgMCwgciArIDgxMiB8IDAsIGVbciArIDQgPj4gMl0pKSwgQSA9IGVbciArIDI0ID4+IDJdLCBlW2YgKyAyOCA+PiAyXSA9IEEsIGVbZiArIDgwOCA+PiAyXSA9IGVbciArIDgwNCA+PiAyXSwgdCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoQSB8IDApICE9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IFooZVtyICsgNCA+PiAyXSwgMyksIEEgLSAzID4+PiAwID4gOTUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBBIC0gMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIgPSB0ICYgMSwgZyA9IGYgKyA0MjAgfCAwLCBoID0gZiArIDMyIHwgMCwgcyA9IHIgKyAyOCB8IDAsIEEgPSAwLCAodCB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gdCAmIC0yLCB0ID0gMDsgbCA9IEEgPDwgMiwgayA9IChBIDw8IDMpICsgcyB8IDAsIGVbbCArIGggPj4gMl0gPSBlW2sgKyA0ID4+IDJdLCBlW2wgKyBnID4+IDJdID0gZVtrID4+IDJdLCBrID0gQSB8IDEsIGwgPSBrIDw8IDIsIGsgPSAoayA8PCAzKSArIHMgfCAwLCBlW2wgKyBoID4+IDJdID0gZVtrICsgNCA+PiAyXSwgZVtsICsgZyA+PiAyXSA9IGVbayA+PiAyXSwgQSA9IEEgKyAyIHwgMCwgdCA9IHQgKyAyIHwgMCwgKHUgfCAwKSAhPSAodCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQikKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBrID0gQSA8PCAyLCBBID0gKEEgPDwgMykgKyBzIHwgMCwgZVtrICsgaCA+PiAyXSA9IGVbQSArIDQgPj4gMl0sIGVbayArIGcgPj4gMl0gPSBlW0EgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtmICsgODEyID4+IDJdID0gZVtyICsgODA4ID4+IDJdLCBvID0gbyArIDEgfCAwLCAobyB8IDApID09ICh3IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgayA9IGk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuICsgMTIgfCAwICYmIChBID0gZVtuICsgMTIgPj4gMl0sIGkgPSBlW0EgKyA0OCA+PiAyXSwgaSAmJiAoUihpKSwgQSA9IGVbbiArIDEyID4+IDJdKSwgUihBKSwgZVtuICsgMTIgPj4gMl0gPSAwKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBuICsgMTYgfCAwLCBrIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBLMShBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghZVtBICsgMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAobyA9IDEsIGVbQSArIDQgPj4gMl0gPiAwIHwgZVtBICsgOCA+PiAyXSA+IDEpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGsgPSAxLCBlW0EgKyA4ID4+IDJdID4gMCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoZVtBICsgNCA+PiAyXSA8IDIpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpID0gZVtBID4+IDJdLCB0ID0gaSArIChrIDw8IDUpIHwgMCwgbiA9IGVbQSArIDE2ID4+IDJdLCBsID0gZVtBICsgMjAgPj4gMl0sIG4gPj4+IDAgPCBsID4+PiAwKQogICAgICAgICAgICAgICAgICBmb3IgKGYgPSBuOyByID0gKGYgPDwgNikgKyB0IHwgMCwgR1tyID4+IDJdID0gR1tyID4+IDJdICogVygxLjIzMDE3NDA2NDYzNjIzMDUpLCBHW3IgKyA0ID4+IDJdID0gR1tyICsgNCA+PiAyXSAqIFcoMS4yMzAxNzQwNjQ2MzYyMzA1KSwgR1tyICsgOCA+PiAyXSA9IEdbciArIDggPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbciArIDEyID4+IDJdID0gR1tyICsgMTIgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbciArIDE2ID4+IDJdID0gR1tyICsgMTYgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbciArIDIwID4+IDJdID0gR1tyICsgMjAgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbciArIDI0ID4+IDJdID0gR1tyICsgMjQgPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIEdbciArIDI4ID4+IDJdID0gR1tyICsgMjggPj4gMl0gKiBXKDEuMjMwMTc0MDY0NjM2MjMwNSksIGYgPSBmICsgMSB8IDAsIChsIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGlmIChhID0gaSArIChvIDw8IDUpIHwgMCwgdSA9IGVbQSArIDI4ID4+IDJdLCByID0gZVtBICsgMjQgPj4gMl0sIHUgPj4+IDAgPiByID4+PiAwKQogICAgICAgICAgICAgICAgICBmb3IgKGYgPSByOyBpID0gKGYgPDwgNikgKyBhIHwgMCwgR1tpID4+IDJdID0gR1tpID4+IDJdICogVygxLjYyNTczMjQyMTg3NSksIEdbaSArIDQgPj4gMl0gPSBHW2kgKyA0ID4+IDJdICogVygxLjYyNTczMjQyMTg3NSksIEdbaSArIDggPj4gMl0gPSBHW2kgKyA4ID4+IDJdICogVygxLjYyNTczMjQyMTg3NSksIEdbaSArIDEyID4+IDJdID0gR1tpICsgMTIgPj4gMl0gKiBXKDEuNjI1NzMyNDIxODc1KSwgR1tpICsgMTYgPj4gMl0gPSBHW2kgKyAxNiA+PiAyXSAqIFcoMS42MjU3MzI0MjE4NzUpLCBHW2kgKyAyMCA+PiAyXSA9IEdbaSArIDIwID4+IDJdICogVygxLjYyNTczMjQyMTg3NSksIEdbaSArIDI0ID4+IDJdID0gR1tpICsgMjQgPj4gMl0gKiBXKDEuNjI1NzMyNDIxODc1KSwgR1tpICsgMjggPj4gMl0gPSBHW2kgKyAyOCA+PiAyXSAqIFcoMS42MjU3MzI0MjE4NzUpLCBmID0gZiArIDEgfCAwLCAodSB8IDApICE9IChmIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpID0gdCArIDMyIHwgMCwgZiA9IGVbQSArIDggPj4gMl0sIEEgPSBlW0EgKyA0ID4+IDJdLCBrID0gQSAtIGsgfCAwLCBrID0gKGYgfCAwKSA8IChrIHwgMCkgPyBmIDogaywgY2koYSwgaSwgbiwgbCwgaywgVygtMC40NDM1MDY4NjY2OTM0OTY3KSksIGcgPSBhICsgMzIgfCAwLCBmID0gZiAtIG8gfCAwLCBBID0gKEEgfCAwKSA8IChmIHwgMCkgPyBBIDogZiwgY2kodCwgZywgciwgdSwgQSwgVygtMC44ODI5MTEwODYwODI0NTg1KSksIGNpKGEsIGksIG4sIGwsIGssIFcoMC4wNTI5ODAxMTc0OTk4MjgzNCkpLCBjaSh0LCBnLCByLCB1LCBBLCBXKDEuNTg2MTM0MzE0NTM3MDQ4MykpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB3ayhBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDAsIGggPSAwOwogICAgICAgICAgICAgIGwgPSBYIC0gMTYgfCAwLCBYID0gbCwgZVtBICsgOCA+PiAyXSA9PSAxNiA/IHQgPSBlW0EgKyAxNTYgPj4gMl0gKyBaKGVbQSArIDIwNCA+PiAyXSwgNTY0NCkgfCAwIDogdCA9IGVbQSArIDEyID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCA2NzAzLCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoMihpLCBsICsgMTIgfCAwLCAyKTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGVbbCArIDEyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgUShmLCAyLCA2MTE5LCAwKTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDw9IDYpIHsKICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDY3MDMsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGgyKGkgKyAyIHwgMCwgbCArIDEyIHwgMCwgMiksIGsgPSBlW3QgKyA1NjE2ID4+IDJdLCBvID0gSVtsICsgMTIgfCAwXTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBlW3QgKyA1NjIwID4+IDJdLCAhbikgewogICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChBID0gazsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgOCA+PiAyXSA9PSAobyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IEEgKyAyMCB8IDAsIGEgPSBhICsgMSB8IDAsIChhIHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSAhPSAoYSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVt0ICsgNTYyNCA+PiAyXSA9PSAobiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IG4gKyAxMCB8IDAsIGVbdCArIDU2MjQgPj4gMl0gPSBBLCBBID0gbzAoaywgWihBLCAyMCkpLCBrID0gZVt0ICsgNTYxNiA+PiAyXSwgIUEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgUihrKSwgZVt0ICsgNTYyNCA+PiAyXSA9IDAsIGVbdCArIDU2MTYgPj4gMl0gPSAwLCBlW3QgKyA1NjIwID4+IDJdID0gMCwgUShmLCAxLCA2NzY4LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoQSB8IDApID09IChrIHwgMCkgfHwgKGcgPSBlW3QgKyA1NjMyID4+IDJdLCAhZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gZVt0ICsgNTYyOCA+PiAyXSwgYSA9IDA7IG4gPSBaKGEsIDIwKSArIGggfCAwLCB1ID0gZVtuICsgOCA+PiAyXSwgdSAmJiAoZVtuICsgOCA+PiAyXSA9IEEgKyAodSAtIGsgfCAwKSksIHUgPSBlW24gKyAxMiA+PiAyXSwgdSAmJiAoZVtuICsgMTIgPj4gMl0gPSBBICsgKHUgLSBrIHwgMCkpLCBhID0gYSArIDEgfCAwLCAoZyB8IDApICE9IChhIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlW3QgKyA1NjE2ID4+IDJdID0gQSwgayA9IGVbdCArIDU2MjAgPj4gMl0sIGQyKEEgKyBaKGssIDIwKSB8IDAsIDAsIFooZVt0ICsgNTYyNCA+PiAyXSAtIGsgfCAwLCAyMCkpLCBuID0gZVt0ICsgNTYyMCA+PiAyXSwgayA9IGVbdCArIDU2MTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVbdCArIDU2MjAgPj4gMl0gPSBuICsgMSwgQSA9IFoobiwgMjApICsgayB8IDA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyAxMiA+PiAyXSwgayAmJiAoUihrKSwgZVtBICsgMTIgPj4gMl0gPSAwLCBlW0EgKyAxNiA+PiAyXSA9IDApLCBlW0EgKyA4ID4+IDJdID0gbywgayA9IGVbbCArIDEyID4+IDJdLCBlW0EgPj4gMl0gPSBrID4+PiAxMCAmIDMsIGVbQSArIDQgPj4gMl0gPSBrID4+PiA4ICYgMywgaDIoaSArIDQgfCAwLCBsICsgMTIgfCAwLCAyKSwgZVtsICsgMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICBRKGYsIDIsIDUyODgsIDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gNiB8IDAsIGsgPSBVMihyKSwgZVtBICsgMTIgPj4gMl0gPSBrLCAhaykgewogICAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjcwMywgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgRjIoaywgaSArIDYgfCAwLCByKSwgZVtBICsgMTYgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQSA9IDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gbCArIDE2IHwgMCwgQSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gQmsoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIHQgPSBYICsgLTY0IHwgMCwgWCA9IHQ7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKHQxKGksIDQ4OTI0LCAwKSkgewogICAgICAgICAgICAgICAgICBlW3IgPj4gMl0gPSAwLCBmID0gMTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKElbQSArIDggfCAwXSAmIDI0KQogICAgICAgICAgICAgICAgICAgIGsgPSAxOwogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWkgfHwgKG4gPSBtMShpLCA0ODYyNCksICFuKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgayA9IChJW24gKyA4IHwgMF0gJiAyNCkgIT0gMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBrID0gdDEoQSwgaSwgayk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaykgewogICAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIEEgPSBlW3IgPj4gMl0sICFBKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGVbciA+PiAyXSA9IGVbQSA+PiAyXTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGlmIChuID0gbTEoaSwgNDg2NzIpLCAhbiB8fCAoaSA9IGVbciA+PiAyXSwgaSAmJiAoZVtyID4+IDJdID0gZVtpID4+IDJdKSwgayA9IGVbbiArIDggPj4gMl0sIGkgPSBlW0EgKyA4ID4+IDJdLCBrICYgKGkgXiAtMSkgJiA3IHwgaSAmIChrIF4gLTEpICYgOTYpIHx8IChmID0gMSwgdDEoZVtBICsgMTIgPj4gMl0sIGVbbiArIDEyID4+IDJdLCAwKSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgaWYgKHQxKGVbQSArIDEyID4+IDJdLCA0ODkxMiwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IGVbbiArIDEyID4+IDJdLCAhQSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgZiA9ICFtMShBLCA0ODcyMCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoayA9IGVbQSArIDEyID4+IDJdLCAhaykKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoZiA9IDAsIGkgPSBtMShrLCA0ODY3MiksIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIShGW0EgKyA4IHwgMF0gJiAxKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgQSA9IGVbbiArIDEyID4+IDJdLCByID0gMDsKICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gMCwgIUEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gbTEoQSwgNDg2NzIpLCAhQSB8IGVbQSArIDggPj4gMl0gJiAoZVtpICsgOCA+PiAyXSBeIC0xKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSAxLCB0MShlW2kgKyAxMiA+PiAyXSwgZVtBICsgMTIgPj4gMl0sIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShGW2kgKyA4IHwgMF0gJiAxKSB8fCAoZiA9IGVbaSArIDEyID4+IDJdLCAhZikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gbTEoZiwgNDg2NzIpLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gZVtBICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBtMShmLCA0ODc3MiksICFpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBPNihpLCBlW0EgKyAxMiA+PiAyXSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmID0gcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoaSA9IG0xKGssIDQ4NzcyKSwgaSkgewogICAgICAgICAgICAgICAgICAgIGlmICghKEZbQSArIDggfCAwXSAmIDEpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBmID0gTzYoaSwgZVtuICsgMTIgPj4gMl0pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGsgPSBtMShrLCA0ODU3NiksICFrIHx8IChBID0gZVtuICsgMTIgPj4gMl0sICFBKSB8fCAoQSA9IG0xKEEsIDQ4NTc2KSwgIUEpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGkgPSBlW3IgPj4gMl0sIGQyKHQgKyA4IHwgMCwgMCwgNTYpLCBGW3QgKyA1OSB8IDBdID0gKGkgfCAwKSAhPSAwLCBlW3QgKyAxNiA+PiAyXSA9IC0xLCBlW3QgKyAxMiA+PiAyXSA9IGssIGVbdCArIDQgPj4gMl0gPSBBLCBlW3QgKyA1MiA+PiAyXSA9IDEsIG8yW2VbZVtBID4+IDJdICsgMjggPj4gMl1dKEEsIHQgKyA0IHwgMCwgaSwgMSksIEEgPSBlW3QgKyAyOCA+PiAyXSwgKEEgfCAwKSA9PSAxICYmIChlW3IgPj4gMl0gPSBpID8gZVt0ICsgMjAgPj4gMl0gOiAwKSwgZiA9IChBIHwgMCkgPT0gMTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IHQgLSAtNjQgfCAwLCBmIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBjayhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwOwogICAgICAgICAgICAgIG8gPSBYIC0gMTYgfCAwLCBYID0gbywgcyA9IGVbQSArIDcyID4+IDJdLCBnID0gZVtzICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGcgPj4+IDAgPCAyKSB7CiAgICAgICAgICAgICAgICAgIGYgPSAxOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChsID0gMTsgOyApIHsKICAgICAgICAgICAgICAgICAgdCA9IGVbKGVbQSArIDE1NiA+PiAyXSArIFooZVtBICsgMjA0ID4+IDJdLCA1NjQ0KSB8IDApICsgNTU4NCA+PiAyXSwgdSA9IGVbdCArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPSBaKGwsIDEwODApLCBuID0gdyArIHQgfCAwLCBhID0gZVtuICsgMjQgPj4gMl0sICh1IHwgMCkgIT0gKGEgfCAwKSB8IGVbdCArIDgwNCA+PiAyXSAhPSBlW24gKyA4MDQgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDEsICh1IHwgMCkgIT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbdCArIDQgPj4gMl0sIChmIHwgMCkgIT0gZVtuICsgNCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IFooZiwgMykgLSAyIHwgMCwgIWspCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGZvciAoQiA9IG4gKyAyOCB8IDAsIGggPSB0ICsgMjggfCAwLCBmID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSBmIDw8IDMsIGVbaCArIGMgPj4gMl0gIT0gZVtCICsgYyA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGYgKyAxIHwgMCwgKGsgfCAwKSA9PSAoZiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gbiArIDMyIHwgMCwgQiA9IHQgKyAzMiB8IDAsIGYgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGYgPDwgMywgZVtoICsgQiA+PiAyXSAhPSBlW3UgKyBoID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gZiArIDEgfCAwLCAoayB8IDApID09IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoayA9IDEsIGYgPSBlW0EgKyA1MiA+PiAyXSwgayA9IChhIHwgMCkgIT0gMSA/IFooZVtuICsgNCA+PiAyXSwgMykgLSAyIHwgMCA6IGssIG4gPSAoZyA+Pj4gMCA+IDI1NiA/IDYgOiA1KSArIChhID8gayA8PCAxIHwgMSA6IGsgKyAxIHwgMCkgfCAwLCBuID4+PiAwID4gZFtBICsgNTYgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmID0gbzAoZiwgbiksICFmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFIoZVtBICsgNTIgPj4gMl0pLCBlW0EgKyA1MiA+PiAyXSA9IDAsIGVbQSArIDU2ID4+IDJdID0gMCwgZiA9IDAsIFEociwgMSwgNzg1OSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlW0EgKyA1NiA+PiAyXSA9IG4sIGVbQSArIDUyID4+IDJdID0gZiwgdCA9IGVbKGVbQSArIDE1NiA+PiAyXSArIFooZVtBICsgMjA0ID4+IDJdLCA1NjQ0KSB8IDApICsgNTU4NCA+PiAyXSwgYSA9IGVbKHcgKyB0IHwgMCkgKyAyNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAxLCBrID0gKGEgfCAwKSAhPSAxID8gWihlWyh0ICsgdyB8IDApICsgNCA+PiAyXSwgMykgLSAyIHwgMCA6IGssIGsyKGYsIDY1MzczLCAyKSwgayA9IGEgPyBrIDw8IDEgfCAxIDogayArIDEgfCAwLCB0ID0gZFtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdIDwgMjU3LCBrMihmICsgMiB8IDAsIGsgKyAodCA/IDMgOiA0KSB8IDAsIDIpLCBrMihmICsgNCB8IDAsIGwsIHQgPyAxIDogMiksIGVbbyArIDEyID4+IDJdID0gaywgczYoZVtBICsgMTU2ID4+IDJdLCBlW0EgKyAyMDQgPj4gMl0sIGwsICh0ID8gNSA6IDYpICsgZiB8IDAsIG8gKyAxMiB8IDAsIHIpLCAoTDAoaSwgZVtBICsgNTIgPj4gMl0sIG4sIHIpIHwgMCkgIT0gKG4gfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzID0gZVtBICsgNzIgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGYgPSAxLCBsID0gbCArIDEgfCAwLCBnID0gZVtzICsgMTYgPj4gMl0sICEobCA+Pj4gMCA8IGcgPj4+IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IG8gKyAxNiB8IDAsIGYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHdpKEEpIHsKICAgICAgICAgICAgICB2YXIgaSA9IDAsIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwOwogICAgICAgICAgICAgIGlmIChBKSB7CiAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDIwID4+IDJdLCBpKSB7CiAgICAgICAgICAgICAgICAgIGlmIChuID0gZVtpID4+IDJdLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW24gKyAyMCA+PiAyXSwgZVtuICsgMTYgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IEZbQSArIDQwIHwgMF0gJiAxID8gMjUyIDogMjUzOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbZiArIDI4ID4+IDJdLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW2YgKyAzMiA+PiAyXSwgZyA9IChpID4+PiAwKSAvIDE1MiB8IDAsIHUgPSAwLCBpID4+PiAwID49IDE1MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVtyICsgNDggPj4gMl0sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbciArIDUyID4+IDJdLCBsID0gKHQgPj4+IDApIC8gNDAgfCAwLCBrID0gMCwgdCA+Pj4gMCA+PSA0MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IFFlKGVbaSArIDMyID4+IDJdKSwgZVtpICsgMzIgPj4gMl0gPSAwLCBRZShlW2kgKyAzNiA+PiAyXSksIGVbaSArIDM2ID4+IDJdID0gMCwgbzJbYSB8IDBdKGkpLCBpID0gaSArIDQwIHwgMCwgayA9IGsgKyAxIHwgMCwgKGwgfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW3IgKyA0OCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUihpKSwgZVtyICsgNDggPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVtyICsgODQgPj4gMl0sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbciArIDg4ID4+IDJdLCBsID0gKHQgPj4+IDApIC8gNDAgfCAwLCBrID0gMCwgdCA+Pj4gMCA+PSA0MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IFFlKGVbaSArIDMyID4+IDJdKSwgZVtpICsgMzIgPj4gMl0gPSAwLCBRZShlW2kgKyAzNiA+PiAyXSksIGVbaSArIDM2ID4+IDJdID0gMCwgbzJbYSB8IDBdKGkpLCBpID0gaSArIDQwIHwgMCwgayA9IGsgKyAxIHwgMCwgKGwgfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW3IgKyA4NCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUihpKSwgZVtyICsgODQgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVtyICsgMTIwID4+IDJdLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW3IgKyAxMjQgPj4gMl0sIGwgPSAodCA+Pj4gMCkgLyA0MCB8IDAsIGsgPSAwLCB0ID4+PiAwID49IDQwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgUWUoZVtpICsgMzIgPj4gMl0pLCBlW2kgKyAzMiA+PiAyXSA9IDAsIFFlKGVbaSArIDM2ID4+IDJdKSwgZVtpICsgMzYgPj4gMl0gPSAwLCBvMlthIHwgMF0oaSksIGkgPSBpICsgNDAgfCAwLCBrID0gayArIDEgfCAwLCAobCB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbciArIDEyMCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUihpKSwgZVtyICsgMTIwID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgKyAxNTIgfCAwLCB1ID0gdSArIDEgfCAwLCAoZyB8IDApID09ICh1IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZVtmICsgMjggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIFIociksIGVbZiArIDI4ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW2YgKyA0MCA+PiAyXSB8fCAoaSA9IGVbZiArIDM2ID4+IDJdLCAhaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgIFIoaSksIGVbZiArIDQ0ID4+IDJdID0gMCwgZVtmICsgNDggPj4gMl0gPSAwLCBlW2YgKyAzNiA+PiAyXSA9IDAsIGVbZiArIDQwID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUihlW2YgKyA1MiA+PiAyXSksIGYgPSBmICsgNzYgfCAwLCBvID0gbyArIDEgfCAwLCAhKG8gPj4+IDAgPCBkW24gKyAxNiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmID0gZVtuICsgMjAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIFIoZiksIGVbbiArIDIwID4+IDJdID0gMCwgUihlW2VbQSArIDIwID4+IDJdID4+IDJdKSwgaSA9IGVbQSArIDIwID4+IDJdLCBlW2kgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIFIoaSksIGVbQSArIDIwID4+IDJdID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFIoZVtBICsgNjggPj4gMl0pLCBSKEEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB2ayhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDAsIGMgPSAwLCB2ID0gMCwgQyA9IDAsIG0gPSAwOwogICAgICAgICAgICAgIG8gPSBYIC0gMTYgfCAwLCBYID0gbywgdCA9IGVbQSArIDcyID4+IDJdLCBsID0gZVt0ICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGwgPj4+IDAgPCAyKSB7CiAgICAgICAgICAgICAgICAgIGYgPSAxOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICh1ID0gMTsgOyApIHsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gZVtBICsgMTU2ID4+IDJdLCBoID0gZVtBICsgMjA0ID4+IDJdLCBrID0gZVsoZyArIFooaCwgNTY0NCkgfCAwKSArIDU1ODQgPj4gMl0sIHMgPSBaKHUsIDEwODApLCBmID0gayArIHMgfCAwLCBCID0gZVtmID4+IDJdLCAoQiB8IDApICE9IGVbayA+PiAyXSB8fCAodyA9IGVbayArIDQgPj4gMl0sICh3IHwgMCkgIT0gZVtmICsgNCA+PiAyXSB8IGVbayArIDggPj4gMl0gIT0gZVtmICsgOCA+PiAyXSB8IChlW2sgKyAxMiA+PiAyXSAhPSBlW2YgKyAxMiA+PiAyXSB8IGVbayArIDE2ID4+IDJdICE9IGVbZiArIDE2ID4+IDJdKSkgfHwgZVtrICsgMjAgPj4gMl0gIT0gZVtmICsgMjAgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXcpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGMgPSBrICsgOTQ0IHwgMCwgdiA9IGsgKyA4MTIgfCAwLCBDID0gZiArIDk0NCB8IDAsIG0gPSBmICsgODEyIHwgMCwgbiA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gbiA8PCAyLCBlW2EgKyB2ID4+IDJdICE9IGVbYSArIG0gPj4gMl0gfCBlW2EgKyBjID4+IDJdICE9IGVbYSArIEMgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuICsgMSB8IDAsICh3IHwgMCkgPT0gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gNSwgbiA9IEIgJiAxLCB0ID0gbiA/IGVbZiArIDQgPj4gMl0gKyA1IHwgMCA6IHQsIGYgPSBlW0EgKyA1MiA+PiAyXSwgdCA9IChsID4+PiAwIDwgMjU3ID8gNiA6IDcpICsgdCB8IDAsIHQgPj4+IDAgPiBkW0EgKyA1NiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBvMChmLCB0KSwgIWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgUihlW0EgKyA1MiA+PiAyXSksIGVbQSArIDUyID4+IDJdID0gMCwgZVtBICsgNTYgPj4gMl0gPSAwLCBmID0gMCwgUShyLCAxLCA3Nzk0LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDU2ID4+IDJdID0gdCwgZVtBICsgNTIgPj4gMl0gPSBmLCBsID0gZVtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdLCBnID0gZVtBICsgMTU2ID4+IDJdLCBoID0gZVtBICsgMjA0ID4+IDJdLCBrID0gZVsoZyArIFooaCwgNTY0NCkgfCAwKSArIDU1ODQgPj4gMl0sIG4gPSBlW3MgKyBrID4+IDJdICYgMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSAoWihoLCA1NjQ0KSArIGcgfCAwKSArIDU1ODQgfCAwLCBrID0gbiA/IGVbKGsgKyBzIHwgMCkgKyA0ID4+IDJdICsgNSB8IDAgOiA1LCBrMihmLCA2NTM2MywgMiksIG4gPSBsID4+PiAwIDwgMjU3ID8gMSA6IDIsIGsyKGYgKyAyIHwgMCwgKG4gKyBrIHwgMCkgKyAzIHwgMCwgMiksIGYgPSBmICsgNCB8IDAsIGsyKGYsIHUsIG4pLCBmID0gZiArIG4gfCAwLCBrMihmLCBlW2VbYSA+PiAyXSArIHMgPj4gMl0sIDEpLCBlW28gKyAxMiA+PiAyXSA9IGssIEk2KGVbQSArIDE1NiA+PiAyXSwgZVtBICsgMjA0ID4+IDJdLCBmICsgMSB8IDAsIG8gKyAxMiB8IDAsIHIpLCAoTDAoaSwgZVtBICsgNTIgPj4gMl0sIHQsIHIpIHwgMCkgIT0gKHQgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0ID0gZVtBICsgNzIgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGYgPSAxLCBsID0gZVt0ICsgMTYgPj4gMl0sIHUgPSB1ICsgMSB8IDAsICEobCA+Pj4gMCA+IHUgPj4+IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IG8gKyAxNiB8IDAsIGYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIF80KEEsIGksIHIsIGYsIGssIHQsIG4pIHsKICAgICAgICAgICAgICB2YXIgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICAgICAgICBpZiAoZyA9IHQgPDwgNSwgZikKICAgICAgICAgICAgICAgIGZvciAobCA9IEEgKyBnIHwgMCwgaCA9IG4gLSAyIHwgMCwgbyA9IGYsIGEgPSBpOyA7ICkgewogICAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgIGk6CiAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGggfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZVtsICsgNCA+PiAyXSwgZVthID4+IDJdID0gZVtsID4+IDJdLCBlW2EgKyA0ID4+IDJdID0gdCwgdCA9IGVbbCArIDI4ID4+IDJdLCBlW2EgKyAyNCA+PiAyXSA9IGVbbCArIDI0ID4+IDJdLCBlW2EgKyAyOCA+PiAyXSA9IHQsIHQgPSBlW2wgKyAyMCA+PiAyXSwgZVthICsgMTYgPj4gMl0gPSBlW2wgKyAxNiA+PiAyXSwgZVthICsgMjAgPj4gMl0gPSB0LCB0ID0gZVtsICsgMTIgPj4gMl0sIGVbYSArIDggPj4gMl0gPSBlW2wgKyA4ID4+IDJdLCBlW2EgKyAxMiA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgIGVbYSA+PiAyXSA9IGVbbCA+PiAyXSwgdCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdCA8PCAyLCBlW3UgKyBhID4+IDJdID0gZVtsICsgdSA+PiAyXSwgdCA9IHQgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0IDw8IDIsIGVbdSArIGEgPj4gMl0gPSBlW2wgKyB1ID4+IDJdLCB0ID0gdCArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQgPDwgMiwgZVt1ICsgYSA+PiAyXSA9IGVbbCArIHUgPj4gMl0sIHQgPSB0ICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdCA8PCAyLCBlW3UgKyBhID4+IDJdID0gZVtsICsgdSA+PiAyXSwgdCA9IHQgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0IDw8IDIsIGVbdSArIGEgPj4gMl0gPSBlW2wgKyB1ID4+IDJdLCB0ID0gdCArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IHQgPDwgMiwgZVt0ICsgYSA+PiAyXSA9IGVbdCArIGwgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsIC0gLTY0IHwgMCwgYSA9IChrIDw8IDIpICsgYSB8IDAsIG8gPSBvIC0gMSB8IDAsICFvKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgICAgZm9yIChsID0gKGcgXiAzMikgKyBBIHwgMCwgYSA9IChaKGYsIGspIDw8IDIpICsgaSB8IDAsIEEgPSBuIC0gMiB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgIHQgPSAwOwogICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgaToKICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoQSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgIGVbYSA+PiAyXSA9IGVbbCA+PiAyXSwgdCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdCA8PCAyLCBlW2kgKyBhID4+IDJdID0gZVtpICsgbCA+PiAyXSwgdCA9IHQgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0IDw8IDIsIGVbaSArIGEgPj4gMl0gPSBlW2kgKyBsID4+IDJdLCB0ID0gdCArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQgPDwgMiwgZVtpICsgYSA+PiAyXSA9IGVbaSArIGwgPj4gMl0sIHQgPSB0ICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdCA8PCAyLCBlW2kgKyBhID4+IDJdID0gZVtpICsgbCA+PiAyXSwgdCA9IHQgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0IDw8IDIsIGVbaSArIGEgPj4gMl0gPSBlW2kgKyBsID4+IDJdLCB0ID0gdCArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0IDw8IDIsIGVbaSArIGEgPj4gMl0gPSBlW2kgKyBsID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGkgPSBlW2wgKyA0ID4+IDJdLCBlW2EgPj4gMl0gPSBlW2wgPj4gMl0sIGVbYSArIDQgPj4gMl0gPSBpLCBpID0gZVtsICsgMjggPj4gMl0sIGVbYSArIDI0ID4+IDJdID0gZVtsICsgMjQgPj4gMl0sIGVbYSArIDI4ID4+IDJdID0gaSwgaSA9IGVbbCArIDIwID4+IDJdLCBlW2EgKyAxNiA+PiAyXSA9IGVbbCArIDE2ID4+IDJdLCBlW2EgKyAyMCA+PiAyXSA9IGksIGkgPSBlW2wgKyAxMiA+PiAyXSwgZVthICsgOCA+PiAyXSA9IGVbbCArIDggPj4gMl0sIGVbYSArIDEyID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAobCA9IGwgLSAtNjQgfCAwLCBhID0gKGsgPDwgMikgKyBhIHwgMCwgciA9IHIgLSAxIHwgMCwgIXIpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gYjQoKSB7CiAgICAgICAgICAgICAgdmFyIEEgPSAwOwogICAgICAgICAgICAgIHM0KDI5ODQ4LCAyOTg3MiwgMjk5MDQsIDAsIDI5Nzc1LCAyMywgMjk5MzUsIDAsIDI5OTM1LCAwLCAxNTYwLCAyOTgwMSwgMjQpLCBoNCgyOTg0OCwgMSwgMjk5NDAsIDI5Nzc1LCAyNSwgMjYpLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSAyNywgWTAoMjk4NDgsIDE0MjMsIDMsIDI5OTQ0LCAyOTk4MywgMjgsIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gMjksIFkwKDI5ODQ4LCAxNDQwLCAyLCAzMDAyOCwgMzAwMzYsIDMwLCBBIHwgMCwgMCwgMCwgMCksIEEgPSBfMig4KSwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IDMxLCBZMCgyOTg0OCwgMTYyMSwgMiwgMzAwNDgsIDMwMDU2LCAzMiwgQSB8IDAsIDAsIDAsIDApLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSAzMywgWTAoMjk4NDgsIDE3ODIsIDMsIDMwMDYwLCAzMDA3MiwgMzQsIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gMzUsIFkwKDI5ODQ4LCAyMTQyLCAyLCAzMDA0OCwgMzAwNTYsIDMyLCBBIHwgMCwgMCwgMCwgMCksIEEgPSBfMig4KSwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IDM2LCBZMCgyOTg0OCwgMTcyNywgNCwgMzAwODAsIDMwMDk2LCAzNywgQSB8IDAsIDAsIDAsIDApLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSAzOCwgWTAoMjk4NDgsIDE3MTQsIDIsIDMwMTA0LCAzMDAzNiwgMzksIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gNDAsIFkwKDI5ODQ4LCAxMzE4LCAyLCAzMDExMiwgMzAxMjAsIDQxLCBBIHwgMCwgMCwgMCwgMCksIEEgPSBfMig4KSwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IDQyLCBZMCgyOTg0OCwgMjA4OSwgMiwgMzAxMjQsIDI5ODA0LCA0MywgQSB8IDAsIDAsIDAsIDApLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSA0NCwgWTAoMjk4NDgsIDE0NzcsIDIsIDMwMTMyLCAyOTgwNCwgNDUsIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gNDYsIFkwKDI5ODQ4LCAxMjI5LCAyLCAzMDE0MCwgMzAwMzYsIDQ3LCBBIHwgMCwgMCwgMCwgMCksIEEgPSBfMig4KSwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IDQ4LCBZMCgyOTg0OCwgMjA0MiwgMiwgMzAxNDgsIDMwMDM2LCA0OSwgQSB8IDAsIDAsIDAsIDApLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSA1MCwgWTAoMjk4NDgsIDEyMDAsIDIsIDMwMTQwLCAzMDAzNiwgNDcsIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gNTEsIFkwKDI5ODQ4LCAxMzU4LCAyLCAzMDE0OCwgMzAwMzYsIDQ5LCBBIHwgMCwgMCwgMCwgMCksIEEgPSBfMig4KSwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IDUyLCBZMCgyOTg0OCwgMTI4NywgMiwgMzAxNTYsIDI5ODA0LCA1MywgQSB8IDAsIDAsIDAsIDApLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSA1NCwgWTAoMjk4NDgsIDIxNDksIDIsIDMwMTY0LCAzMDEyMCwgNTUsIEEgfCAwLCAwLCAwLCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiAkNChBLCBpKSB7CiAgICAgICAgICAgICAgdmFyIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwLCBCID0gMDsKICAgICAgICAgICAgICByID0gZVtBICsgOCA+PiAyXSwgdCA9IHIgKyBlW0EgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIWVbQSArIDEyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgIGlmICgodCB8IDApIDwgMikKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBuID0gKHIgPDwgMikgKyBpIHwgMCwgZiA9IGVbbiA+PiAyXSwgayA9IGVbaSA+PiAyXSAtIChmICsgMSA+PiAxKSB8IDAsIGwgPSBlW0EgPj4gMl07CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAodCA+Pj4gMCA8IDQpIHsKICAgICAgICAgICAgICAgICAgICAgIHIgPSBmOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gKHQgLSA0ID4+PiAxIHwgMCkgKyAxIHwgMCwgQSA9IDE7IHIgPSBBIDw8IDIsIGggPSBlW3IgKyBpID4+IDJdLCByID0gZVtyICsgbiA+PiAyXSwgZyA9IGwgKyAoYSA8PCAyKSB8IDAsIGVbZyA+PiAyXSA9IGssIHUgPSBrLCBrID0gaCAtICgociArIGYgfCAwKSArIDIgPj4gMikgfCAwLCBlW2cgKyA0ID4+IDJdID0gKHUgKyBrID4+IDEpICsgZiwgYSA9IGEgKyAyIHwgMCwgdSA9IChBIHwgMCkgIT0gKG8gfCAwKSwgZiA9IHIsIEEgPSBBICsgMSB8IDAsICEhdTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbbCArIChhIDw8IDIpID4+IDJdID0gaywgdCAmIDEgPyAoZiA9IHQgLSAxIHwgMCwgQSA9IGVbKGYgPDwgMSkgKyBpID4+IDJdIC0gKHIgKyAxID4+IDEpIHwgMCwgZVtsICsgKGYgPDwgMikgPj4gMl0gPSBBLCBrID0gQSArIGsgPj4gMSwgZiA9IC04KSA6IGYgPSAtNCwgQSA9IHQgPDwgMiwgZVtmICsgKEEgKyBsIHwgMCkgPj4gMl0gPSByICsgaywgRjIoaSwgbCwgQSk7CiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGk6CiAgICAgICAgICAgICAgICAgIHN3aXRjaCAodCAtIDEgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgZVtpID4+IDJdID0gZVtpID4+IDJdIC8gMjsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICBBID0gZVtBID4+IDJdLCByID0gKHIgPDwgMikgKyBpIHwgMCwgZiA9IGVbaSA+PiAyXSAtIChlW3IgPj4gMl0gKyAxID4+IDEpIHwgMCwgZVtBICsgNCA+PiAyXSA9IGYsIGVbQSA+PiAyXSA9IGYgKyBlW3IgPj4gMl0sIHIgPSBlW0EgKyA0ID4+IDJdLCBlW2kgPj4gMl0gPSBlW0EgPj4gMl0sIGVbaSArIDQgPj4gMl0gPSByOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSA8IDMpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBuID0gZVtBID4+IDJdLCBvID0gKHIgPDwgMikgKyBpIHwgMCwgZiA9IGVbbyArIDQgPj4gMl0sIEEgPSBlW28gPj4gMl0sIGsgPSBlW2kgPj4gMl0gLSAoKGYgKyBBIHwgMCkgKyAyID4+IDIpIHwgMCwgZVtuID4+IDJdID0gayArIEEsIGEgPSAxLCBoID0gdCAtIDIgfCAwLCBnID0gdCAmIDEsIEEgPSAhZzsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGggLSBBID4+PiAwIDwgMikgewogICAgICAgICAgICAgICAgICAgIHIgPSBmOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZm9yICh3ID0gKCh0IC0gQSB8IDApIC0gNCA+Pj4gMSB8IDApICsgMSB8IDAsIEEgPSAxOyBCID0gZVsoQSA8PCAyKSArIGkgPj4gMl0sIHUgPSBBICsgMSB8IDAsIHIgPSBlWyh1IDw8IDIpICsgbyA+PiAyXSwgcyA9IChhIDw8IDIpICsgbiB8IDAsIGVbcyA+PiAyXSA9IGssIGwgPSBrLCBrID0gQiAtICgociArIGYgfCAwKSArIDIgPj4gMikgfCAwLCBlW3MgKyA0ID4+IDJdID0gKGwgKyBrID4+IDEpICsgZiwgYSA9IGEgKyAyIHwgMCwgbCA9IChBIHwgMCkgIT0gKHcgfCAwKSwgZiA9IHIsIEEgPSB1LCAhIWw7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlWyhhIDw8IDIpICsgbiA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghZykgewogICAgICAgICAgICAgICAgICAgIEEgPSBlWygodCA8PCAxKSArIGkgfCAwKSAtIDQgPj4gMl0gLSAociArIDEgPj4gMSkgfCAwLCBlWyhoIDw8IDIpICsgbiA+PiAyXSA9IChrICsgQSA+PiAxKSArIHI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBBID0gciArIGsgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgciA9IHQgPDwgMiwgZVsociArIG4gfCAwKSAtIDQgPj4gMl0gPSBBLCBGMihpLCBuLCByKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gb3IoQSwgaSwgcikgewogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBrID0gMzEyMzI7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgZjogewogICAgICAgICAgICAgICAgICAgICAgICBBOgogICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodCA9IGVbQSArIDc2ID4+IDJdICsgWihyLCA1NjQ0KSB8IDAsIGVbdCArIDQgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBrID0gMzEyOTI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBrID0gMzEyNDQ7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBrID0gMzEyNTY7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBrID0gMzEyNjg7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBrID0gMzEyODA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHIgPSAxOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghKEZbQSArIDEwMCB8IDBdICYgMSkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpID0gKHQgKyA0MjQgfCAwKSArIFooaSwgMTQ4KSB8IDAsIHQgPSBJW0EgKyA5MiB8IDBdLCBmID0gSVtrICsgNCB8IDBdLCBuID0gZiA8PCAyNCA+PiAyNDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGYgLSA2NyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbaSArIDkyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbaSArIDg4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbaSArIDk2ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHIgPSBlW2kgKyA4NCA+PiAyXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoKHQgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGYgPSBJW2sgKyA1IHwgMF0sIG4gPSBmIDw8IDI0ID4+IDI0OwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazoKICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZiAtIDY3IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgODQgPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgOTYgPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgODggPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgOTIgPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChmID0gMSwgKHQgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGYgPSBJW2sgKyA2IHwgMF0sIG4gPSBmIDw8IDI0ID4+IDI0OwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazoKICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZiAtIDY3IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgODQgPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgOTYgPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgODggPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgOTIgPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChmID0gMiwgKHQgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGsgPSBJW2sgKyA3IHwgMF0sIGYgPSBrIDw8IDI0ID4+IDI0OwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazoKICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoayAtIDY3IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgODQgPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgOTYgPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgODggPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgciA9IFooZVtpICsgOTIgPj4gMl0sIHIpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApICE9ICh0IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZiA9IDM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW0EgKyA4NCA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHE0KEEsIGksIHIpIHsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwOwogICAgICAgICAgICAgIGlmIChmID0gWCAtIDI1NiB8IDAsIFggPSBmLCBBKSB7CiAgICAgICAgICAgICAgICBpZiAoXzAoMzYyMCwgMTcsIDEsIHIpLCBlW2YgKyAyNDAgPj4gMl0gPSBlW0EgPj4gMl0sIEkwKHIsIDQyMjksIGYgKyAyNDAgfCAwKSwgZVtmICsgMjI0ID4+IDJdID0gZVtBICsgNCA+PiAyXSwgSTAociwgNDI0MiwgZiArIDIyNCB8IDApLCBlW2YgKyAyMDggPj4gMl0gPSBlW0EgKyA4ID4+IDJdLCBJMChyLCAxNjg4MSwgZiArIDIwOCB8IDApLCBlW2YgKyAxOTIgPj4gMl0gPSBlW0EgKyAxNiA+PiAyXSwgSTAociwgNDIwMCwgZiArIDE5MiB8IDApLCAoaSB8IDApID4gMCkKICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyA1NTg0ID4+IDJdLCBlW2YgKyAxNzYgPj4gMl0gPSBsLCBJMChyLCAzNjU4LCBmICsgMTc2IHwgMCksIGsgPSBrICsgWihsLCAxMDgwKSB8IDAsIGVbZiArIDE2MCA+PiAyXSA9IGVbayA+PiAyXSwgSTAociwgNDIyOCwgZiArIDE2MCB8IDApLCBlW2YgKyAxNDQgPj4gMl0gPSBlW2sgKyA0ID4+IDJdLCBJMChyLCAxNjk5NSwgZiArIDE0NCB8IDApLCBlW2YgKyAxMjggPj4gMl0gPSBlW2sgKyA4ID4+IDJdLCBJMChyLCAxNjc2NSwgZiArIDEyOCB8IDApLCBlW2YgKyAxMTIgPj4gMl0gPSBlW2sgKyAxMiA+PiAyXSwgSTAociwgMTY3ODEsIGYgKyAxMTIgfCAwKSwgZVtmICsgOTYgPj4gMl0gPSBlW2sgKyAxNiA+PiAyXSwgSTAociwgNDIxMSwgZiArIDk2IHwgMCksIGVbZiArIDgwID4+IDJdID0gZVtrICsgMjAgPj4gMl0sIEkwKHIsIDE3MDc3LCBmICsgODAgfCAwKSwgXzAoMzE4OCwgMjMsIDEsIHIpLCBlW2sgKyA0ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gayArIDk0NCB8IDAsIHUgPSBrICsgODEyIHwgMCwgdCA9IDA7IG4gPSB0IDw8IDIsIG8gPSBlW3UgKyBuID4+IDJdLCBlW2YgKyA2OCA+PiAyXSA9IGVbYSArIG4gPj4gMl0sIGVbZiArIDY0ID4+IDJdID0gbywgSTAociwgMzUwNywgZiAtIC02NCB8IDApLCB0ID0gdCArIDEgfCAwLCB0ID4+PiAwIDwgZFtrICsgNCA+PiAyXTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgVjYociksIGVbZiArIDQ4ID4+IDJdID0gZVtrICsgMjQgPj4gMl0sIEkwKHIsIDE2Nzk3LCBmICsgNDggfCAwKSwgZVtmICsgMzIgPj4gMl0gPSBlW2sgKyA4MDQgPj4gMl0sIEkwKHIsIDE2ODY0LCBmICsgMzIgfCAwKSwgYSA9IDEsIF8wKDMyMTIsIDIwLCAxLCByKTsKICAgICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtrICsgMjQgPj4gMl0gIT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbayArIDQgPj4gMl0sICh0IHwgMCkgPD0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBhID0gWih0LCAzKSAtIDIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gayArIDI4IHwgMCwgdCA9IDA7IG4gPSB1ICsgKHQgPDwgMykgfCAwLCBxMiA9IGVbbiA+PiAyXSwgZVtmICsgMTYgPj4gMl0gPSBlW24gKyA0ID4+IDJdLCBlW2YgKyAyMCA+PiAyXSA9IHEyLCBJMChyLCAzNTA3LCBmICsgMTYgfCAwKSwgdCA9IHQgKyAxIHwgMCwgKGEgfCAwKSAhPSAodCB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKFY2KHIpLCBlW2YgPj4gMl0gPSBlW2sgKyA4MDggPj4gMl0sIEkwKHIsIDE2ODQ3LCBmKSwgXzAoMzUyMSwgNSwgMSwgciksIGwgPSBsICsgMSB8IDAsIChsIHwgMCkgPT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfMCgzNTIyLCA0LCAxLCByKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgWCA9IGYgKyAyNTYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGU2KEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMCwgcyA9IDAsIHcgPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgQTogewogICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gaSwgaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gTzAoZikgLSBPMChrKSB8IDAsIGsgPj4+IDAgPD0gMzEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID09IDEgfCBmID4+PiAwID4gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID0gKEEgPj4+IDApIC8gKHIgPj4+IDApIHwgMCwgbmUgPSBBIC0gWihpLCByKSB8IDAsIHRlID0gMCwgcTIgPSAwLCBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZiB8fCAodCA9IGYgLSAxIHwgMCwgdCAmIGYpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgQTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmUgPSBBLCB0ZSA9IGsgJiB0LCBBID0gayA+Pj4gamUoZikgfCAwLCBxMiA9IDAsIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSByIC0gMSB8IDAsICEodCAmIHIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAoTzAocikgKyAzMyB8IDApIC0gTzAoaykgfCAwLCBuID0gMCAtIG8gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGsgKyAxIHwgMCwgbiA9IDYzIC0gayB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmUgPSAwLCBBID0gKGsgPj4+IDApIC8gKGYgPj4+IDApIHwgMCwgdGUgPSBrIC0gWihBLCBmKSB8IDAsIHEyID0gMCwgQTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IE8wKGYpIC0gTzAoaykgfCAwLCBrID4+PiAwIDwgMzEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChuZSA9IEEgJiB0LCB0ZSA9IDAsIChyIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByID0gamUociksIGYgPSByICYgMzEsIChyICYgNjMpID4+PiAwID49IDMyID8gKGsgPSAwLCBBID0gaSA+Pj4gZiB8IDApIDogKGsgPSBpID4+PiBmIHwgMCwgQSA9ICgoMSA8PCBmKSAtIDEgJiBpKSA8PCAzMiAtIGYgfCBBID4+PiBmKSwgcTIgPSBrLCBBOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBvID0gayArIDEgfCAwLCBuID0gNjMgLSBrIHwgMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAodCA9IEEsIGsgPSBvICYgNjMsIGwgPSBrICYgMzEsIChrICYgNjMpID4+PiAwID49IDMyID8gKGsgPSAwLCB0ID0gaSA+Pj4gbCB8IDApIDogKGsgPSBpID4+PiBsIHwgMCwgdCA9ICgoMSA8PCBsKSAtIDEgJiBpKSA8PCAzMiAtIGwgfCB0ID4+PiBsKSwgbCA9IG4gJiA2MywgbiA9IEEsIGEgPSBsICYgMzEsIChsICYgNjMpID4+PiAwID49IDMyID8gKHUgPSBBIDw8IGEsIEEgPSAwKSA6ICh1ID0gKDEgPDwgYSkgLSAxICYgbiA+Pj4gMzIgLSBhIHwgaSA8PCBhLCBBID0gbiA8PCBhKSwgaSA9IHUsIG8pCiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gZiAtIDEgfCAwLCBnID0gciAtIDEgfCAwLCBuID0gKGcgfCAwKSAhPSAtMSA/IG4gKyAxIHwgMCA6IG4sIGwgPSBnOyBrID0gayA8PCAxIHwgdCA+Pj4gMzEsIHQgPSB0IDw8IDEgfCBpID4+PiAzMSwgZyA9IGssIGEgPSBuIC0gKGsgKyAodCA+Pj4gMCA+IGwgPj4+IDApIHwgMCkgfCAwLCBoID0gYSA+PiAzMSwgdSA9IGgsIGsgPSB0LCBhID0gciAmIHUsIHQgPSBrIC0gYSB8IDAsIGsgPSBnIC0gKChmICYgdSkgKyAoayA+Pj4gMCA8IGEgPj4+IDApIHwgMCkgfCAwLCB1ID0gaSA8PCAxIHwgQSA+Pj4gMzEsIEEgPSBzIHwgQSA8PCAxLCBpID0gdSB8IHcsIGcgPSBoICYgMSwgcyA9IGcsIG8gPSBvIC0gMSB8IDAsICEhbzsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICByZXR1cm4gbmUgPSB0LCB0ZSA9IGssIHUgPSBpIDw8IDEgfCBBID4+PiAzMSwgQSA9IGcgfCBBIDw8IDEsIHEyID0gdSB8IHcsIEE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZSA9IEEsIHRlID0gaSwgQSA9IDAsIGkgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcTIgPSBpLCBBOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIElrKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBmID0gWCArIC02NCB8IDAsIFggPSBmLCBlW2YgKyAzMiA+PiAyXSA9IDAsIGVbZiArIDM2ID4+IDJdID0gMCwgayA9IGYgKyA0MCB8IDAsIGVbayA+PiAyXSA9IDAsIGVbayArIDQgPj4gMl0gPSAwLCBlW2YgKyA0OCA+PiAyXSA9IDAsIGVbZiArIDUyID4+IDJdID0gMCwgZVtmICsgNTYgPj4gMl0gPSAwLCBlW2YgKyA2MCA+PiAyXSA9IDAsIGVbZiArIDE2ID4+IDJdID0gMCwgZVtmICsgMjAgPj4gMl0gPSAwLCBlW2YgKyAyNCA+PiAyXSA9IDAsIGVbZiArIDI4ID4+IDJdID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoZVtBICsgMjQgPj4gMl0gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgIHQgPSAxOTIsIG4gPSAyOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVtmICsgNDAgPj4gMl0gPSAxOTIsIGsgPSBmICsgNTIgfCAwLCB0ID0gMTkzLCBuID0gMzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZVtmICsgMjggPj4gMl0gPSB0LCBlW2YgKyAxNiA+PiAyXSA9IDE5NCwgZVtBICsgMTE2ID4+IDJdICYmIChlW2sgPj4gMl0gPSAxOTUsIG4gPSBuICsgMSB8IDApLCBrMihmICsgMTIgfCAwLCAxNzg1NzM3ODMyLCA0KSwgayA9IG8yW2VbZiArIDE2ID4+IDJdXShBLCBmICsgMTYgfCA4KSB8IDAsIGVbZiArIDIwID4+IDJdID0gazsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghayB8fCAoayA9IGVbZiArIDI0ID4+IDJdLCB0ID0gbzJbZVtmICsgMjggPj4gMl1dKEEsIGYgKyAzNiB8IDApIHwgMCwgZVtmICsgMzIgPj4gMl0gPSB0LCAhdCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgayA9IGVbZiArIDM2ID4+IDJdICsgKGsgKyA4IHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgPT0gMikKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBvMltlW2YgKyA0MCA+PiAyXV0oQSwgZiArIDQ4IHwgMCkgfCAwLCBlW2YgKyA0NCA+PiAyXSA9IHQsICF0KQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGsgKyBlW2YgKyA0OCA+PiAyXSB8IDAsIChuIHwgMCkgPT0gMykKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBvMltlW2YgKyA1MiA+PiAyXV0oQSwgZiArIDYwIHwgMCkgfCAwLCBlW2YgKyA1NiA+PiAyXSA9IEEsICFBKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBrID0gayArIGVbZiArIDYwID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBBID0gZiArIDggfCAwLCBrMihBLCBrLCA0KTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICgoTDAoaSwgQSwgOCwgcikgfCAwKSAhPSA4KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgZm9yIChBID0gZiArIDE2IHwgMCwgayA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoTDAoaSwgZVtBICsgNCA+PiAyXSwgZVtBICsgOCA+PiAyXSwgcikgfCAwKSAhPSBlW0EgKyA4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gQSArIDEyIHwgMCwgdCA9IDEsIGsgPSBrICsgMSB8IDAsIChuIHwgMCkgPT0gKGsgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQgPSAwLCBRKHIsIDEsIDM4MDYsIDApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGZvciAoQSA9IGYgKyAxNiB8IDAsIGsgPSAwOyBpID0gZVtBICsgNCA+PiAyXSwgaSAmJiBSKGkpLCBBID0gQSArIDEyIHwgMCwgayA9IGsgKyAxIHwgMCwgKG4gfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChrID0gMCwgUShyLCAxLCAxNzk1NCwgMCksIEEgPSBmICsgMTYgfCAwOyBpID0gZVtBICsgNCA+PiAyXSwgaSAmJiBSKGkpLCBBID0gQSArIDEyIHwgMCwgayA9IGsgKyAxIHwgMCwgKG4gfCAwKSAhPSAoayB8IDApOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHQgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGYgLSAtNjQgfCAwLCB0IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBaayhBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMDsKICAgICAgICAgICAgICBsID0gWCAtIDE2IHwgMCwgWCA9IGw7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCEoSVtBICsgMTAwIHwgMF0gJiAyKSkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDIxOTM1LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW0EgKyAxMDQgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPD0gNykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUShmLCAxLCA1ODA1LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBsICsgMTIgfCAwLCBoMihpLCBuLCA0KSwgayA9IGVbbCArIDEyID4+IDJdLCBoMihpICsgNCB8IDAsIG4sIDQpLCB0ID0gOCwgbiA9IGVbbCArIDEyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgIGY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGsgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDwgMTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gNTg0NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoMihpICsgOCB8IDAsIGwgKyA4IHwgMCwgNCksIGVbbCArIDggPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMTg3MzQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaDIoaSArIDEyIHwgMCwgbCArIDEyIHwgMCwgNCksIGsgPSBlW2wgKyAxMiA+PiAyXSwgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gNTY3MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDU2NzAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IDE2OwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA8IHQgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEoZiwgMSwgMTk0MzMsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPCBrID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDE5MzYxLCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpICsgdCB8IDAsIG8gPSBrIC0gdCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA8PSAxNjY4MjQ2NjQxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA9PSAxNjUxNTMyNjQzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgPT0gMTY2NzUyMzk0MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApICE9IDE2NjgxMTI3NTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIEE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gMzE3NjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSA9PSAxODg1NTY0MDE4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IDMxNzI4LCAobiB8IDApID09IDE3Njg0NDkxMzgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApICE9IDE2NjgyNDY2NDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBBOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAzMTczNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAzMTc0NDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAzMTc1MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAzMTc2ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobzJbZVt0ICsgNCA+PiAyXV0oQSwgdSwgbywgZikgfCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTA0ID4+IDJdID0gZVtBICsgMTA0ID4+IDJdIHwgMjE0NzQ4MzY0NzsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSAobiB8IDApID09IDE3Njg0NDkxMzggPyAxIDogYSwgaSA9IGkgKyBrIHwgMCwgciA9IHIgLSBrIHwgMCwgIXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgUShmLCAxLCAxOTI2MSwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgRltBICsgMTMyIHwgMF0gPSAxLCBlW0EgKyAxMDAgPj4gMl0gPSBlW0EgKyAxMDAgPj4gMl0gfCA0LCBBID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgaywgMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBRKGYsIDEsIDM4NDksIDApLCBBID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBsICsgMTYgfCAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBpNihBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMCwgZyA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoayA9IGVbQSArIDE2MCA+PiAyXSwgIWsgfHwgKG4gPSBlW0EgKyA3MiA+PiAyXSwgIW4gfCAhZVtuICsgMTYgPj4gMl0gfCAoayB8IDApICE9IGVbZVtuICsgMjQgPj4gMl0gKyA0MCA+PiAyXSkgfHwgKGwgPSBlW3IgKyAxNiA+PiAyXSwgIWwpIHx8ICh0ID0gZVtyICsgMjQgPj4gMl0sIGVbdCArIDQwID4+IDJdIHwgZVt0ICsgNDQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGlmIChuID0gMCwgbCA+Pj4gMCA+PSA4KQogICAgICAgICAgICAgICAgICAgIGZvciAodSA9IGwgJiAtODsgZVsodCArIFoobiwgNTIpIHwgMCkgKyA0MCA+PiAyXSA9IGssIGVbKHQgKyBaKG4gfCAxLCA1MikgfCAwKSArIDQwID4+IDJdID0gaywgZVsodCArIFoobiB8IDIsIDUyKSB8IDApICsgNDAgPj4gMl0gPSBrLCBlWyh0ICsgWihuIHwgMywgNTIpIHwgMCkgKyA0MCA+PiAyXSA9IGssIGVbKHQgKyBaKG4gfCA0LCA1MikgfCAwKSArIDQwID4+IDJdID0gaywgZVsodCArIFoobiB8IDUsIDUyKSB8IDApICsgNDAgPj4gMl0gPSBrLCBlWyh0ICsgWihuIHwgNiwgNTIpIHwgMCkgKyA0MCA+PiAyXSA9IGssIGVbKHQgKyBaKG4gfCA3LCA1MikgfCAwKSArIDQwID4+IDJdID0gaywgbiA9IG4gKyA4IHwgMCwgbyA9IG8gKyA4IHwgMCwgKHUgfCAwKSAhPSAobyB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmIChsID0gbCAmIDcsIGwpCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGVbKHQgKyBaKG4sIDUyKSB8IDApICsgNDAgPj4gMl0gPSBrLCBuID0gbiArIDEgfCAwLCBnID0gZyArIDEgfCAwLCAobCB8IDApICE9IChnIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgaWYgKGFyKHIsIGYpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHQgPSBlW0EgKyA3NiA+PiAyXSwgIXQgJiYgKHQgPSBFMigxLCAzNiksIGVbQSArIDc2ID4+IDJdID0gdCwgIXQpIHx8IChCaShyLCB0KSwgIWMwKGVbQSArIDE5MiA+PiAyXSwgMTI0LCBmKSkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBsID0gZVtBICsgMTkyID4+IDJdLCBrID0gZVtsID4+IDJdLCB0ID0gZVtsICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IDEsIHUgPSBrICYgMSwgKGsgfCAwKSA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBrICYgLTIsIG4gPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSB8fCAoayA9IDAsICEobzJbZVt0ID4+IDJdXShBLCBpLCBmKSB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IChvMltlW3QgKyA0ID4+IDJdXShBLCBpLCBmKSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBrLCB0ID0gdCArIDggfCAwLCBuID0gbiArIDIgfCAwLCAobyB8IDApID09IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBrID0gIWE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChhID0gdSA/IDAgOiBhLCBrIHwgIXUgfHwgKGEgPSAobzJbZVt0ID4+IDJdXShBLCBpLCBmKSB8IDApICE9IDApLCBlW2wgPj4gMl0gPSAwLCBhKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geTEoZVtBICsgNzIgPj4gMl0pLCBlW0EgKyA3MiA+PiAyXSA9IDAsIDA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVtsID4+IDJdID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEgPSBMNChBLCByKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHI2KEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICAgICAgICBuID0gWCAtIDE2IHwgMCwgWCA9IG4sIGsgPSAxOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghaSB8fCAoZiA9IGVbaSA+PiAyXSwgIWYpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICBvID0gaTsKICAgICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFXaShmLCAzMTY2LCA0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ2UoZiwgMjM4MykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDYwID4+IDJdID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZShmLCAyNDE1KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgNjAgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFXaShmLCAzMTgzLCA0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ2UoZiwgMjM5MSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZShmLCAyNDIyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgMTYgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAyMDM2MiwgV2koZiwgMzE3MSwgMTEpIHx8IChsID0gd3IoZiArIDExIHwgMCksIGkgPSAxODE4MywgbCA+Pj4gMCA+IDcpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gWihlW0EgKyAxMDggPj4gMl0sIGVbQSArIDEwNCA+PiAyXSksICFpIHwgIWVbQSArIDY4ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtBICsgMTU2ID4+IDJdLCBrID0gMCwgdCA9IDAsIGcgPSAhKGkgJiAxKSwgKGkgfCAwKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChoID0gaSAmIC0yLCBrID0gMSwgdSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaywgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBlWyhaKHQsIDU2NDQpICsgYSB8IDApICsgNTU4NCA+PiAyXSwgZiA9IDA7IGVbKGkgKyBaKGYsIDEwODApIHwgMCkgKyA4MDQgPj4gMl0gPSBsLCBmID0gZiArIDEgfCAwLCBrID0gZVtBICsgNjggPj4gMl0sIGYgPj4+IDAgPCBrID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGVbKFoodCB8IDEsIDU2NDQpICsgYSB8IDApICsgNTU4NCA+PiAyXSwgZiA9IDA7IGVbKGkgKyBaKGYsIDEwODApIHwgMCkgKyA4MDQgPj4gMl0gPSBsLCBmID0gZiArIDEgfCAwLCBrID0gZVtBICsgNjggPj4gMl0sIGYgPj4+IDAgPCBrID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB0ICsgMiB8IDAsIHUgPSB1ICsgMiB8IDAsIChoIHwgMCkgPT0gKHUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyB8IGspCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gZVsoWih0LCA1NjQ0KSArIGEgfCAwKSArIDU1ODQgPj4gMl0sIGYgPSAwOyBlWyhpICsgWihmLCAxMDgwKSB8IDApICsgODA0ID4+IDJdID0gbCwgZiA9IGYgKyAxIHwgMCwgZiA+Pj4gMCA8IGRbQSArIDY4ID4+IDJdOyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBvICsgNCB8IDAsIGYgPSBlW28gKyA0ID4+IDJdLCAhZikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGsgPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaSA9IDIwMzMxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVtuID4+IDJdID0gZiwgUShyLCAxLCBpLCBuKSwgayA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gbiArIDE2IHwgMCwgayB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZjYoQSwgaSwgciwgZiwgaykgewogICAgICAgICAgICAgIHZhciB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMDsKICAgICAgICAgICAgICBsID0gWCAtIDE2IHwgMCwgWCA9IGwsIGVbQSArIDggPj4gMl0gPT0gMTYgPyBBID0gZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCA6IEEgPSBlW0EgKyAxMiA+PiAyXSwgdCA9IGVbZiA+PiAyXTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIXQpIHsKICAgICAgICAgICAgICAgICAgZiA9IDAsIFEoaywgMSwgNDU1NywgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBBID0gZVtBICsgNTU4NCA+PiAyXSwgZVtmID4+IDJdID0gdCAtIDEsIGgyKHIsIGwgKyAxMiB8IDAsIDEpLCBuID0gWihpLCAxMDgwKSArIEEgfCAwLCBBID0gZVtsICsgMTIgPj4gMl0sIGVbbiArIDgwNCA+PiAyXSA9IEEgPj4+IDUsIGkgPSBBICYgMzEsIGVbbiArIDI0ID4+IDJdID0gaSwgQSA9IHIgKyAxIHwgMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGY6CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZVtmID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB0ID0gZVtmID4+IDJdID4+PiAxIHwgMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPj0gOTggJiYgKGVbbCArIDQgPj4gMl0gPSA5NywgZVtsICsgOCA+PiAyXSA9IDk3LCBlW2wgPj4gMl0gPSB0LCBRKGssIDIsIDI4NDA2LCBsKSwgaSA9IGVbbiArIDI0ID4+IDJdKSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSB0LCBpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IG4gKyAyOCB8IDAsIHIgPSAwOyBoMihBLCBsICsgMTIgfCAwLCAxKSwgciA+Pj4gMCA8PSA5NiAmJiAoayA9IGVbbCArIDEyID4+IDJdLCBhID0gaSArIChyIDw8IDMpIHwgMCwgZVthICsgNCA+PiAyXSA9IDAsIGVbYSA+PiAyXSA9IGsgPj4+IDMpLCBBID0gQSArIDEgfCAwLCByID0gciArIDEgfCAwLCAodCB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGZvciAoayA9IG4gKyAyOCB8IDAsIHIgPSAwOyBoMihBLCBsICsgMTIgfCAwLCAyKSwgciA+Pj4gMCA8PSA5NiAmJiAodCA9IGsgKyAociA8PCAzKSB8IDAsIGEgPSBlW2wgKyAxMiA+PiAyXSwgZVt0ICsgNCA+PiAyXSA9IGEgJiAyMDQ3LCBlW3QgPj4gMl0gPSBhID4+PiAxMSksIEEgPSBBICsgMiB8IDAsIHIgPSByICsgMSB8IDAsIChyIHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgdCA9IGkgPDwgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlW2YgPj4gMl0gPSBlW2YgPj4gMl0gLSB0LCBmID0gMSwgZVtuICsgMjQgPj4gMl0gIT0gMSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGZvciAodCA9IG4gKyAyOCB8IDAsIHIgPSBlW24gKyAzMiA+PiAyXSwgayA9IGVbbiArIDI4ID4+IDJdLCBBID0gMTsgaSA9IHQgKyAoQSA8PCAzKSB8IDAsIGVbaSArIDQgPj4gMl0gPSByLCBlW2kgKyAxMiA+PiAyXSA9IHIsIG4gPSBrIC0gKChBID4+PiAwKSAvIDMgfCAwKSB8IDAsIGVbaSArIDggPj4gMl0gPSAobiB8IDApID4gMCA/IG4gOiAwLCBuID0gaSwgaSA9IGsgLSAoKEEgLSAxID4+PiAwKSAvIDMgfCAwKSB8IDAsIGVbbiA+PiAyXSA9IChpIHwgMCkgPiAwID8gaSA6IDAsIEEgPSBBICsgMiB8IDAsIChBIHwgMCkgIT0gOTc7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGwgKyAxNiB8IDAsIGY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gQTYoKSB7CiAgICAgICAgICAgICAgdmFyIEEgPSAwOwogICAgICAgICAgICAgIHM0KDMwMTcyLCAzMDE5NiwgMzAyMjgsIDAsIDI5Nzc1LCA2MiwgMjk5MzUsIDAsIDI5OTM1LCAwLCAxNDk3LCAyOTgwMSwgNjMpLCBoNCgzMDE3MiwgMSwgMzAyNjAsIDI5Nzc1LCA2NCwgNjUpLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSA2NiwgWTAoMzAxNzIsIDE0NDAsIDMsIDMwMjY0LCAzMDI3NiwgNjcsIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gNjgsIFkwKDMwMTcyLCAxNDIzLCAyLCAzMDI4NCwgMzAwMzYsIDY5LCBBIHwgMCwgMCwgMCwgMCksIEEgPSBfMig4KSwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IDcwLCBZMCgzMDE3MiwgMjEzNSwgMiwgMzAyOTIsIDMwMDU2LCA3MSwgQSB8IDAsIDAsIDAsIDApLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSA3MiwgWTAoMzAxNzIsIDEzMDAsIDMsIDMwMzAwLCAzMDMxMiwgNzMsIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gNzQsIFkwKDMwMTcyLCAxMDI0LCA0LCAzMDMyMCwgMzAzMzYsIDc1LCBBIHwgMCwgMCwgMCwgMCksIEEgPSBfMig4KSwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IDc2LCBZMCgzMDE3MiwgMTQ1NywgMywgMzAzMDAsIDMwMzEyLCA3MywgQSB8IDAsIDAsIDAsIDApLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSA3NywgWTAoMzAxNzIsIDIwNjgsIDQsIDMwMzUyLCAzMDM2OCwgNzgsIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gNzksIFkwKDMwMTcyLCAxMjE0LCAzLCAzMDM3NiwgMzAzODgsIDgwLCBBIHwgMCwgMCwgMCwgMCksIEEgPSBfMig4KSwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IDgxLCBZMCgzMDE3MiwgMjAzMCwgMywgMzAzOTYsIDMwMzg4LCA4MiwgQSB8IDAsIDAsIDAsIDApLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSA4MywgWTAoMzAxNzIsIDExODYsIDMsIDMwMzc2LCAzMDM4OCwgODAsIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gODQsIFkwKDMwMTcyLCAxMzM5LCAzLCAzMDM5NiwgMzAzODgsIDgyLCBBIHwgMCwgMCwgMCwgMCksIEEgPSBfMig4KSwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IDg1LCBZMCgzMDE3MiwgMTI3MSwgMywgMzAzMDAsIDMwMzEyLCA3MywgQSB8IDAsIDAsIDAsIDApLCBBID0gXzIoOCksIGVbQSArIDQgPj4gMl0gPSAwLCBlW0EgPj4gMl0gPSA4NiwgWTAoMzAxNzIsIDEyNDQsIDQsIDMwNDE2LCAzMDM2OCwgODcsIEEgfCAwLCAwLCAwLCAwKSwgQSA9IF8yKDgpLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBID4+IDJdID0gODgsIFkwKDMwMTcyLCAxNjk0LCA0LCAzMDQzMiwgMzA0NDgsIDg5LCBBIHwgMCwgMCwgMCwgMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gRjIoQSwgaSwgcikgewogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwOwogICAgICAgICAgICAgIGlmIChyID4+PiAwID49IDUxMikKICAgICAgICAgICAgICAgIHJldHVybiBKQShBIHwgMCwgaSB8IDAsIHIgfCAwKSwgQTsKICAgICAgICAgICAgICBmID0gQSArIHIgfCAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghKChBIF4gaSkgJiAzKSkgewogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoQSAmIDMpKSB7CiAgICAgICAgICAgICAgICAgICAgICByID0gQTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghcikgewogICAgICAgICAgICAgICAgICAgICAgciA9IEE7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBBOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKEZbciB8IDBdID0gSVtpIHwgMF0sIGkgPSBpICsgMSB8IDAsIHIgPSByICsgMSB8IDAsICEociAmIDMpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCEociA+Pj4gMCA8IGYgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgayA9IGYgJiAtNDsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmIChmID4+PiAwIDwgNjQgfHwgKHQgPSBrICsgLTY0IHwgMCwgdCA+Pj4gMCA8IHIgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVtyID4+IDJdID0gZVtpID4+IDJdLCBlW3IgKyA0ID4+IDJdID0gZVtpICsgNCA+PiAyXSwgZVtyICsgOCA+PiAyXSA9IGVbaSArIDggPj4gMl0sIGVbciArIDEyID4+IDJdID0gZVtpICsgMTIgPj4gMl0sIGVbciArIDE2ID4+IDJdID0gZVtpICsgMTYgPj4gMl0sIGVbciArIDIwID4+IDJdID0gZVtpICsgMjAgPj4gMl0sIGVbciArIDI0ID4+IDJdID0gZVtpICsgMjQgPj4gMl0sIGVbciArIDI4ID4+IDJdID0gZVtpICsgMjggPj4gMl0sIGVbciArIDMyID4+IDJdID0gZVtpICsgMzIgPj4gMl0sIGVbciArIDM2ID4+IDJdID0gZVtpICsgMzYgPj4gMl0sIGVbciArIDQwID4+IDJdID0gZVtpICsgNDAgPj4gMl0sIGVbciArIDQ0ID4+IDJdID0gZVtpICsgNDQgPj4gMl0sIGVbciArIDQ4ID4+IDJdID0gZVtpICsgNDggPj4gMl0sIGVbciArIDUyID4+IDJdID0gZVtpICsgNTIgPj4gMl0sIGVbciArIDU2ID4+IDJdID0gZVtpICsgNTYgPj4gMl0sIGVbciArIDYwID4+IDJdID0gZVtpICsgNjAgPj4gMl0sIGkgPSBpIC0gLTY0IHwgMCwgciA9IHIgLSAtNjQgfCAwLCB0ID4+PiAwID49IHIgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA+PSBrID4+PiAwKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGZvciAoOyBlW3IgPj4gMl0gPSBlW2kgPj4gMl0sIGkgPSBpICsgNCB8IDAsIHIgPSByICsgNCB8IDAsIGsgPj4+IDAgPiByID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGYgPj4+IDAgPCA0KSB7CiAgICAgICAgICAgICAgICAgIHIgPSBBOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGsgPSBmIC0gNCB8IDAsIGsgPj4+IDAgPCBBID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgIHIgPSBBOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChyID0gQTsgRltyIHwgMF0gPSBJW2kgfCAwXSwgRltyICsgMSB8IDBdID0gSVtpICsgMSB8IDBdLCBGW3IgKyAyIHwgMF0gPSBJW2kgKyAyIHwgMF0sIEZbciArIDMgfCAwXSA9IElbaSArIDMgfCAwXSwgaSA9IGkgKyA0IHwgMCwgciA9IHIgKyA0IHwgMCwgayA+Pj4gMCA+PSByID4+PiAwOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPCBmID4+PiAwKQogICAgICAgICAgICAgICAgZm9yICg7IEZbciB8IDBdID0gSVtpIHwgMF0sIGkgPSBpICsgMSB8IDAsIHIgPSByICsgMSB8IDAsIChmIHwgMCkgIT0gKHIgfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgcmV0dXJuIEE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gQmkoQSwgaSkgewogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDA7CiAgICAgICAgICAgICAgaWYgKGVbaSA+PiAyXSA9IGVbQSA+PiAyXSwgZVtpICsgNCA+PiAyXSA9IGVbQSArIDQgPj4gMl0sIGVbaSArIDggPj4gMl0gPSBlW0EgKyA4ID4+IDJdLCBlW2kgKyAxMiA+PiAyXSA9IGVbQSArIDEyID4+IDJdLCByID0gZVtpICsgMjQgPj4gMl0sIHIpIHsKICAgICAgICAgICAgICAgIGlmIChmID0gZVtpICsgMTYgPj4gMl0sIGYpIHsKICAgICAgICAgICAgICAgICAgZm9yIChyID0gMDsgdCA9IGVbKGVbaSArIDI0ID4+IDJdICsgWihyLCA1MikgfCAwKSArIDQ0ID4+IDJdLCB0ICYmIChSKHQpLCBmID0gZVtpICsgMTYgPj4gMl0pLCByID0gciArIDEgfCAwLCBmID4+PiAwID4gciA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgciA9IGVbaSArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgUihyKSwgZVtpICsgMjQgPj4gMl0gPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAociA9IGVbQSArIDE2ID4+IDJdLCBlW2kgKyAxNiA+PiAyXSA9IHIsIHIgPSBVMihaKHIsIDUyKSksIGVbaSArIDI0ID4+IDJdID0gciwgcikgewogICAgICAgICAgICAgICAgaWYgKGVbaSArIDE2ID4+IDJdKQogICAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyBuID0gWih0LCA1MiksIHIgPSBuICsgciB8IDAsIGYgPSBlW0EgKyAyNCA+PiAyXSArIG4gfCAwLCBrID0gZVtmICsgNCA+PiAyXSwgZVtyID4+IDJdID0gZVtmID4+IDJdLCBlW3IgKyA0ID4+IDJdID0gaywgZVtyICsgNDggPj4gMl0gPSBlW2YgKyA0OCA+PiAyXSwgayA9IGVbZiArIDQ0ID4+IDJdLCBlW3IgKyA0MCA+PiAyXSA9IGVbZiArIDQwID4+IDJdLCBlW3IgKyA0NCA+PiAyXSA9IGssIGsgPSBlW2YgKyAzNiA+PiAyXSwgZVtyICsgMzIgPj4gMl0gPSBlW2YgKyAzMiA+PiAyXSwgZVtyICsgMzYgPj4gMl0gPSBrLCBrID0gZVtmICsgMjggPj4gMl0sIGVbciArIDI0ID4+IDJdID0gZVtmICsgMjQgPj4gMl0sIGVbciArIDI4ID4+IDJdID0gaywgayA9IGVbZiArIDIwID4+IDJdLCBlW3IgKyAxNiA+PiAyXSA9IGVbZiArIDE2ID4+IDJdLCBlW3IgKyAyMCA+PiAyXSA9IGssIGsgPSBlW2YgKyAxMiA+PiAyXSwgZVtyICsgOCA+PiAyXSA9IGVbZiArIDggPj4gMl0sIGVbciArIDEyID4+IDJdID0gaywgciA9IGVbaSArIDI0ID4+IDJdLCBlWyhuICsgciB8IDApICsgNDQgPj4gMl0gPSAwLCB0ID0gdCArIDEgfCAwLCB0ID4+PiAwIDwgZFtpICsgMTYgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAoZVtpICsgMjAgPj4gMl0gPSBlW0EgKyAyMCA+PiAyXSwgciA9IGVbQSArIDMyID4+IDJdLCBlW2kgKyAzMiA+PiAyXSA9IHIsIHIpIHsKICAgICAgICAgICAgICAgICAgaWYgKHIgPSBVMihyKSwgZVtpICsgMjggPj4gMl0gPSByLCAhcikgewogICAgICAgICAgICAgICAgICAgIGVbaSArIDI4ID4+IDJdID0gMCwgZVtpICsgMzIgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBGMihyLCBlW0EgKyAyOCA+PiAyXSwgZVtBICsgMzIgPj4gMl0pOwogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW2kgKyAyOCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVbaSArIDE2ID4+IDJdID0gMCwgZVtpICsgMjQgPj4gMl0gPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIENrKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIWMwKGVbQSArIDQgPj4gMl0sIDE4NiwgZikpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBhID0gZVtBICsgNCA+PiAyXSwgayA9IGVbYSA+PiAyXSwgbiA9IGVbYSArIDggPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSAxLCBvID0gayAmIDEsIChrIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gayAmIC0yOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCB8fCAobCA9IDAsICEobzJbZVtuID4+IDJdXShBLCBpLCBmKSB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IChvMltlW24gKyA0ID4+IDJdXShBLCBpLCBmKSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBsLCBuID0gbiArIDggfCAwLCB1ID0gdSArIDIgfCAwLCAoayB8IDApID09ICh1IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBrID0gIXQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gbyA/IDAgOiB0LCBrIHwgIW8gfHwgKHQgPSAobzJbZVtuID4+IDJdXShBLCBpLCBmKSB8IDApICE9IDApLCBlW2EgPj4gMl0gPSAwLCB0KQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW2EgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFjMChlW0EgKyA4ID4+IDJdLCAxODcsIGYpIHx8ICFjMChlW0EgKyA4ID4+IDJdLCAxODgsIGYpIHx8ICFjMChlW0EgKyA4ID4+IDJdLCAxODksIGYpIHx8IGVbQSArIDk2ID4+IDJdICYmICFjMChlW0EgKyA4ID4+IDJdLCAxOTAsIGYpIHx8ICFjMChlW0EgKyA4ID4+IDJdLCAxOTEsIGYpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgYSA9IGVbQSArIDggPj4gMl0sIGsgPSBlW2EgPj4gMl0sIG4gPSBlW2EgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoaykgewogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gMSwgbyA9IGsgJiAxLCAoayB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IGsgJiAtMiwgdSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0IHx8IChsID0gMCwgIShvMltlW24gPj4gMl1dKEEsIGksIGYpIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gKG8yW2VbbiArIDQgPj4gMl1dKEEsIGksIGYpIHwgMCkgIT0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGwsIG4gPSBuICsgOCB8IDAsIHUgPSB1ICsgMiB8IDAsIChrIHwgMCkgPT0gKHUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGsgPSAhdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBvID8gMCA6IHQsIGsgfCAhbyB8fCAodCA9IChvMltlW24gPj4gMl1dKEEsIGksIGYpIHwgMCkgIT0gMCksIGVbYSA+PiAyXSA9IDAsIHQpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbYSA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnID0gRDQoZVtBID4+IDJdLCBpLCByLCBmKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGcgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGNpKEEsIGksIHIsIGYsIGssIHQpIHsKICAgICAgICAgICAgICB2YXIgbiA9IDAsIGwgPSBXKDApLCBhID0gMCwgdSA9IFcoMCk7CiAgICAgICAgICAgICAgbiA9IChyIDw8IDYpICsgaSB8IDAsIEEgPSByID8gbiArIC02NCB8IDAgOiBBLCBhID0gZiA+Pj4gMCA8IGsgPj4+IDAgPyBmIDogazsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA8PSByID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgIGkgPSBBOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChsID0gR1tBID4+IDJdOyBpID0gbiwgbiA9IGkgLSAzMiB8IDAsIHUgPSBsLCBsID0gR1tpID4+IDJdLCBHW24gPj4gMl0gPSBXKFcodSArIGwpICogdCkgKyBHW24gPj4gMl0sIG4gPSBpIC0gMjggfCAwLCBHW24gPj4gMl0gPSBXKFcoR1tBICsgNCA+PiAyXSArIEdbaSArIDQgPj4gMl0pICogdCkgKyBHW24gPj4gMl0sIG4gPSBpIC0gMjQgfCAwLCBHW24gPj4gMl0gPSBXKFcoR1tBICsgOCA+PiAyXSArIEdbaSArIDggPj4gMl0pICogdCkgKyBHW24gPj4gMl0sIG4gPSBpIC0gMjAgfCAwLCBHW24gPj4gMl0gPSBXKFcoR1tBICsgMTIgPj4gMl0gKyBHW2kgKyAxMiA+PiAyXSkgKiB0KSArIEdbbiA+PiAyXSwgbiA9IGkgLSAxNiB8IDAsIEdbbiA+PiAyXSA9IFcoVyhHW0EgKyAxNiA+PiAyXSArIEdbaSArIDE2ID4+IDJdKSAqIHQpICsgR1tuID4+IDJdLCBuID0gaSAtIDEyIHwgMCwgR1tuID4+IDJdID0gVyhXKEdbQSArIDIwID4+IDJdICsgR1tpICsgMjAgPj4gMl0pICogdCkgKyBHW24gPj4gMl0sIG4gPSBpIC0gOCB8IDAsIEdbbiA+PiAyXSA9IFcoVyhHW0EgKyAyNCA+PiAyXSArIEdbaSArIDI0ID4+IDJdKSAqIHQpICsgR1tuID4+IDJdLCBuID0gaSAtIDQgfCAwLCBHW24gPj4gMl0gPSBXKFcoR1tBICsgMjggPj4gMl0gKyBHW2kgKyAyOCA+PiAyXSkgKiB0KSArIEdbbiA+PiAyXSwgbiA9IGkgLSAtNjQgfCAwLCBBID0gaSwgciA9IHIgKyAxIHwgMCwgKGEgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZiA+Pj4gMCA+IGsgPj4+IDAgJiYgKEEgPSBuIC0gMzIgfCAwLCB0ID0gVyh0ICsgdCksIEdbQSA+PiAyXSA9IFcoR1tpID4+IDJdICogdCkgKyBHW0EgPj4gMl0sIEEgPSBuIC0gMjggfCAwLCBHW0EgPj4gMl0gPSBXKEdbaSArIDQgPj4gMl0gKiB0KSArIEdbQSA+PiAyXSwgQSA9IG4gLSAyNCB8IDAsIEdbQSA+PiAyXSA9IFcoR1tpICsgOCA+PiAyXSAqIHQpICsgR1tBID4+IDJdLCBBID0gbiAtIDIwIHwgMCwgR1tBID4+IDJdID0gVyhHW2kgKyAxMiA+PiAyXSAqIHQpICsgR1tBID4+IDJdLCBBID0gbiAtIDE2IHwgMCwgR1tBID4+IDJdID0gVyhHW2kgKyAxNiA+PiAyXSAqIHQpICsgR1tBID4+IDJdLCBBID0gbiAtIDEyIHwgMCwgR1tBID4+IDJdID0gVyhHW2kgKyAyMCA+PiAyXSAqIHQpICsgR1tBID4+IDJdLCBBID0gbiAtIDggfCAwLCBHW0EgPj4gMl0gPSBXKEdbaSArIDI0ID4+IDJdICogdCkgKyBHW0EgPj4gMl0sIEEgPSBuIC0gNCB8IDAsIEdbQSA+PiAyXSA9IFcoR1tpICsgMjggPj4gMl0gKiB0KSArIEdbQSA+PiAyXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gR2soQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICAgICAgICB0ID0gWCAtIDE2IHwgMCwgWCA9IHQ7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGVbQSArIDEyMCA+PiAyXSB8IHIgPj4+IDAgPCAzKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKGgyKGksIHQgKyAxMiB8IDAsIDIpLCB1ID0gRzJbdCArIDEyID4+IDFdLCB1IC0gMTAyNSA+Pj4gMCA8PSA0Mjk0OTY2MjcxKSB7CiAgICAgICAgICAgICAgICAgIGVbdCA+PiAyXSA9IHUsIFEoZiwgMSwgNjAzNywgdCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaDIoaSArIDIgfCAwLCB0ICsgMTIgfCAwLCAxKSwgYSA9IEcyW3QgKyAxMiA+PiAxXSwgIWEpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCA1NDM5LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChhICsgMyA+Pj4gMCA+IHIgPj4+IDAgfHwgKGwgPSBVMihaKGEsIHUpIDw8IDIpLCAhbCkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAobyA9IFUyKGEpLCAhbykgewogICAgICAgICAgICAgICAgICBSKGwpOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGcgPSBVMihhKSwgIWcpIHsKICAgICAgICAgICAgICAgICAgUihsKSwgUihvKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChuID0gVTIoMjApLCAhbikgewogICAgICAgICAgICAgICAgICBSKGwpLCBSKG8pLCBSKGcpOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChmID0gaSArIDMgfCAwLCBlW24gKyA4ID4+IDJdID0gbywgZVtuICsgNCA+PiAyXSA9IGcsIHUyW24gKyAxNiA+PiAxXSA9IHUsIGVbbiA+PiAyXSA9IGwsIGggPSBlW3QgKyAxMiA+PiAyXSwgZVtuICsgMTIgPj4gMl0gPSAwLCBGW24gKyAxOCB8IDBdID0gaCwgZVtBICsgMTIwID4+IDJdID0gbjsgaDIoZiwgdCArIDEyIHwgMCwgMSksIEZbayArIG8gfCAwXSA9IChJW3QgKyAxMiB8IDBdICYgMTI3KSArIDEsIEZbayArIGcgfCAwXSA9IChlW3QgKyAxMiA+PiAyXSAmIDEyOCkgPj4+IDcsIGYgPSBmICsgMSB8IDAsIGsgPSBrICsgMSB8IDAsIChhIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAoIXUpIHsKICAgICAgICAgICAgICAgICAgayA9IDE7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwLCBBID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IElbayArIG8gfCAwXSArIDcgPj4+IDMgfCAwLCBrID0gayA+Pj4gMCA+PSA0ID8gNCA6IGssIChrICsgKGYgLSBpIHwgMCkgfCAwKSA+IChyIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGgyKGYsIHQgKyAxMiB8IDAsIGspLCBlW2wgPj4gMl0gPSBlW3QgKyAxMiA+PiAyXSwgbCA9IGwgKyA0IHwgMCwgZiA9IGYgKyBrIHwgMCwgQSA9IEEgKyAxIHwgMCwgayA9IEEgJiA2NTUzNSwgIShhID4+PiAwID4gayA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoayA9IDEsIG4gPSBuICsgMSB8IDAsICEoKG4gJiA2NTUzNSkgPj4+IDAgPCB1ID4+PiAwKSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSB0ICsgMTYgfCAwLCBrIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBXayhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDA7CiAgICAgICAgICAgICAgbCA9IFggLSAxNiB8IDAsIFggPSBsLCBrID0gRzJbciArIDQgPj4gMV0gfCBHMltyICsgNiA+PiAxXSA8PCAxNiwgciA9IEcyW3IgPj4gMV0gfCBHMltyICsgMiA+PiAxXSA8PCAxNiwgZVtpICsgMjQgPj4gMl0gPSByLCBlW2kgKyAyOCA+PiAyXSA9IGssIHQgPSBpICsgNTYgfCAwLCBuID0gciwgZyA9IGssIHIgPSBrID4+PiA4IHwgMCwgayA9IHIgJiAyNTUsIGEgPSBlW2kgKyA1NiA+PiAyXSwgZiA9IGVbaSArIDYwID4+IDJdIC0gYSA+PiAzOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChrID4+PiAwID4gZiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICB2Nih0LCBrIC0gZiB8IDApLCBmID0gSVtpICsgMjkgfCAwXSwgciA9IGY7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBrID4+PiAwIDwgZiA+Pj4gMCAmJiAoZVtpICsgNjAgPj4gMl0gPSBhICsgKGsgPDwgMykpLCBmID0gazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaCA9IG4gPj4+IDE2IHwgMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIShyICYgMjU1KSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmIChhID0gZVt0ID4+IDJdLCByID0gMCwgZiAtIDEgPj4+IDAgPj0gMykKICAgICAgICAgICAgICAgICAgZm9yIChzID0gZiAmIDI1MjsgdCA9IChyIDw8IDMpICsgYSB8IDAsIGVbdCA+PiAyXSA9IDEsIGVbdCArIDQgPj4gMl0gPSAxLCBlW3QgKyA4ID4+IDJdID0gMSwgZVt0ICsgMTIgPj4gMl0gPSAxLCBlW3QgKyAxNiA+PiAyXSA9IDEsIGVbdCArIDIwID4+IDJdID0gMSwgZVt0ICsgMjQgPj4gMl0gPSAxLCBlW3QgKyAyOCA+PiAyXSA9IDEsIHIgPSByICsgNCB8IDAsIHUgPSB1ICsgNCB8IDAsIChzIHwgMCkgIT0gKHUgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGlmIChmID0gZiAmIDMsICFmKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yICg7IHQgPSAociA8PCAzKSArIGEgfCAwLCBlW3QgPj4gMl0gPSAxLCBlW3QgKyA0ID4+IDJdID0gMSwgciA9IHIgKyAxIHwgMCwgbyA9IG8gKyAxIHwgMCwgKGYgfCAwKSAhPSAobyB8IDApOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgayA9IFooaywgWihaKG4gJiA2NTUzNSwgaCksIChnICYgMjU1KSArIDcgPj4+IDMgfCAwKSksIGYgPSBlW2kgKyA0ID4+IDJdLCByID0gZVtpID4+IDJdLCBuID0gZiAtIHIgfCAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChrID4+PiAwID4gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBUZShpLCBrIC0gbiB8IDApLCByID0gZVtpID4+IDJdLCBmID0gZVtpICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChrID4+PiAwID49IG4gPj4+IDApCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmID0gciArIGsgfCAwLCBlW2kgKyA0ID4+IDJdID0gZjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZVtsICsgMTIgPj4gMl0gPSByLCBlW2wgKyA4ID4+IDJdID0gZiAtIHIsIHcgPSBBLCBCID0gcnIoMjk5ODgsIGwgKyA4IHwgMCkgfCAwLCBlW3cgKyA0ID4+IDJdID0gQiwgZVtBID4+IDJdID0gNTA2NTYsIFggPSBsICsgMTYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG0xKEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIHQgPSBYIC0gMTYgfCAwLCBYID0gdCwgZiA9IGVbQSA+PiAyXSwgayA9IGVbZiAtIDggPj4gMl0sIGVbdCArIDEyID4+IDJdID0gaywgZVt0ICsgNCA+PiAyXSA9IEEgKyBrLCBlW3QgKyA4ID4+IDJdID0gZVtmIC0gNCA+PiAyXSwgayA9IGVbdCArIDggPj4gMl0sIGYgPSB0MShrLCBpLCAwKSwgbiA9IGVbdCArIDQgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgQSA9IFggKyAtNjQgfCAwLCBYID0gQSwgWCA9IEEgLSAtNjQgfCAwLCByID0gZVt0ICsgMTIgPj4gMl0gPyAwIDogbjsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChmID0gWCArIC02NCB8IDAsIFggPSBmLCAoQSB8IDApID49IChuIHwgMCkgJiYgKGVbZiArIDI4ID4+IDJdID0gMCwgZVtmICsgMzIgPj4gMl0gPSAwLCBlW2YgKyAzNiA+PiAyXSA9IDAsIGVbZiArIDQwID4+IDJdID0gMCwgZVtmICsgNDQgPj4gMl0gPSAwLCBlW2YgKyA0OCA+PiAyXSA9IDAsIGVbZiArIDIwID4+IDJdID0gMCwgZVtmICsgMjQgPj4gMl0gPSAwLCBlW2YgKyAxNiA+PiAyXSA9IDAsIGVbZiArIDEyID4+IDJdID0gaSwgZVtmICsgNCA+PiAyXSA9IGssIGVbZiArIDYwID4+IDJdID0gMCwgZVtmICsgNTIgPj4gMl0gPSAxLCBlW2YgKyA1NiA+PiAyXSA9IDE2Nzc3MjE2LCBlW2YgKyA4ID4+IDJdID0gQSwgbzJbZVtlW2sgPj4gMl0gKyAyMCA+PiAyXV0oaywgZiArIDQgfCAwLCBuLCBuLCAxLCAwKSwgciA9IGVbZiArIDI4ID4+IDJdID8gQSA6IDApLCBYID0gZiAtIC02NCB8IDAsIHIpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICByID0gWCArIC02NCB8IDAsIFggPSByLCBlW3IgKyAxNiA+PiAyXSA9IDAsIGVbciArIDEyID4+IDJdID0gNDg1MjgsIGVbciArIDggPj4gMl0gPSBBLCBlW3IgKyA0ID4+IDJdID0gaSwgQSA9IDAsIGQyKHIgKyAyMCB8IDAsIDAsIDM5KSwgZVtyICsgNjAgPj4gMl0gPSAwLCBGW3IgKyA1OSB8IDBdID0gMSwgbzJbZVtlW2sgPj4gMl0gKyAyNCA+PiAyXV0oaywgciArIDQgfCAwLCBuLCAxLCAwKTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVbciArIDQwID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBlW3IgKyA0NCA+PiAyXSA9PSAxICYmIGVbciArIDMyID4+IDJdID09IDEgJiYgZVtyICsgMzYgPj4gMl0gPT0gMSA/IGVbciArIDI0ID4+IDJdIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZVtyICsgMjggPj4gMl0gIT0gMSAmJiBlW3IgKyA0NCA+PiAyXSB8IGVbciArIDMyID4+IDJdICE9IDEgfCBlW3IgKyAzNiA+PiAyXSAhPSAxKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIEEgPSBlW3IgKyAyMCA+PiAyXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFggPSByIC0gLTY0IHwgMCwgciA9IEE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gdCArIDE2IHwgMCwgcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBtayhBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDA7CiAgICAgICAgICAgICAgaWYgKHQgPSAtMSwgayA9IC0xLCAhKElbQSArIDY4IHwgMF0gJiA4KSkgewogICAgICAgICAgICAgICAgdCA9IGVbQSArIDMyID4+IDJdLCBlW0EgKyAzNiA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGVbQSArIDQ4ID4+IDJdLCBrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gbzJbZVtBICsgMjAgPj4gMl1dKHQsIGssIGVbQSA+PiAyXSkgfCAwLCAoayB8IDApID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGsgKyBlW0EgKyAzNiA+PiAyXSB8IDAsIGVbQSArIDM2ID4+IDJdID0gdCwgayA9IGVbQSArIDQ4ID4+IDJdIC0gayB8IDAsIGVbQSArIDQ4ID4+IDJdID0gaywgIWspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZVtBICsgMzIgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMzYgPj4gMl0gPSB0LCAhIWkgJiAociB8IDApID49IDAgfCAociB8IDApID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIHQgPSAwLCBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlW0EgKyA2OCA+PiAyXSA9IGVbQSArIDY4ID4+IDJdIHwgOCwgUShmLCA0LCAyNzU5OSwgMCksIGVbQSArIDQ4ID4+IDJdID0gMCwgZVtBICsgNjggPj4gMl0gPSBlW0EgKyA2OCA+PiAyXSB8IDgsIHEyID0gLTEsIC0xOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGZvciAodCA9IDAsIGsgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgIGlmIChuID0gbzJbZVtBICsgMjQgPj4gMl1dKGksIHIsIGVbQSA+PiAyXSkgfCAwLCBsID0gcTIsIGEgPSBsLCAobiAmIGwpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFEoZiwgNCwgMjc1ODQsIDApLCBlW0EgKyA2OCA+PiAyXSA9IGVbQSArIDY4ID4+IDJdIHwgOCwgaSA9IGsgKyBlW0EgKyA2MCA+PiAyXSB8IDAsIHIgPSB0ICsgZVtBICsgNTYgPj4gMl0gfCAwLCBpID0gciA+Pj4gMCA8IHQgPj4+IDAgPyBpICsgMSB8IDAgOiBpLCBlW0EgKyA1NiA+PiAyXSA9IHIsIGVbQSArIDYwID4+IDJdID0gaSwgQSA9ICEoayB8IHQpLCBpID0gQSA/IC0xIDogdCwgcTIgPSBBID8gLTEgOiBrLCBpIHwgMDsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGsgKyBhIHwgMCwgdCA9IHQgKyBuIHwgMCwgayA9IHQgPj4+IDAgPCBuID4+PiAwID8gayArIDEgfCAwIDogaywgbCA9IGksIGkgPSBpIC0gbiB8IDAsIHIgPSByIC0gKGEgKyAobiA+Pj4gMCA+IGwgPj4+IDApIHwgMCkgfCAwLCAhKCEhaSAmIChyIHwgMCkgPj0gMCB8IChyIHwgMCkgPiAwKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpID0gayArIGVbQSArIDYwID4+IDJdIHwgMCwgciA9IHQgKyBlW0EgKyA1NiA+PiAyXSB8IDAsIGkgPSByID4+PiAwIDwgdCA+Pj4gMCA/IGkgKyAxIHwgMCA6IGksIGVbQSArIDU2ID4+IDJdID0gciwgZVtBICsgNjAgPj4gMl0gPSBpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcTIgPSBrLCB0IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBXZShBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDAsIGsgPSAwOwogICAgICAgICAgICAgIGsgPSBYIC0gNDggfCAwLCBYID0gaywgaSA9IEUyKDEsIDQ0KTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICBpZiAoZVtpICsgMTYgPj4gMl0gPSAwLCAoQSB8IDApIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IEUyKDEsIDgpLCBlW2kgKyAzNiA+PiAyXSA9IEEsIEEpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIFIoaSksIGkgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHIgPSBFMigxLCAyNCksICFyKSB7CiAgICAgICAgICAgICAgICAgICAgZVtpICsgMTIgPj4gMl0gPSAwLCBSKGkpLCBpID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbaSArIDEyID4+IDJdID0gcjsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmIChyID0gVTIoNDgpLCAhcikgewogICAgICAgICAgICAgICAgICAgICAgZVtpICsgOCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgOCA+PiAyXSA9IHIsIHIgPSBFMihBLCAyMCksIGVbaSA+PiAyXSA9IHIsICFyKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBlW2kgKyA0ID4+IDJdID0gQSwgZVtyID4+IDJdID0gaSwgQSA9IEUyKDEsIDI0KTsKICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIUEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZVtlW2kgPj4gMl0gKyAxMiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtlW2kgPj4gMl0gKyAxMiA+PiAyXSA9IEEsIEEgPSBVMig0OCksICFBKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gZVtpID4+IDJdLCBlW0EgKyAxNiA+PiAyXSA9IDAsIEEgPSBlW0EgKyAxMiA+PiAyXSwgIUEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgUihBKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtpID4+IDJdLCBlW3IgKyA4ID4+IDJdID0gMCwgZVtyICsgMTYgPj4gMl0gPSBBLCBBID0gVTIoMTIpLCBBICYmIChlW0EgKyA0ID4+IDJdID0gciwgZVtBID4+IDJdID0gMTA4LCByID0gWCAtIDQ4IHwgMCwgWCA9IHIsIGYgPSByICsgNCB8IDAsIGQyKGYsIDAsIDQ0KSwgZiA9IEYyKGsgKyA0IHwgMCwgZiwgNDQpLCBlW2YgPj4gMl0gPSBlWzEyMzg2XSwgZVtmICsgNCA+PiAyXSA9IGVbMTIzODddLCBYID0gciArIDQ4IHwgMCwgZVtrICsgMTYgPj4gMl0gPSAwLCBSKEEpKSwgQSA9IGVbaSA+PiAyXSwgZVtBICsgNCA+PiAyXSA9IDAsIHIgPSBlW0EgKyAxMiA+PiAyXSwgciAmJiAoUihyKSwgQSA9IGVbaSA+PiAyXSksIEEgPSBlW0EgKyAxNiA+PiAyXSwgIUEpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICBSKEEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgNCA+PiAyXSA9IDAsIGVbaSArIDMyID4+IDJdIDwgZVtpICsgNCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBlW2kgKyAzMiA+PiAyXSA8IGVbaSArIDQgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIGlmICghKGVbaSArIDE2ID4+IDJdICE9IDIgJiAtMikpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZ3IoaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBrICsgNDggfCAwLCBpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGs2KEEsIGksIHIpIHsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPT0gOCkgewogICAgICAgICAgICAgICAgICAgIGkgPSB2MShyKTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChmID0gMjgsIGkgJiAzIHwgaSA+Pj4gMCA8IDQgfHwgKHQgPSBpID4+PiAyIHwgMCwgdCAtIDEgJiB0KSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBpZiAoLTY0IC0gaSA+Pj4gMCA8IHIgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ4OwogICAgICAgICAgICAgICAgICB0ID0gMTYsIGkgPSBpID4+PiAwIDw9IDE2ID8gMTYgOiBpLCBmID0gaSA+Pj4gMCA8PSAxNiA/IDE2IDogaTsKICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgIGlmICghKGYgLSAxICYgZikpIHsKICAgICAgICAgICAgICAgICAgICAgIGkgPSBmOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPSB0LCB0ID0gaSA8PCAxLCBpID4+PiAwIDwgZiA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoLTY0IC0gaSA+Pj4gMCA8PSByID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBlWzEyNDg1XSA9IDQ4LCByID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gciA+Pj4gMCA8IDExID8gMTYgOiByICsgMTEgJiAtOCwgayA9IHYxKCh0ICsgaSB8IDApICsgMTIgfCAwKSwgciA9IDAsICFrKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICByID0gayAtIDggfCAwOwogICAgICAgICAgICAgICAgICAgIGs6IHsKICAgICAgICAgICAgICAgICAgICAgIGlmICghKGsgJiBpIC0gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGsgLSA0IHwgMCwgbCA9IGVbbiA+PiAyXSwgZiA9IGksIGkgPSAoKGkgKyBrIHwgMCkgLSAxICYgMCAtIGkpIC0gOCB8IDAsIGkgPSAoaSAtIHIgPj4+IDAgPD0gMTUgPyBmIDogMCkgKyBpIHwgMCwgZiA9IGkgLSByIHwgMCwgayA9IChsICYgLTgpIC0gZiB8IDAsICEobCAmIDMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW3IgPj4gMl0sIGVbaSArIDQgPj4gMl0gPSBrLCBlW2kgPj4gMl0gPSByICsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVbaSArIDQgPj4gMl0gPSBrIHwgZVtpICsgNCA+PiAyXSAmIDEgfCAyLCBrID0gaSArIGsgfCAwLCBlW2sgKyA0ID4+IDJdID0gZVtrICsgNCA+PiAyXSB8IDEsIGVbbiA+PiAyXSA9IGYgfCBlW24gPj4gMl0gJiAxIHwgMiwgayA9IHIgKyBmIHwgMCwgZVtrICsgNCA+PiAyXSA9IGVbayArIDQgPj4gMl0gfCAxLCB1aShyLCBmKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgciA9IGVbaSArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKCEociAmIDMpIHx8IChmID0gciAmIC04LCBmID4+PiAwIDw9IHQgKyAxNiA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBlW2kgKyA0ID4+IDJdID0gdCB8IHIgJiAxIHwgMiwgciA9IGkgKyB0IHwgMCwgdCA9IGYgLSB0IHwgMCwgZVtyICsgNCA+PiAyXSA9IHQgfCAzLCBmID0gaSArIGYgfCAwLCBlW2YgKyA0ID4+IDJdID0gZVtmICsgNCA+PiAyXSB8IDEsIHVpKHIsIHQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByID0gaSArIDggfCAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGkgPSByOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICByZXR1cm4gNDg7CiAgICAgICAgICAgICAgICBlW0EgPj4gMl0gPSBpLCBmID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24geWsoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDA7CiAgICAgICAgICAgICAgaWYgKCFjMChlW2kgKyA4ID4+IDJdLCAxODQsIGYpKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgYSA9IGVbaSArIDQgPj4gMl0sIGsgPSBlW2EgPj4gMl0sIG4gPSBlW2EgKyA4ID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChrKSB7CiAgICAgICAgICAgICAgICAgIGlmICh0ID0gMSwgbyA9IGsgJiAxLCAoayB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZvciAoayA9IGsgJiAtMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQgfHwgKGwgPSAwLCAhKG8yW2VbbiA+PiAyXV0oaSwgQSwgZikgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IChvMltlW24gKyA0ID4+IDJdXShpLCBBLCBmKSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGwsIG4gPSBuICsgOCB8IDAsIHUgPSB1ICsgMiB8IDAsIChrIHwgMCkgPT0gKHUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGsgPSAhdDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAodCA9IG8gPyAwIDogdCwgayB8ICFvIHx8ICh0ID0gKG8yW2VbbiA+PiAyXV0oaSwgQSwgZikgfCAwKSAhPSAwKSwgZVthID4+IDJdID0gMCwgdCkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVbYSA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGEgPSBlW2kgKyA4ID4+IDJdLCBrID0gZVthID4+IDJdLCBuID0gZVthICsgOCA+PiAyXTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoaykgewogICAgICAgICAgICAgICAgICBpZiAodCA9IDEsIG8gPSBrICYgMSwgKGsgfCAwKSA9PSAxKQogICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGsgPSBrICYgLTIsIHUgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCB8fCAobCA9IDAsICEobzJbZVtuID4+IDJdXShpLCBBLCBmKSB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBsID0gKG8yW2VbbiArIDQgPj4gMl1dKGksIEEsIGYpIHwgMCkgIT0gMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gbCwgbiA9IG4gKyA4IHwgMCwgdSA9IHUgKyAyIHwgMCwgKGsgfCAwKSA9PSAodSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgayA9ICF0OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICh0ID0gbyA/IDAgOiB0LCBrIHwgIW8gfHwgKHQgPSAobzJbZVtuID4+IDJdXShpLCBBLCBmKSB8IDApICE9IDApLCBlW2EgPj4gMl0gPSAwLCB0KQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVthID4+IDJdID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIElbaSArIDEzMiB8IDBdID8gSVtpICsgMTMzIHwgMF0gPyBqNChBLCBlW2kgPj4gMl0sIHIsIGYpIHwgMCA6IChRKGYsIDEsIDIyNzI2LCAwKSwgMCkgOiAoUShmLCAxLCAyMjc1NSwgMCksIDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHBrKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwOwogICAgICAgICAgICAgIG4gPSBYIC0gMTYgfCAwLCBYID0gbjsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8PSAxKSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjUzMiwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKEZbQSArIDE4OCB8IDBdICYgMSkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDI0MDIzLCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBBID0gZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCwgRltBICsgNTY0MCB8IDBdID0gSVtBICsgNTY0MCB8IDBdIHwgMiwgaDIoaSwgbiArIDEyIHwgMCwgMSksIGsgPSBlW0EgKyA1MTY0ID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIWspIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGVbbiArIDEyID4+IDJdICsgMSB8IDAsIGsgPSBFMih0LCA4KSwgZVtBICsgNTE2NCA+PiAyXSA9IGssICFrKSB7CiAgICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDY1NTgsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVbQSArIDUxNjAgPj4gMl0gPSB0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW24gKyAxMiA+PiAyXSwgdCA+Pj4gMCA8IGRbQSArIDUxNjAgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgaWYgKGwgPSBrLCBrID0gdCArIDEgfCAwLCB0ID0gbzAobCwgayA8PCAzKSwgIXQpIHsKICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDY1NTgsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbQSArIDUxNjQgPj4gMl0gPSB0LCBsID0gZVtBICsgNTE2MCA+PiAyXSwgZDIodCArIChsIDw8IDMpIHwgMCwgMCwgayAtIGwgPDwgMyksIGVbQSArIDUxNjAgPj4gMl0gPSBrLCBrID0gZVtBICsgNTE2NCA+PiAyXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsID0gaywgayA9IGVbbiArIDEyID4+IDJdLCBlW2wgKyAoayA8PCAzKSA+PiAyXSkgewogICAgICAgICAgICAgICAgICBlW24gPj4gMl0gPSBrLCBRKGYsIDEsIDE2NjY2LCBuKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAxIHwgMCwgayA9IFUyKHIpLCBBID0gZVtBICsgNTE2NCA+PiAyXSwgdCA9IGVbbiArIDEyID4+IDJdLCBlW0EgKyAodCA8PCAzKSA+PiAyXSA9IGssICFrKSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjU1OCwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVsoQSArICh0IDw8IDMpIHwgMCkgKyA0ID4+IDJdID0gciwgRjIoZVtBICsgKGVbbiArIDEyID4+IDJdIDw8IDMpID4+IDJdLCBpICsgMSB8IDAsIHIpLCBBID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBuICsgMTYgfCAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBRayhBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwOwogICAgICAgICAgICAgIG4gPSBYIC0gMTYgfCAwLCBYID0gbiwgYSA9IGVbZVtBICsgNzIgPj4gMl0gKyAxNiA+PiAyXSwgbCA9IGEgPj4+IDAgPCAyNTcgPyAxIDogMiwgayA9IChsIDw8IDEpICsgNSB8IDAsIHQgPSAociA+Pj4gMCkgLyAoayA+Pj4gMCkgfCAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghKChaKGssIHQpIHwgMCkgPT0gKHIgfCAwKSAmIHIgPj4+IDAgPj0gayA+Pj4gMCkpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCA3NzAzLCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtBICsgOCA+PiAyXSA9PSAxNiA/IGsgPSBlW0EgKyAxNTYgPj4gMl0gKyBaKGVbQSArIDIwNCA+PiAyXSwgNTY0NCkgfCAwIDogayA9IGVbQSArIDEyID4+IDJdLCBBID0gMCwgciA9IElbayArIDU2NDAgfCAwXSwgQSA9IHIgJiA0ID8gZVtrICsgNDIwID4+IDJdICsgMSB8IDAgOiBBLCB0ID0gdCArIEEgfCAwLCB0ID4+PiAwID49IDMyKSB7CiAgICAgICAgICAgICAgICAgIGVbbiA+PiAyXSA9IHQsIFEoZiwgMSwgMTc0MzYsIG4pLCBBID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChGW2sgKyA1NjQwIHwgMF0gPSByIHwgNCwgQSA+Pj4gMCA8IHQgPj4+IDApCiAgICAgICAgICAgICAgICAgIGZvciAociA9IChrICsgWihBLCAxNDgpIHwgMCkgKyA0MjQgfCAwOyBoMihpLCByLCAxKSwgaSA9IGkgKyAxIHwgMCwgaDIoaSwgciArIDQgfCAwLCBsKSwgaSA9IGkgKyBsIHwgMCwgaDIoaSwgciArIDggfCAwLCAyKSwgZiA9IGVbciArIDggPj4gMl0sIHUgPSBlW2sgKyA4ID4+IDJdLCBlW3IgKyA4ID4+IDJdID0gZiA+Pj4gMCA8IHUgPj4+IDAgPyBmIDogdSwgaDIoaSArIDIgfCAwLCByICsgMTIgfCAwLCAxKSwgaSA9IGkgKyAzIHwgMCwgaDIoaSwgciArIDE2IHwgMCwgbCksIGkgPSBpICsgbCB8IDAsIGgyKGksIG4gKyAxMiB8IDAsIDEpLCBlW3IgKyAzNiA+PiAyXSA9IGVbbiArIDEyID4+IDJdLCBmID0gZVtyICsgMTYgPj4gMl0sIGVbciArIDE2ID4+IDJdID0gZiA+Pj4gMCA8IGEgPj4+IDAgPyBmIDogYSwgciA9IHIgKyAxNDggfCAwLCBpID0gaSArIDEgfCAwLCBBID0gQSArIDEgfCAwLCAodCB8IDApICE9IChBIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBlW2sgKyA0MjAgPj4gMl0gPSB0IC0gMSwgQSA9IDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gbiArIDE2IHwgMCwgQSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdmkoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIUEpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDUxNjQgPj4gMl0sIGkpIHsKICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW0EgKyA1MTYwID4+IDJdLCByKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgZiA9IGVbZVtBICsgNTE2NCA+PiAyXSArIChpIDw8IDMpID4+IDJdLCBmICYmIChSKGYpLCByID0gZVtBICsgNTE2MCA+PiAyXSksIGkgPSBpICsgMSB8IDAsIHIgPj4+IDAgPiBpID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDUxNjQgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVtBICsgNTE2MCA+PiAyXSA9IDAsIFIoaSksIGVbQSArIDUxNjQgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyA1MTcyID4+IDJdLCBpICYmIChSKGkpLCBlW0EgKyA1MTcyID4+IDJdID0gMCksIGkgPSBlW0EgKyA1NTg0ID4+IDJdLCBpICYmIChSKGkpLCBlW0EgKyA1NTg0ID4+IDJdID0gMCksIGkgPSBlW0EgKyA1NjEyID4+IDJdLCBpICYmIChSKGkpLCBlW0EgKyA1NjEyID4+IDJdID0gMCksIGkgPSBlW0EgKyA1NjA4ID4+IDJdLCBpICYmIChSKGkpLCBlW0EgKyA1NjA4ID4+IDJdID0gMCksIGkgPSBlW0EgKyA1NjI4ID4+IDJdLCBpICYmIChSKGkpLCBlW0EgKyA1NjM2ID4+IDJdID0gMCwgZVtBICsgNTYyOCA+PiAyXSA9IDAsIGVbQSArIDU2MzIgPj4gMl0gPSAwKSwgaSA9IGVbQSArIDU2MTYgPj4gMl0sIGkpIHsKICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyA1NjIwID4+IDJdLCBrKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gMDsgZiA9IGVbaSArIDEyID4+IDJdLCBmICYmIChSKGYpLCBlW2kgKyAxMiA+PiAyXSA9IDAsIGsgPSBlW0EgKyA1NjIwID4+IDJdKSwgaSA9IGkgKyAyMCB8IDAsIHIgPSByICsgMSB8IDAsIGsgPj4+IDAgPiByID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDU2MTYgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgUihpKSwgZVtBICsgNTYxNiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDU2MDQgPj4gMl0sIGkgJiYgKFIoaSksIGVbQSArIDU2MDQgPj4gMl0gPSAwKSwgaSA9IGVbQSArIDU1OTYgPj4gMl0sICFpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgUihpKSwgZVtBICsgNTU5NiA+PiAyXSA9IDAsIGVbQSArIDU2MDAgPj4gMl0gPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBWayhBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDA7CiAgICAgICAgICAgICAgdmFyIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDA7CiAgICAgICAgICAgICAgaWYgKGYgPSBYIC0gMTYgfCAwLCBYID0gZiwgIUlbNDk5MzJdKSB7CiAgICAgICAgICAgICAgICBpZiAoRls0OTkzMl0gPSAxLCBuID0gNDk4NzIsIGwgPSB4QSgxMDgzKSB8IDAsIGVbbiA+PiAyXSA9IGwsIGVbMTI0NjddID0gNTA2NTYsICFJWzUyMzMyXSkgewogICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IHIgKyA1MDAxNiB8IDAsICFJW2sgfCAwXSkgewogICAgICAgICAgICAgICAgICAgICAgICBGW2sgfCAwXSA9IDEsIGVbKHIgPDwgMikgKyA1MDE0NCA+PiAyXSA9IDAsIGVbMTMwODRdID0gciwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgKyAxIHwgMCwgKHIgfCAwKSA9PSAxMjgpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByID0gNjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByICYmIChaZigpLCBVMCgpKSwgRls1MjMzMl0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICBpZiAoIUlbNTIzMzNdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSAyOCwgayA9IGVbMTMwODRdLCBrID4+PiAwID4gMTI3IHwgSVtrICsgNTAwMTYgfCAwXSAhPSAxIHx8IChlWyhrIDw8IDIpICsgNTAxNDQgPj4gMl0gPSA1MjMzNiwgciA9IDApLCByKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBGWzUyMzMzXSA9IDE7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHIgPSB2MSgxMiksICFyKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGVbciArIDQgPj4gMl0gPSAwLCBlW3IgPj4gMl0gPSAyLCBlW3IgKyA4ID4+IDJdID0gZVsxMzA4NV0sIGVbMTMwODVdID0gcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgciA9IGVbaSArIDE2ID4+IDJdLCBpID0gZVtpICsgMTIgPj4gMl0sIGVbZiArIDEyID4+IDJdID0gaSwgZVtmICsgOCA+PiAyXSA9IHIgLSBpLCBlW2YgKyA0ID4+IDJdID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoRls0OTkyOF0gJiAxKSB7CiAgICAgICAgICAgICAgICAgIGkgPSBlWzEyNDgxXTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGkgPSBOQSgyLCAzMDA0MCwgMSkgfCAwLCBGWzQ5OTI4XSA9IDEsIGVbMTI0ODFdID0gaTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdCA9ICtTQShpIHwgMCwgZVsxMjQ2OF0sIGYgKyA0IHwgMCwgZiArIDggfCAwKTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAodCA8IDQyOTQ5NjcyOTYgJiB0ID49IDApIHsKICAgICAgICAgICAgICAgICAgaSA9IH5+dCA+Pj4gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByID0gZVtmICsgNCA+PiAyXSwgZVtBICsgNCA+PiAyXSA9IGksIGVbQSA+PiAyXSA9IDUwNjU2LCByICYmIE1BKHIgfCAwKSwgWCA9IGYgKyAxNiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gbjYoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMDsKICAgICAgICAgICAgICBpZiAoYSA9IFoociwgNTY0NCkgKyBpIHwgMCwgbCA9IGVbYSArIDQyMCA+PiAyXSwgaSA9IGwgKyAxIHwgMCwgbiA9IEUyKGksIDI0MCksIG4pIHsKICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gZVtBICsgMTYgPj4gMl0sIGsgPSBuOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbayArIDIzNiA+PiAyXSA9IGYsIGkgPSBFMihpLCAxNiksIGVbayArIDIwMCA+PiAyXSA9IGksICFpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW0EgKyAxNiA+PiAyXSwgZVtrICsgMTk2ID4+IDJdID0gdCwgciA9IDAsIGkgPSAwLCB0KQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IGVbayArIDIwMCA+PiAyXSArIChyIDw8IDQpIHwgMCwgdCA9IGVbYSArIDU1ODQgPj4gMl0gKyBaKHIsIDEwODApIHwgMCwgaSA9IEUyKGVbdCArIDQgPj4gMl0sIDE2KSwgZVt1ICsgMTIgPj4gMl0gPSBpLCAhaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbdSArIDggPj4gMl0gPSBlW3QgKyA0ID4+IDJdLCBpID0gZVtBICsgMTYgPj4gMl0sIHIgPSByICsgMSB8IDAsICEoaSA+Pj4gMCA+IHIgPj4+IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gayArIDI0MCB8IDAsIHIgPSAobCB8IDApID09IChvIHwgMCksIG8gPSBvICsgMSB8IDAsICEhcikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoQSA9IGVbbiArIDQgPj4gMl0sIEEgJiYgKFIoQSksIGVbbiArIDQgPj4gMl0gPSAwKSwgayA9IG4sIEEgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICBpZiAociA9IGVbayArIDIwMCA+PiAyXSwgcikgewogICAgICAgICAgICAgICAgICAgIGlmIChpID0gMCwgdCA9IGVbayArIDE5NiA+PiAyXSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGYgPSBlW3IgKyAxMiA+PiAyXSwgZiAmJiAoUihmKSwgZVtyICsgMTIgPj4gMl0gPSAwLCB0ID0gZVtrICsgMTk2ID4+IDJdKSwgciA9IHIgKyAxNiB8IDAsIGkgPSBpICsgMSB8IDAsIHQgPj4+IDAgPiBpID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgIHIgPSBlW2sgKyAyMDAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIFIociksIGVbayArIDIwMCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGsgPSBrICsgMjQwIHwgMCwgaSA9IChBIHwgMCkgPT0gKGwgfCAwKSwgQSA9IEEgKyAxIHwgMCwgISFpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgUihuKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gWWsoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBrID0gWCAtIDMyIHwgMCwgWCA9IGs7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGVbQSArIDcyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMiwgMTY2MTgsIDApLCByID0gMTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgociB8IDApICE9IDE0KSB7CiAgICAgICAgICAgICAgICAgIHIgPSAwLCBRKGYsIDEsIDI1OTg2LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGgyKGksIEEgKyAxNiB8IDAsIDQpLCBoMihpICsgNCB8IDAsIEEgKyAxMiB8IDAsIDQpLCBoMihpICsgOCB8IDAsIEEgKyAyMCB8IDAsIDIpLCB0ID0gZVtBICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIG4gPSBlW0EgKyAxNiA+PiAyXSwgciA9IGVbQSArIDIwID4+IDJdOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuIHx8IChyID0gZVtBICsgMjAgPj4gMl0sICF0KSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbayArIDggPj4gMl0gPSByLCBlW2sgKyA0ID4+IDJdID0gbiwgZVtrID4+IDJdID0gdCwgUShmLCAxLCAyNTY0NCwgayksIHIgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHIgLSAxNjM4NSA+Pj4gMCA8PSA0Mjk0OTUwOTExKSB7CiAgICAgICAgICAgICAgICAgIHIgPSAwLCBRKGYsIDEsIDI1NTU4LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyID0gRTIociwgMTIpLCBlW0EgKyA3MiA+PiAyXSA9IHIsICFyKSB7CiAgICAgICAgICAgICAgICAgIHIgPSAwLCBRKGYsIDEsIDI1NTk1LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIgPSAxLCBoMihpICsgMTAgfCAwLCBBICsgMjQgfCAwLCAxKSwgaDIoaSArIDExIHwgMCwgQSArIDI4IHwgMCwgMSksIHQgPSBlW0EgKyAyOCA+PiAyXSwgKHQgfCAwKSAhPSA3ICYmIChlW2sgKyAxNiA+PiAyXSA9IHQsIFEoZiwgNCwgMjg2MjIsIGsgKyAxNiB8IDApKSwgaDIoaSArIDEyIHwgMCwgQSArIDMyIHwgMCwgMSksIGgyKGkgKyAxMyB8IDAsIEEgKyAzNiB8IDAsIDEpLCBpID0gZVtBID4+IDJdLCBGW2kgKyAxODggfCAwXSA9IElbaSArIDE4OCB8IDBdICYgMjUxIHwgKGVbQSArIDI0ID4+IDJdID09IDI1NSkgPDwgMiwgaSA9IGVbQSA+PiAyXSwgZVtpICsgMjE2ID4+IDJdID0gZVtBICsgMTIgPj4gMl0sIGVbaSArIDIyMCA+PiAyXSA9IGVbQSArIDE2ID4+IDJdLCBGW0EgKyAxMzMgfCAwXSA9IDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gayArIDMyIHwgMCwgciB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gSGsoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwOwogICAgICAgICAgICAgIHQgPSBYIC0gMzIgfCAwLCBYID0gdCwgZiA9IGVbQSArIDI4ID4+IDJdLCBlW3QgKyAxNiA+PiAyXSA9IGYsIG4gPSBlW0EgKyAyMCA+PiAyXSwgZVt0ICsgMjggPj4gMl0gPSByLCBlW3QgKyAyNCA+PiAyXSA9IGksIGkgPSBuIC0gZiB8IDAsIGVbdCArIDIwID4+IDJdID0gaSwgbiA9IGkgKyByIHwgMCwgYSA9IDI7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpID0gdCArIDE2IHwgMCwgZiA9IEI0KGVbQSArIDYwID4+IDJdLCBpIHwgMCwgMiwgdCArIDEyIHwgMCkgfCAwLCBmID8gKGVbMTI0ODVdID0gZiwgZiA9IC0xKSA6IGYgPSAwOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSBlW3QgKyAxMiA+PiAyXSwgKGsgfCAwKSA9PSAobiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoayB8IDApIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBlW2kgKyA0ID4+IDJdLCB1ID0gbCA+Pj4gMCA8IGsgPj4+IDAsIGYgPSAodSA8PCAzKSArIGkgfCAwLCBsID0gayAtICh1ID8gbCA6IDApIHwgMCwgZVtmID4+IDJdID0gbCArIGVbZiA+PiAyXSwgaSA9ICh1ID8gMTIgOiA0KSArIGkgfCAwLCBlW2kgPj4gMl0gPSBlW2kgPj4gMl0gLSBsLCBuID0gbiAtIGsgfCAwLCBpID0gZiwgYSA9IGEgLSB1IHwgMCwgayA9IEI0KGVbQSArIDYwID4+IDJdLCBpIHwgMCwgYSB8IDAsIHQgKyAxMiB8IDApIHwgMCwgayA/IChlWzEyNDg1XSA9IGssIGsgPSAtMSkgOiBrID0gMCwgISFrKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKG4gfCAwKSAhPSAtMSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDQ0ID4+IDJdLCBlW0EgKyAyOCA+PiAyXSA9IGksIGVbQSArIDIwID4+IDJdID0gaSwgZVtBICsgMTYgPj4gMl0gPSBpICsgZVtBICsgNDggPj4gMl0sIEEgPSByOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbQSArIDI4ID4+IDJdID0gMCwgZVtBICsgMTYgPj4gMl0gPSAwLCBlW0EgKyAyMCA+PiAyXSA9IDAsIGVbQSA+PiAyXSA9IGVbQSA+PiAyXSB8IDMyLCBBID0gMCwgKGEgfCAwKSA9PSAyKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgQSA9IHIgLSBlW2YgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSB0ICsgMzIgfCAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBMMChBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChJW0EgKyA2OCB8IDBdICYgOCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAobCA9IGVbQSArIDY0ID4+IDJdLCBuID0gZVtBICsgNDggPj4gMl0sIGsgPSBsIC0gbiB8IDAsIGsgPj4+IDAgPj0gciA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgIHQgPSBlW0EgKyAzNiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApICE9IChsIHwgMCkgJiYgKEYyKGVbQSArIDM2ID4+IDJdLCBpLCBrKSwgbiA9IGVbQSArIDQ4ID4+IDJdICsgayB8IDAsIGVbQSArIDQ4ID4+IDJdID0gbiwgdCA9IGVbQSArIDYwID4+IDJdLCBsID0gZVtBICsgNTYgPj4gMl0gKyBrIHwgMCwgdCA9IGwgPj4+IDAgPCBrID4+PiAwID8gdCArIDEgfCAwIDogdCwgZVtBICsgNTYgPj4gMl0gPSBsLCBlW0EgKyA2MCA+PiAyXSA9IHQsIHIgPSByIC0gayB8IDAsIGEgPSBrICsgYSB8IDAsIGkgPSBpICsgayB8IDApLCB0ID0gZVtBICsgMzIgPj4gMl0sIGVbQSArIDM2ID4+IDJdID0gdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gbzJbZVtBICsgMjAgPj4gMl1dKHQsIG4sIGVbQSA+PiAyXSkgfCAwLCAoayB8IDApID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZVtBICsgNjggPj4gMl0gPSBlW0EgKyA2OCA+PiAyXSB8IDgsIFEoZiwgNCwgMjc1OTksIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBrICsgZVtBICsgMzYgPj4gMl0gfCAwLCBlW0EgKyAzNiA+PiAyXSA9IHQsIG4gPSBlW0EgKyA0OCA+PiAyXSAtIGsgfCAwLCBlW0EgKyA0OCA+PiAyXSA9IG4sICFuKQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgdCA9IGVbQSArIDMyID4+IDJdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMzYgPj4gMl0gPSB0LCBuID0gMCwgayA9IGVbQSArIDY0ID4+IDJdLCBsID0gaywgIShyID4+PiAwID4gayA+Pj4gMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gRjIodCwgaSwgciksIGVbQSArIDM2ID4+IDJdID0gZVtBICsgMzYgPj4gMl0gKyByLCBlW0EgKyA0OCA+PiAyXSA9IGVbQSArIDQ4ID4+IDJdICsgciwgaSA9IGVbQSArIDYwID4+IDJdLCBmID0gZVtBICsgNTYgPj4gMl0gKyByIHwgMCwgaSA9IGYgPj4+IDAgPCByID4+PiAwID8gaSArIDEgfCAwIDogaSwgZVtBICsgNTYgPj4gMl0gPSBmLCBlW0EgKyA2MCA+PiAyXSA9IGksIHIgKyBhIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB0NigpIHsKICAgICAgICAgICAgICBVQSg0ODkxMiwgMjE2MyksIERBKDQ4OTM2LCAxNzc3LCAxLCAwKSwgZDEoNDg5NDgsIDE2NDEsIDEsIC0xMjgsIDEyNyksIGQxKDQ4OTcyLCAxNjM0LCAxLCAtMTI4LCAxMjcpLCBkMSg0ODk2MCwgMTYzMiwgMSwgMCwgMjU1KSwgZDEoNDg5ODQsIDExMzksIDIsIC0zMjc2OCwgMzI3NjcpLCBkMSg0ODk5NiwgMTEzMCwgMiwgMCwgNjU1MzUpLCBkMSg0OTAwOCwgMTE3NSwgNCwgLTIxNDc0ODM2NDgsIDIxNDc0ODM2NDcpLCBkMSg0OTAyMCwgMTE2NiwgNCwgMCwgLTEpLCBkMSg0OTAzMiwgMTk1MywgNCwgLTIxNDc0ODM2NDgsIDIxNDc0ODM2NDcpLCBkMSg0OTA0NCwgMTk0NCwgNCwgMCwgLTEpLCBzZig0OTA1NiwgMTI2MywgLTIxNDc0ODM2NDgsIDIxNDc0ODM2NDcpLCBzZig0OTA2OCwgMTI2MiwgMCwgLTEpLCB2NCg0OTA4MCwgMTI1NiwgNCksIHY0KDQ5MDkyLCAyMDgyLCA4KSwgRUEoMjk3MDQsIDE5ODQpLCBpcigyODk5NiwgNCwgMTk1OCksIGlyKDI5MDY4LCAyLCAxOTk2KSwgaXIoMjkxNDQsIDQsIDIwMTEpLCBSQSgyOTk1NiksIGUxKDI5MjIwLCAwLCAyOTU5KSwgZTEoMjkyNjAsIDAsIDMwMjgpLCBlMSgyOTk4OCwgMSwgMjk4OSksIGUxKDI5MzAwLCAyLCAyNTI0KSwgZTEoMjkzNDAsIDMsIDI1NTUpLCBlMSgyOTM4MCwgNCwgMjU5NSksIGUxKDI5NDIwLCA1LCAyNjI0KSwgZTEoMjk0NjAsIDQsIDMwNjUpLCBlMSgyOTUwMCwgNSwgMzA5NSksIGUxKDI5MjYwLCAwLCAyNzI2KSwgZTEoMjk5ODgsIDEsIDI2OTMpLCBlMSgyOTMwMCwgMiwgMjc5MiksIGUxKDI5MzQwLCAzLCAyNzU4KSwgZTEoMjkzODAsIDQsIDI5MjYpLCBlMSgyOTQyMCwgNSwgMjg5MiksIGUxKDI5NTQwLCA4LCAyODU5KSwgZTEoMjk1ODAsIDksIDI4MjUpLCBlMSgyOTYyMCwgNiwgMjY2MiksIGUxKDI5NjYwLCA3LCAzMTM0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBYayhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwOwogICAgICAgICAgICAgIGlmIChmID0gZVtBICsgNTIgPj4gMl0sIGsgPSBlW0EgKyA3MiA+PiAyXSwgdCA9IGVbayArIDI0ID4+IDJdLCBuID0gWihlW2sgKyAxNiA+PiAyXSwgMyksIGwgPSBuICsgNDAgfCAwLCBsID4+PiAwID4gZFtBICsgNTYgPj4gMl0pIHsKICAgICAgICAgICAgICAgIGlmIChmID0gbzAoZiwgbCksICFmKQogICAgICAgICAgICAgICAgICByZXR1cm4gUihlW0EgKyA1MiA+PiAyXSksIGVbQSArIDUyID4+IDJdID0gMCwgZVtBICsgNTYgPj4gMl0gPSAwLCBRKHIsIDEsIDY0NDYsIDApLCAwOwogICAgICAgICAgICAgICAgZVtBICsgNTYgPj4gMl0gPSBsLCBlW0EgKyA1MiA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChrMihmLCA2NTM2MSwgMiksIGsyKGYgKyAyIHwgMCwgbiArIDM4IHwgMCwgMiksIGsyKGYgKyA0IHwgMCwgRzJbQSArIDgwID4+IDFdLCAyKSwgazIoZiArIDYgfCAwLCBlW2sgKyA4ID4+IDJdLCA0KSwgazIoZiArIDEwIHwgMCwgZVtrICsgMTIgPj4gMl0sIDQpLCBrMihmICsgMTQgfCAwLCBlW2sgPj4gMl0sIDQpLCBrMihmICsgMTggfCAwLCBlW2sgKyA0ID4+IDJdLCA0KSwgazIoZiArIDIyIHwgMCwgZVtBICsgOTIgPj4gMl0sIDQpLCBrMihmICsgMjYgfCAwLCBlW0EgKyA5NiA+PiAyXSwgNCksIGsyKGYgKyAzMCB8IDAsIGVbQSArIDg0ID4+IDJdLCA0KSwgazIoZiArIDM0IHwgMCwgZVtBICsgODggPj4gMl0sIDQpLCBrMihmICsgMzggfCAwLCBlW2sgKyAxNiA+PiAyXSwgMiksIGVbayArIDE2ID4+IDJdKQogICAgICAgICAgICAgICAgZm9yIChmID0gZiArIDQwIHwgMCwgbiA9IDA7IGsyKGYsIChlW3QgKyAyNCA+PiAyXSArIChlW3QgKyAzMiA+PiAyXSA8PCA3KSB8IDApIC0gMSB8IDAsIDEpLCBrMihmICsgMSB8IDAsIGVbdCA+PiAyXSwgMSksIGsyKGYgKyAyIHwgMCwgZVt0ICsgNCA+PiAyXSwgMSksIHQgPSB0ICsgNTIgfCAwLCBmID0gZiArIDMgfCAwLCBuID0gbiArIDEgfCAwLCBuID4+PiAwIDwgZFtrICsgMTYgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIHJldHVybiAoTDAoaSwgZVtBICsgNTIgPj4gMl0sIGwsIHIpIHwgMCkgPT0gKGwgfCAwKSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gbDYoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIGU6CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGkgLSA5IHwgMCkgewogICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgaSA9IGVbciA+PiAyXSwgZVtyID4+IDJdID0gaSArIDQsIGVbQSA+PiAyXSA9IGVbaSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICBpID0gZVtyID4+IDJdLCBlW3IgPj4gMl0gPSBpICsgNCwgaSA9IHUyW2kgPj4gMV0sIGVbQSA+PiAyXSA9IGksIGVbQSArIDQgPj4gMl0gPSBpID4+IDMxOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgICAgIGkgPSBlW3IgPj4gMl0sIGVbciA+PiAyXSA9IGkgKyA0LCBlW0EgPj4gMl0gPSBHMltpID4+IDFdLCBlW0EgKyA0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICBpID0gZVtyID4+IDJdLCBlW3IgPj4gMl0gPSBpICsgNCwgaSA9IEZbaSB8IDBdLCBlW0EgPj4gMl0gPSBpLCBlW0EgKyA0ID4+IDJdID0gaSA+PiAzMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICBpID0gZVtyID4+IDJdLCBlW3IgPj4gMl0gPSBpICsgNCwgZVtBID4+IDJdID0gSVtpIHwgMF0sIGVbQSArIDQgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICAgICAgICBpID0gZVtyID4+IDJdICsgNyAmIC04LCBlW3IgPj4gMl0gPSBpICsgOCwgUTJbQSA+PiAzXSA9IFEyW2kgPj4gM107CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICBjYXNlIDE3OgogICAgICAgICAgICAgICAgICAgIG8yW2YgfCAwXShBLCByKTsKICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgICAgIGkgPSBlW3IgPj4gMl0sIGVbciA+PiAyXSA9IGkgKyA0LCBpID0gZVtpID4+IDJdLCBlW0EgPj4gMl0gPSBpLCBlW0EgKyA0ID4+IDJdID0gaSA+PiAzMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgIGkgPSBlW3IgPj4gMl0sIGVbciA+PiAyXSA9IGkgKyA0LCBlW0EgPj4gMl0gPSBlW2kgPj4gMl0sIGVbQSArIDQgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaSA9IGVbciA+PiAyXSArIDcgJiAtOCwgZVtyID4+IDJdID0gaSArIDgsIHIgPSBlW2kgKyA0ID4+IDJdLCBlW0EgPj4gMl0gPSBlW2kgPj4gMl0sIGVbQSArIDQgPj4gMl0gPSByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGdyKEEpIHsKICAgICAgICAgICAgICB2YXIgaSA9IDAsIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBpZiAobiA9IFggLSAxNiB8IDAsIFggPSBuLCBBKSB7CiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgIGlmICghZVtBICsgOCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMTIgPj4gMl0gJiYgKGVbQSArIDQwID4+IDJdID0gMCwgZVtBICsgMjQgPj4gMl0gPiAwKSkKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZVtBICsgMjQgPj4gMl0gPiAwOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyAxNiA+PiAyXSA9IDEsIGVbQSArIDQgPj4gMl0gPiAwKQogICAgICAgICAgICAgICAgICAgIGZvciAoOyBmID0gWihpLCAyMCksIFIoZVsoZiArIGVbQSA+PiAyXSB8IDApICsgNCA+PiAyXSksIHIgPSBlW0EgPj4gMl0sIGsgPSBlWyhyICsgZiB8IDApICsgMTYgPj4gMl0sIGsgJiYgKFIoayksIHIgPSBlW0EgPj4gMl0pLCByID0gZVsociArIGYgfCAwKSArIDEyID4+IDJdLCByICYmIFIociksIGkgPSBpICsgMSB8IDAsIChpIHwgMCkgPCBlW0EgKyA0ID4+IDJdOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGlmIChSKGVbQSA+PiAyXSksIGkgPSBlW0EgKyAyOCA+PiAyXSwgaSkKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgciA9IGVbaSArIDQgPj4gMl0sIFIoaSksIGVbQSArIDI4ID4+IDJdID0gciwgaSA9IHIsICEhaTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDggPj4gMl0sICFpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIFIoaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDEyID4+IDJdLCBpICYmIFIoaSksIGkgPSBlW0EgKyAzNiA+PiAyXSwgaSkgewogICAgICAgICAgICAgICAgICBpZiAociA9IGVbaSArIDQgPj4gMl0sIChyIHwgMCkgPiAwKQogICAgICAgICAgICAgICAgICAgIGZvciAoOyBmID0gZVtpID4+IDJdICsgWih0LCAxMikgfCAwLCBrID0gZVtmICsgOCA+PiAyXSwgayAmJiAobzJbayB8IDBdKGVbZiArIDQgPj4gMl0pLCByID0gZVtpICsgNCA+PiAyXSksIHQgPSB0ICsgMSB8IDAsICh0IHwgMCkgPCAociB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIFIoZVtpID4+IDJdKSwgUihpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFIoQSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFggPSBuICsgMTYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGE2KEEsIGksIHIsIGYsIGssIHQpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDAsIGsgPSBrIHwgMCwgdCA9IHQgfCAwOwogICAgICAgICAgICAgIHZhciBuID0gMCwgbCA9IDAsIGEgPSAwOwogICAgICAgICAgICAgIGwgPSBYIC0gNDggfCAwLCBYID0gbDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMjA0ID4+IDJdICE9IChpIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgIFEodCwgMSwgMzI3MiwgMCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGVbQSArIDEwOCA+PiAyXSwgbiA9IGVbQSArIDEwNCA+PiAyXSwgZVtsICsgMzIgPj4gMl0gPSBpICsgMSwgZVtsICsgMzYgPj4gMl0gPSBaKG4sIGEpLCBRKHQsIDQsIDE3ODY3LCBsICsgMzIgfCAwKSwgYSA9IDAsIGVbQSArIDEyID4+IDJdID0gMCwgbiA9IGVbQSArIDIwOCA+PiAyXSwgZVtuICsgMTIgPj4gMl0gPSBlWyhlW0EgKyAxNTYgPj4gMl0gKyBaKGksIDU2NDQpIHwgMCkgKyA1NTkyID4+IDJdLCBlW0EgKyA4ID4+IDJdID0gMCwgIUFyKG4sIGVbQSArIDIwNCA+PiAyXSwgMSwgNTIsIHQpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGVbQSArIDIwOCA+PiAyXSwgIWVbZVtuICsgMjQgPj4gMl0gKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoSDYoZVtlW2VbbiArIDIwID4+IDJdID4+IDJdICsgMjAgPj4gMl0gKyBaKGEsIDc2KSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhICsgMSB8IDAsIG4gPSBlW0EgKyAyMDggPj4gMl0sIGEgPj4+IDAgPCBkW2VbbiArIDI0ID4+IDJdICsgMTYgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgUSh0LCAxLCAzMzU2LCAwKSwgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIVE0KG4sIHIsIGYpKSB7CiAgICAgICAgICAgICAgICAgICAgICBRKHQsIDEsIDMzMDksIDApLCByID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChyID0gMSwgTTQoQSwgaywgdCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGVbbCArIDE2ID4+IDJdID0gaSwgUSh0LCAxLCAxNzc1MiwgbCArIDE2IHwgMCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW2wgPj4gMl0gPSBpLCBRKHQsIDEsIDE3ODEwLCBsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGwgKyA0OCB8IDAsIHIgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHU2KEEsIGksIHIpIHsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICgoQSB8IDApID09IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoayA9IEEgKyByIHwgMCwgaSAtIGsgPj4+IDAgPD0gMCAtIChyIDw8IDEpID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgIEYyKEEsIGksIHIpOwogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmID0gKEEgXiBpKSAmIDM7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoQSA+Pj4gMCA8IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCEoQSAmIDMpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoRltBIHwgMF0gPSBJW2kgfCAwXSwgaSA9IGkgKyAxIHwgMCwgciA9IHIgLSAxIHwgMCwgQSA9IEEgKyAxIHwgMCwgIShBICYgMykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBrOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIGlmIChrICYgMykKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgLSAxIHwgMCwgZiA9IHIgKyBBIHwgMCwgRltmIHwgMF0gPSBJW2kgKyByIHwgMF0sICEoZiAmIDMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDw9IDMpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgciA9IHIgLSA0IHwgMCwgZVtyICsgQSA+PiAyXSA9IGVbaSArIHIgPj4gMl0sIHIgPj4+IDAgPiAzOyApCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgciA9IHIgLSAxIHwgMCwgRltyICsgQSB8IDBdID0gSVtpICsgciB8IDBdLCAhIXI7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDw9IDMpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZm9yICg7IGVbQSA+PiAyXSA9IGVbaSA+PiAyXSwgaSA9IGkgKyA0IHwgMCwgQSA9IEEgKyA0IHwgMCwgciA9IHIgLSA0IHwgMCwgciA+Pj4gMCA+IDM7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKDsgRltBIHwgMF0gPSBJW2kgfCAwXSwgQSA9IEEgKyAxIHwgMCwgaSA9IGkgKyAxIHwgMCwgciA9IHIgLSAxIHwgMCwgISFyOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gRmsoKSB7CiAgICAgICAgICAgICAgdmFyIEEgPSAwLCBpID0gMCwgciA9IDA7CiAgICAgICAgICAgICAgQSA9IFggLSAxNiB8IDAsIFggPSBBOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChYQShBICsgMTIgfCAwLCBBICsgOCB8IDApIHwgMCB8fCAoaSA9IHYxKChlW0EgKyAxMiA+PiAyXSA8PCAyKSArIDQgfCAwKSwgZVsxMjQ4Nl0gPSBpLCAhaSkgfHwgKGkgPSB2MShlW0EgKyA4ID4+IDJdKSwgaSAmJiAociA9IGVbMTI0ODZdLCBlW3IgKyAoZVtBICsgMTIgPj4gMl0gPDwgMikgPj4gMl0gPSAwLCAhKEhBKHIgfCAwLCBpIHwgMCkgfCAwKSkpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZVsxMjQ4Nl0gPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBYID0gQSArIDE2IHwgMCwgZVsxMjQ2NV0gPSAxLCBlWzEyNDY2XSA9IDAsIHQ2KCksIGVbMTI0NjZdID0gZVsxMjQ2NF0sIGVbMTI0NjRdID0gNDk4NjAsIGVbMTI0NjldID0gOTMsIGVbMTI0NzBdID0gMCwgYzQoMTc2MiwgMSwgMjk3MDAsIDI5Nzc1LCAzLCA0LCAwLCAwKSwgZVsxMjQ3MF0gPSBlWzEyNDY0XSwgZVsxMjQ2NF0gPSA0OTg3NiwgZVsxMjQ3MV0gPSA5NCwgZVsxMjQ3Ml0gPSAwLCBaNigpLCBlWzEyNDcyXSA9IGVbMTI0NjRdLCBlWzEyNDY0XSA9IDQ5ODg0LCBlWzEyNDczXSA9IDk1LCBlWzEyNDc0XSA9IDAsIFU2KCksIGVbMTI0NzRdID0gZVsxMjQ2NF0sIGVbMTI0NjRdID0gNDk4OTIsIGVbMTI0NzVdID0gOTYsIGVbMTI0NzZdID0gMCwgTTYoKSwgZVsxMjQ3Nl0gPSBlWzEyNDY0XSwgZVsxMjQ2NF0gPSA0OTkwMCwgZVsxMjQ3N10gPSA5NywgZVsxMjQ3OF0gPSAwLCBiNCgpLCBlWzEyNDc4XSA9IGVbMTI0NjRdLCBlWzEyNDY0XSA9IDQ5OTA4LCBlWzEyNDc5XSA9IDk4LCBlWzEyNDgwXSA9IDAsIEE2KCksIGVbMTI0ODBdID0gZVsxMjQ2NF0sIGVbMTI0NjRdID0gNDk5MTYsIGVbMTI2ODhdID0gNDk5ODAsIGVbMTI2NzBdID0gNDI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gSmsoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDA7CiAgICAgICAgICAgICAgbiA9IFggLSAxNiB8IDAsIFggPSBuOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCA2OTYwLCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBGW0EgKyAxODggfCAwXSA9IElbQSArIDE4OCB8IDBdIHwgMSwgaDIoaSwgbiArIDEyIHwgMCwgMSksIGsgPSBlW0EgKyAxMTYgPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghaykgewogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtuICsgMTIgPj4gMl0gKyAxIHwgMCwgayA9IEUyKHQsIDgpLCBlW0EgKyAxMTYgPj4gMl0gPSBrLCAhaykgewogICAgICAgICAgICAgICAgICAgICAgUShmLCAxLCA2OTg2LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlW0EgKyAxMTIgPj4gMl0gPSB0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHQgPSBlW24gKyAxMiA+PiAyXSwgdCA+Pj4gMCA8IGRbQSArIDExMiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAobCA9IGssIGsgPSB0ICsgMSB8IDAsIHQgPSBvMChsLCBrIDw8IDMpLCAhdCkgewogICAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjk4NiwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVtBICsgMTE2ID4+IDJdID0gdCwgbCA9IGVbQSArIDExMiA+PiAyXSwgZDIodCArIChsIDw8IDMpIHwgMCwgMCwgayAtIGwgPDwgMyksIGVbQSArIDExMiA+PiAyXSA9IGssIGsgPSBlW0EgKyAxMTYgPj4gMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobCA9IGssIGsgPSBlW24gKyAxMiA+PiAyXSwgZVtsICsgKGsgPDwgMykgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgZVtuID4+IDJdID0gaywgUShmLCAxLCAxNjY4OCwgbiksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHIgPSByIC0gMSB8IDAsIGsgPSBVMihyKSwgQSA9IGVbQSArIDExNiA+PiAyXSwgdCA9IGVbbiArIDEyID4+IDJdLCBlW0EgKyAodCA8PCAzKSA+PiAyXSA9IGssICFrKSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjk4NiwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVsoQSArICh0IDw8IDMpIHwgMCkgKyA0ID4+IDJdID0gciwgRjIoZVtBICsgKGVbbiArIDEyID4+IDJdIDw8IDMpID4+IDJdLCBpICsgMSB8IDAsIHIpLCBBID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBuICsgMTYgfCAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBkMihBLCBpLCByKSB7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghciB8fCAoRltBIHwgMF0gPSBpLCBmID0gQSArIHIgfCAwLCBGW2YgLSAxIHwgMF0gPSBpLCByID4+PiAwIDwgMykgfHwgKEZbQSArIDIgfCAwXSA9IGksIEZbQSArIDEgfCAwXSA9IGksIEZbZiAtIDMgfCAwXSA9IGksIEZbZiAtIDIgfCAwXSA9IGksIHIgPj4+IDAgPCA3KSB8fCAoRltBICsgMyB8IDBdID0gaSwgRltmIC0gNCB8IDBdID0gaSwgciA+Pj4gMCA8IDkpIHx8IChmID0gMCAtIEEgJiAzLCBrID0gZiArIEEgfCAwLCBpID0gWihpICYgMjU1LCAxNjg0MzAwOSksIGVbayA+PiAyXSA9IGksIGYgPSByIC0gZiAmIC00LCByID0gZiArIGsgfCAwLCBlW3IgLSA0ID4+IDJdID0gaSwgZiA+Pj4gMCA8IDkpIHx8IChlW2sgKyA4ID4+IDJdID0gaSwgZVtrICsgNCA+PiAyXSA9IGksIGVbciAtIDggPj4gMl0gPSBpLCBlW3IgLSAxMiA+PiAyXSA9IGksIGYgPj4+IDAgPCAyNSkgfHwgKGVbayArIDI0ID4+IDJdID0gaSwgZVtrICsgMjAgPj4gMl0gPSBpLCBlW2sgKyAxNiA+PiAyXSA9IGksIGVbayArIDEyID4+IDJdID0gaSwgZVtyIC0gMTYgPj4gMl0gPSBpLCBlW3IgLSAyMCA+PiAyXSA9IGksIGVbciAtIDI0ID4+IDJdID0gaSwgZVtyIC0gMjggPj4gMl0gPSBpLCBuID0gayAmIDQgfCAyNCwgciA9IGYgLSBuIHwgMCwgciA+Pj4gMCA8IDMyKSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGZvciAoZiA9IGQwKGksIDAsIDEsIDEpLCB0ID0gcTIsIGkgPSBrICsgbiB8IDA7IGVbaSArIDI0ID4+IDJdID0gZiwgZVtpICsgMjggPj4gMl0gPSB0LCBlW2kgKyAxNiA+PiAyXSA9IGYsIGVbaSArIDIwID4+IDJdID0gdCwgZVtpICsgOCA+PiAyXSA9IGYsIGVbaSArIDEyID4+IDJdID0gdCwgZVtpID4+IDJdID0gZiwgZVtpICsgNCA+PiAyXSA9IHQsIGkgPSBpICsgMzIgfCAwLCByID0gciAtIDMyIHwgMCwgciA+Pj4gMCA+IDMxOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIEE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUmsoQSwgaSwgciwgZiwgaykgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMCwgayA9IGsgfCAwOwogICAgICAgICAgICAgIHZhciB0ID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoUShmLCAyLCAyMDczMywgMCksICFWNChlW0EgPj4gMl0sIGksIHIsIGYsIGspKQogICAgICAgICAgICAgICAgICByZXR1cm4gUShmLCAxLCAxMDE3MSwgMCksIDA7CiAgICAgICAgICAgICAgICBpZiAoZVtlW0EgPj4gMl0gKyA2MCA+PiAyXSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICBpZiAoayA9IEEgKyAxMDggfCAwLCAhRjQociwgaywgZikpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVbQSArIDQ4ID4+IDJdIC0gMTIgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAyOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICBpID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSA0OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBpID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpID0gLTE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW3IgKyAyMCA+PiAyXSA9IGksIGkgPSBlW0EgKyAxMjAgPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoIWVbaSArIDEyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgUihlW2kgKyA0ID4+IDJdKSwgUihlW2VbQSArIDEyMCA+PiAyXSArIDggPj4gMl0pLCBSKGVbZVtBICsgMTIwID4+IDJdID4+IDJdKSwgaSA9IGVbQSArIDEyMCA+PiAyXSwgdCA9IGVbaSArIDEyID4+IDJdLCB0ICYmIChSKHQpLCBpID0gZVtBICsgMTIwID4+IDJdKSwgUihpKSwgZVtBICsgMTIwID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICghSjQociwgaywgZikpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlW0EgKyAxMTYgPj4gMl0gJiYgRTQociwgaywgZiksIHQgPSAxLCBpID0gZVtrID4+IDJdLCAhaSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGVbciArIDI4ID4+IDJdID0gaSwgZVtyICsgMzIgPj4gMl0gPSBlW0EgKyAxMTIgPj4gMl0sIGVbQSArIDEwOCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiB0IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBFayhBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDA7CiAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgaWYgKCFpNihlW0EgPj4gMl0sIGksIHIsIGYpKQogICAgICAgICAgICAgICAgcmV0dXJuIFEoZiwgMSwgMTAxNzEsIDApLCAwOwogICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChlW2VbQSA+PiAyXSArIDYwID4+IDJdIHwgZVtBICsgMTI4ID4+IDJdKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKGsgPSBBICsgMTA4IHwgMCwgIUY0KHIsIGssIGYpKQogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVbQSArIDQ4ID4+IDJdIC0gMTIgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAyOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICBpID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSA0OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBpID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpID0gLTE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW3IgKyAyMCA+PiAyXSA9IGksIGkgPSBlW0EgKyAxMjAgPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoIWVbaSArIDEyID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgUihlW2VbayArIDEyID4+IDJdICsgNCA+PiAyXSksIFIoZVtlW2sgKyAxMiA+PiAyXSArIDggPj4gMl0pLCBSKGVbZVtrICsgMTIgPj4gMl0gPj4gMl0pLCBpID0gZVtrICsgMTIgPj4gMl0sIHQgPSBlW2kgKyAxMiA+PiAyXSwgdCAmJiAoUih0KSwgaSA9IGVbayArIDEyID4+IDJdKSwgUihpKSwgZVtrICsgMTIgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGkgPSAwLCAhSjQociwgaywgZikpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlW0EgKyAxMTYgPj4gMl0gJiYgRTQociwgaywgZiksIGkgPSAxLCBmID0gZVtrID4+IDJdLCAhZikKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGVbciArIDI4ID4+IDJdID0gZiwgZVtyICsgMzIgPj4gMl0gPSBlW0EgKyAxMTIgPj4gMl0sIGVbQSArIDEwOCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBpIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBvNigpIHsKICAgICAgICAgICAgICB2YXIgQSA9IDAsIGkgPSAwLCByID0gMCwgZiA9IDA7CiAgICAgICAgICAgICAgQSA9IDIzOTk7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgIGlmIChpID0gSVtBIHwgMF0sICFpIHwgKGkgfCAwKSA9PSA2MSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBpZiAoQSA9IEEgKyAxIHwgMCwgIShBICYgMykpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbQSA+PiAyXSwgKChyIHwgMTY4NDMwMDggLSByKSAmIC0yMTM5MDYyMTQ0KSAhPSAtMjEzOTA2MjE0NCkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IHIgXiAxMDI3NDIzNTQ5LCAoKDE2ODQzMDA4IC0gaSB8IGkpICYgLTIxMzkwNjIxNDQpICE9IC0yMTM5MDYyMTQ0KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW0EgKyA0ID4+IDJdLCBpID0gQSArIDQgfCAwLCBBID0gaSwgKCgxNjg0MzAwOCAtIHIgfCByKSAmIC0yMTM5MDYyMTQ0KSAhPSAtMjEzOTA2MjE0NCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaSA9IEE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgaWYgKEEgPSBpLCByID0gSVtBIHwgMF0sICFyKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGlmIChpID0gQSArIDEgfCAwLCAociB8IDApID09IDYxKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoKEEgfCAwKSA9PSAyMzk5KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgQSA9IEEgLSAyMzk5IHwgMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoSVtBICsgMjM5OSB8IDBdIHx8IChyID0gZVsxMjQ4Nl0sICFyKSB8fCAoaSA9IGVbciA+PiAyXSwgIWkpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIVdpKDIzOTksIGksIEEpICYmIChpID0gQSArIGVbciA+PiAyXSB8IDAsIElbaSB8IDBdID09IDYxKSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW3IgKyA0ID4+IDJdLCByID0gciArIDQgfCAwLCBpKQogICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSBpICsgMSB8IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBmOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGc2KCkgewogICAgICAgICAgICAgIHZhciBBID0gMCwgaSA9IDAsIHIgPSAwLCBmID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoaSA9IEUyKDEsIDIzMiksIGkpIHsKICAgICAgICAgICAgICAgICAgaWYgKGVbaSA+PiAyXSA9IDEsIGVbaSArIDE4NCA+PiAyXSA9IDEsIEZbaSArIDE4OCB8IDBdID0gSVtpICsgMTg4IHwgMF0gfCA2LCBBID0gRTIoMSwgNTY0NCksIGVbaSArIDEyID4+IDJdID0gQSwgIUEgfHwgKEEgPSBFMigxLCAxZTMpLCBlW2kgKyAxNiA+PiAyXSA9IEEsICFBKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBlW2kgKyA0OCA+PiAyXSA9IDAsIGVbaSArIDUyID4+IDJdID0gMCwgZVtpICsgNDQgPj4gMl0gPSAtMSwgZVtpICsgMjAgPj4gMl0gPSAxZTM7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoQSA9IEUyKDEsIDQ4KSwgQSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDI0ID4+IDJdID0gMCwgZVtBICsgMzIgPj4gMl0gPSAxMDAsIGYgPSBFMigxMDAsIDI0KSwgZVtBICsgMjggPj4gMl0gPSBmLCBmKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgUihBKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVtpICsgMjAwID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyA0MCA+PiAyXSA9IDAsIGVbaSArIDIwMCA+PiAyXSA9IEEsIEEgPSBwZSgpLCBlW2kgKyAxOTYgPj4gMl0gPSBBLCAhQSB8fCAoQSA9IHBlKCksIGVbaSArIDE5MiA+PiAyXSA9IEEsICFBKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBBID0gMCwgciA9IG82KCk7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGlmIChmID0gUTYoKSwgIWdlKHIsIDIzNzQpKSB7CiAgICAgICAgICAgICAgICAgICAgICBBID0gZjsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChyID0gd3IociksIChyIHwgMCkgPCAwKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBBID0gZiA/IGYgPDwgMSA6IDY0LCBBID0gKEEgfCAwKSA+IChyIHwgMCkgPyByIDogQTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoQSA9IFdlKEEpLCBlW2kgKyAyMTIgPj4gMl0gPSBBLCAhQSAmJiAoQSA9IFdlKDApLCBlW2kgKyAyMTIgPj4gMl0gPSBBLCAhQSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gc2koaSksIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gRGsoQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDAsIG8gPSAwLCBnID0gMCwgaCA9IDAsIHMgPSAwLCB3ID0gMCwgQiA9IDA7CiAgICAgICAgICAgICAgaWYgKGRbQSArIDQ0ID4+IDJdID49IDgpCiAgICAgICAgICAgICAgICBmb3IgKGsgPSBlW0EgKyAzNiA+PiAyXSwgdSA9IGsgPDwgNSwgbyA9IFooaywgMjgpLCBnID0gWihrLCAyNCksIGggPSBaKGssIDIwKSwgcyA9IGsgPDwgNCwgdyA9IFooaywgMTIpLCBCID0gayA8PCAzLCB0ID0gZVtBICsgNDAgPj4gMl0sIG4gPSA4OyA7ICkgewogICAgICAgICAgICAgICAgICBpZiAobnIoQSwgdCwgZVtBICsgMzYgPj4gMl0sIDgpLCBLMShBKSwgbCA9IGVbQSArIDMyID4+IDJdLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gZVtBID4+IDJdLCBpID0gMDsgciA9IChpIDw8IDIpICsgdCB8IDAsIGYgPSBhICsgKGkgPDwgNSkgfCAwLCBHW3IgPj4gMl0gPSBHW2YgPj4gMl0sIEdbciArIChrIDw8IDIpID4+IDJdID0gR1tmICsgNCA+PiAyXSwgR1tyICsgQiA+PiAyXSA9IEdbZiArIDggPj4gMl0sIEdbciArIHcgPj4gMl0gPSBHW2YgKyAxMiA+PiAyXSwgaSA9IGkgKyAxIHwgMCwgKGwgfCAwKSAhPSAoaSB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gZVtBID4+IDJdLCBpID0gMDsgciA9IChpIDw8IDIpICsgdCB8IDAsIGYgPSBhICsgKGkgPDwgNSkgfCAwLCBHW3IgKyBzID4+IDJdID0gR1tmICsgMTYgPj4gMl0sIEdbciArIGggPj4gMl0gPSBHW2YgKyAyMCA+PiAyXSwgR1tyICsgZyA+PiAyXSA9IEdbZiArIDI0ID4+IDJdLCBHW3IgKyBvID4+IDJdID0gR1tmICsgMjggPj4gMl0sIGkgPSBpICsgMSB8IDAsIChsIHwgMCkgIT0gKGkgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCArIHUgfCAwLCBuID0gbiArIDggfCAwLCAhKG4gPj4+IDAgPD0gZFtBICsgNDQgPj4gMl0pKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFIoZVtBID4+IDJdKSwgUihBKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBUZShBLCBpKSB7CiAgICAgICAgICAgICAgdmFyIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMDsKICAgICAgICAgICAgICBpZiAodCA9IGVbQSArIDggPj4gMl0sIGYgPSBlW0EgKyA0ID4+IDJdLCB0IC0gZiA+Pj4gMCA+PSBpID4+PiAwKSB7CiAgICAgICAgICAgICAgICBpICYmIChmID0gZDIoZiwgMCwgaSkgKyBpIHwgMCksIGVbQSArIDQgPj4gMl0gPSBmOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoayA9IGVbQSA+PiAyXSwgbiA9IGYgLSBrIHwgMCwgciA9IG4gKyBpIHwgMCwgKHIgfCAwKSA+PSAwKSB7CiAgICAgICAgICAgICAgICB0ID0gdCAtIGsgfCAwLCBsID0gdCA8PCAxLCByID0gdCA+Pj4gMCA+PSAxMDczNzQxODIzID8gMjE0NzQ4MzY0NyA6IHIgPj4+IDAgPCBsID4+PiAwID8gbCA6IHIsIHIgJiYgKGEgPSBfMihyKSksIHQgPSByICsgYSB8IDAsIGwgPSBpLCByID0gbiArIGEgfCAwLCBpID0gZDIociwgMCwgaSksIGwgPSBsICsgaSB8IDA7CiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID09IChrIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBhID0gaTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHUgPSBuICYgMzsKICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgIGlmICghdSkgewogICAgICAgICAgICAgICAgICAgICAgaSA9IGY7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwLCBpID0gZjsgciA9IHIgLSAxIHwgMCwgaSA9IGkgLSAxIHwgMCwgRltyIHwgMF0gPSBJW2kgfCAwXSwgbiA9IG4gKyAxIHwgMCwgKHUgfCAwKSAhPSAobiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGsgLSBmID4+PiAwIDw9IDQyOTQ5NjcyOTIpCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IEZbciAtIDEgfCAwXSA9IElbaSAtIDEgfCAwXSwgRltyIC0gMiB8IDBdID0gSVtpIC0gMiB8IDBdLCBGW3IgLSAzIHwgMF0gPSBJW2kgLSAzIHwgMF0sIHIgPSByIC0gNCB8IDAsIGkgPSBpIC0gNCB8IDAsIEZbciB8IDBdID0gSVtpIHwgMF0sIChpIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBrID0gZVtBID4+IDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZVtBICsgOCA+PiAyXSA9IHQsIGVbQSArIDQgPj4gMl0gPSBsLCBlW0EgPj4gMl0gPSBhLCBrICYmIFIoayk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHBpKCksIFUwKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gVWsoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDA7CiAgICAgICAgICAgICAgaWYgKEZbQSArIDM2IHwgMF0gPSBpLCBpID0gZVtBICsgNDQgPj4gMl0sIGsgPSBlW0EgKyA0MCA+PiAyXSwgZiA9IGkgLSBrID4+IDIsIGYgPj4+IDAgPCByID4+PiAwKSB7CiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgIGlmIChmID0gciAtIGYgfCAwLCB0ID0gZVtBICsgNDggPj4gMl0sIGYgPj4+IDAgPD0gdCAtIGkgPj4gMiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICAgIGYgJiYgKHIgPSBpLCBpID0gZiA8PCAyLCBpID0gZDIociwgMCwgaSkgKyBpIHwgMCksIGVbQSArIDQ0ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbQSArIDQwID4+IDJdLCBuID0gaSAtIHIgfCAwLCBrID0gZiArIChuID4+IDIpIHwgMCwgayA+Pj4gMCA8IDEwNzM3NDE4MjQpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gdCAtIHIgfCAwLCBsID0gdCA+PiAxLCBrID0gdCA+Pj4gMCA+PSAyMTQ3NDgzNjQ0ID8gMTA3Mzc0MTgyMyA6IGsgPj4+IDAgPCBsID4+PiAwID8gbCA6IGssIGspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPj0gMTA3Mzc0MTgyNCkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBhID0gXzIoayA8PCAyKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gYSArIG4gfCAwLCBmID0gZiA8PCAyLCBmID0gZDIodCwgMCwgZikgKyBmIHwgMCwgKGkgfCAwKSAhPSAociB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdCA9IHQgLSA0IHwgMCwgaSA9IGkgLSA0IHwgMCwgR1t0ID4+IDJdID0gR1tpID4+IDJdLCAoaSB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICBlW0EgKyA0OCA+PiAyXSA9IChrIDw8IDIpICsgYSwgZVtBICsgNDQgPj4gMl0gPSBmLCBlW0EgKyA0MCA+PiAyXSA9IHQsIHIgJiYgUihyKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHBpKCksIFUwKCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgWnIoKSwgVTAoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgciA+Pj4gMCA8IGYgPj4+IDAgJiYgKGVbQSArIDQ0ID4+IDJdID0gayArIChyIDw8IDIpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBNayhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwOwogICAgICAgICAgICAgIHIgPSAwLCB0ID0gIShlW0EgKyAxMDQgPj4gMl0gfCBlW0EgKyAxMDAgPj4gMl0pICYgKGVbQSA+PiAyXSAhPSAwICYgZVtBICsgOCA+PiAyXSAhPSAwKSAmIGVbQSArIDQgPj4gMl0gIT0gMCAmIGVbQSArIDY0ID4+IDJdICE9IDAgJiBlW0EgKyAxNiA+PiAyXSAhPSAwICYgZVtBICsgMTIgPj4gMl0gIT0gMCwgZiA9IGVbQSArIDIwID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmIChuID0gZVtBICsgNzIgPj4gMl0sIGYgPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgZm9yIChsID0gZiAmIC00OyB0ID0gKGVbKFoociB8IDMsIDEyKSArIG4gfCAwKSArIDggPj4gMl0gJiAxMjYpID4+PiAwIDwgMzggJiYgKGVbKFoociB8IDIsIDEyKSArIG4gfCAwKSArIDggPj4gMl0gJiAxMjYpID4+PiAwIDwgMzggJiYgKGVbKFoociB8IDEsIDEyKSArIG4gfCAwKSArIDggPj4gMl0gJiAxMjYpID4+PiAwIDwgMzggJiYgKGVbKFoociwgMTIpICsgbiB8IDApICsgOCA+PiAyXSAmIDEyNikgPj4+IDAgPCAzOCA/IHQgOiAwLCByID0gciArIDQgfCAwLCBrID0gayArIDQgfCAwLCAobCB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAoZiA9IGYgJiAzLCAhZikKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IHQgPSAoZVsoWihyLCAxMikgKyBuIHwgMCkgKyA4ID4+IDJdICYgMTI2KSA+Pj4gMCA8IDM4ID8gdCA6IDAsIHIgPSByICsgMSB8IDAsIGsgPSBrICsgMSB8IDAsIChmIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBlW2kgKyAyOCA+PiAyXSAhPSA5OSAmIGVbQSArIDQwID4+IDJdIC0gMSA+Pj4gMCA8IDIgJiB0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFNrKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDA7CiAgICAgICAgICAgICAgayA9IFggLSAxNiB8IDAsIFggPSBrLCBsID0gNSwgdCA9IGVbQSArIDE1NiA+PiAyXSArIFooZVtBICsgMjA0ID4+IDJdLCA1NjQ0KSB8IDAsIGYgPSBlW3QgKyA1NTg0ID4+IDJdLCBGW2YgfCAwXSAmIDEgJiYgKGwgPSBlW2YgKyA0ID4+IDJdICsgNSB8IDApLCBmID0gZVtBICsgNTIgPj4gMl0sIG4gPSBsICsgOSB8IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKG4gPj4+IDAgPiBkW0EgKyA1NiA+PiAyXSkgewogICAgICAgICAgICAgICAgICBpZiAoZiA9IG8wKGYsIG4pLCAhZikgewogICAgICAgICAgICAgICAgICAgIFIoZVtBICsgNTIgPj4gMl0pLCBlW0EgKyA1MiA+PiAyXSA9IDAsIGVbQSArIDU2ID4+IDJdID0gMCwgUShyLCAxLCA3NTA4LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW0EgKyA1NiA+PiAyXSA9IG4sIGVbQSArIDUyID4+IDJdID0gZjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChrMihmLCA2NTM2MiwgMiksIGsyKGYgKyAyIHwgMCwgbCArIDcgfCAwLCAyKSwgazIoZiArIDQgfCAwLCBlW3QgPj4gMl0sIDEpLCBrMihmICsgNSB8IDAsIGVbdCArIDQgPj4gMl0sIDEpLCBrMihmICsgNiB8IDAsIGVbdCArIDggPj4gMl0sIDIpLCBrMihmICsgOCB8IDAsIGVbdCArIDE2ID4+IDJdLCAxKSwgZVtrICsgMTIgPj4gMl0gPSBsLCAhSTYoZVtBICsgMTU2ID4+IDJdLCBlW0EgKyAyMDQgPj4gMl0sIGYgKyA5IHwgMCwgayArIDEyIHwgMCwgcikpIHsKICAgICAgICAgICAgICAgICAgUShyLCAxLCA3NDU2LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtrICsgMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgUShyLCAxLCA3NDU2LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBBID0gKEwwKGksIGVbQSArIDUyID4+IDJdLCBuLCByKSB8IDApID09IChuIHwgMCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gayArIDE2IHwgMCwgQSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gaDYoQSwgaSwgcikgewogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMCwgbyA9IDAsIGcgPSAwOwogICAgICAgICAgICAgIGlmICh0ID0gZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCwgZyA9IGVbdCArIDU1ODQgPj4gMl0sIGEgPSBlW3QgKyA0MjAgPj4gMl0sIGwgPSBlW2VbQSArIDcyID4+IDJdICsgMTYgPj4gMl0sIGsyKGksIDY1Mzc1LCAyKSwgQSA9IGEgKyAxIHwgMCwgayA9IGwgPj4+IDAgPCAyNTcgPyAxIDogMiwgdSA9IFooQSwgKGsgPDwgMSkgKyA1IHwgMCksIGsyKGkgKyAyIHwgMCwgdSArIDIgfCAwLCAyKSwgQSkKICAgICAgICAgICAgICAgIGZvciAoaSA9IGkgKyA0IHwgMCwgQSA9IHQgKyA0MjQgfCAwOyBrMihpLCBlW0EgPj4gMl0sIDEpLCBpID0gaSArIDEgfCAwLCBrMihpLCBlW0EgKyA0ID4+IDJdLCBrKSwgaSA9IGkgKyBrIHwgMCwgazIoaSwgZVtBICsgOCA+PiAyXSwgMiksIGsyKGkgKyAyIHwgMCwgZVtBICsgMTIgPj4gMl0sIDEpLCBpID0gaSArIDMgfCAwLCBrMihpLCBlW0EgKyAxNiA+PiAyXSwgayksIG4gPSBpICsgayB8IDAsIGsyKG4sIGVbQSArIDM2ID4+IDJdLCAxKSwgaSA9IGVbQSArIDggPj4gMl0sIGYgPSBlW3QgKyA4ID4+IDJdLCBlW0EgKyA4ID4+IDJdID0gKGkgfCAwKSA8IChmIHwgMCkgPyBpIDogZiwgaSA9IGVbZyArIDQgPj4gMl0sIGYgPSBlW0EgKyAxNiA+PiAyXSwgZVtBICsgMTYgPj4gMl0gPSAoZiB8IDApIDwgKGwgfCAwKSA/IGYgOiBsLCBmID0gZVtBICsgMTIgPj4gMl0sIGVbQSArIDEyID4+IDJdID0gKGkgfCAwKSA+IChmIHwgMCkgPyBmIDogaSwgQSA9IEEgKyAxNDggfCAwLCBpID0gbiArIDEgfCAwLCBuID0gKGEgfCAwKSAhPSAobyB8IDApLCBvID0gbyArIDEgfCAwLCAhIW47ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIGVbciA+PiAyXSA9IHUgKyA0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIE5rKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwOwogICAgICAgICAgICAgIGsgPSBYIC0gMTYgfCAwLCBYID0gazsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoZVtBICsgMTE2ID4+IDJdKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaWYgKHIgPj4+IDAgPD0gMSkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDE5MTY3LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChoMihpLCBrICsgMTIgfCAwLCAyKSwgdCA9IGVbayArIDEyID4+IDJdLCBsID0gdCAmIDY1NTM1LCAhbCkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDE5MjAwLCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChaKGwsIDYpICsgMiA+Pj4gMCA+IHIgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCAxOTE2NywgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZiA9IFUyKFoodCwgNikpLCAhZikKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmIChyID0gVTIoOCksIGVbQSArIDExNiA+PiAyXSA9IHIsICFyKSB7CiAgICAgICAgICAgICAgICAgIFIoZik7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtyID4+IDJdID0gZiwgdCA9IHIsIHIgPSBHMltrICsgMTIgPj4gMV0sIHUyW3QgKyA0ID4+IDFdID0gciwgIXIpIHsKICAgICAgICAgICAgICAgICAgbiA9IDE7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHIgPSAwOyBuID0gayArIDEyIHwgMCwgaDIoaSArIDIgfCAwLCBuLCAyKSwgdCA9IGYgKyBaKHIsIDYpIHwgMCwgdTJbdCA+PiAxXSA9IGVbayArIDEyID4+IDJdLCBoMihpICsgNCB8IDAsIG4sIDIpLCB1Mlt0ICsgMiA+PiAxXSA9IGVbayArIDEyID4+IDJdLCBpID0gaSArIDYgfCAwLCBoMihpLCBuLCAyKSwgdTJbdCArIDQgPj4gMV0gPSBlW2sgKyAxMiA+PiAyXSwgbiA9IDEsIHIgPSByICsgMSB8IDAsIHIgPj4+IDAgPCBHMltlW0EgKyAxMTYgPj4gMl0gKyA0ID4+IDFdOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBrICsgMTYgfCAwLCBuIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBQayhBKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwOwogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBpID0gZVtBID4+IDJdLCBrID0gRTIoMSwgOCk7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGVbaSArIDE2ID4+IDJdID09IDEpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW2kgKyAyMCA+PiAyXSwgIWYpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWVbQSArIDggPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyA4ID4+IDJdID0gMSwgZVtpICsgMzIgPj4gMl0gPSBlW2kgKyAzMiA+PiAyXSArIDEsIHIgPSBVMig4KSwgIXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZVtpICsgMTYgPj4gMl0gPSAyOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZVtyID4+IDJdID0gQSwgZVtyICsgNCA+PiAyXSA9IGVbaSArIDI4ID4+IDJdLCBlW2kgKyAyOCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChlW2kgKyAxNiA+PiAyXSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZVtpICsgMjAgPj4gMl0gPSBlW2YgKyA0ID4+IDJdLCByID0gZVtmID4+IDJdLCBSKGYpLCAhcikKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBpZiAoZiA9IGVbciA+PiAyXSwgZiAmJiBvMltmIHwgMF0oZVtyICsgNCA+PiAyXSwgayksIFIociksIGVbaSArIDI0ID4+IDJdID0gZVtpICsgMjQgPj4gMl0gLSAxLCBlW2kgKyAxNiA+PiAyXSA9PSAxKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoaykgewogICAgICAgICAgICAgICAgaWYgKGkgPSBlW2sgKyA0ID4+IDJdLCAoaSB8IDApID4gMCkKICAgICAgICAgICAgICAgICAgZm9yIChBID0gMDsgciA9IGVbayA+PiAyXSArIFooQSwgMTIpIHwgMCwgZiA9IGVbciArIDggPj4gMl0sIGYgJiYgKG8yW2YgfCAwXShlW3IgKyA0ID4+IDJdKSwgaSA9IGVbayArIDQgPj4gMl0pLCBBID0gQSArIDEgfCAwLCAoaSB8IDApID4gKEEgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIFIoZVtrID4+IDJdKSwgUihrKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24geGsoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDA7CiAgICAgICAgICAgICAgciA9IDE7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChHMltBICsgODAgPj4gMV0gJiAzMzI4MCkgIT0gMzMyODAgfHwgKG4gPSBaKGVbQSArIDEwNCA+PiAyXSwgZVtBICsgMTA4ID4+IDJdKSwgIW4pKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yICh0ID0gZVtBICsgMTU2ID4+IDJdOyA7ICkgewogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbdCArIDE2ID4+IDJdICE9IDIgfHwgKHIgPSBlW3QgKyA1NjEyID4+IDJdID8gciAmIDEgOiAwLCBmID0gZVtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdLCAhZikpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGlmIChpID0gZVt0ICsgNTU4NCA+PiAyXSwgZiA+Pj4gMCA+PSA0KQogICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gZiAmIC00LCBrID0gMDsgciA9IChlW2kgKyAyMCA+PiAyXSBeIC0xKSAmIHIgJiAoKGVbaSArIDMyNjAgPj4gMl0gfCAoZVtpICsgMTEwMCA+PiAyXSB8IGVbaSArIDIxODAgPj4gMl0pKSBeIC0xKSAmIDEsIGkgPSBpICsgNDMyMCB8IDAsIGsgPSBrICsgNCB8IDAsIChhIHwgMCkgIT0gKGsgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPSAwLCBmID0gZiAmIDMsICFmKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgciA9IChlW2kgKyAyMCA+PiAyXSBeIC0xKSAmIHIgJiAxLCBpID0gaSArIDEwODAgfCAwLCBrID0gayArIDEgfCAwLCAoZiB8IDApICE9IChrIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAodCA9IHQgKyA1NjQ0IHwgMCwgbCA9IGwgKyAxIHwgMCwgKG4gfCAwKSA9PSAobCB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gciB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gczYoQSwgaSwgciwgZiwgaywgdCkgewogICAgICAgICAgICAgIHZhciBuID0gMDsKICAgICAgICAgICAgICBuID0gMTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbKFooaSwgNTY0NCkgKyBBIHwgMCkgKyA1NTg0ID4+IDJdICsgWihyLCAxMDgwKSB8IDAsIEEgPSBlW2kgKyAyNCA+PiAyXSwgKEEgfCAwKSA9PSAxIHx8IChyID0gWihlW2kgKyA0ID4+IDJdLCAzKSwgbiA9IHIgLSAyIHwgMCwgQSkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgIGlmIChBID0gciAtIDEgfCAwLCBBID4+PiAwID4gZFtrID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IDEsIGsyKGYsIGVbaSArIDgwNCA+PiAyXSA8PCA1LCAxKSwgIW4pCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGkgKyAyOCB8IDAsIHIgPSAwOyBmID0gZiArIDEgfCAwLCBrMihmLCBlW2kgKyAociA8PCAzKSA+PiAyXSA8PCAzLCAxKSwgciA9IHIgKyAxIHwgMCwgKG4gfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgdCA9IEE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAociA9IG4gPDwgMSwgciA+Pj4gMCA+PSBkW2sgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgaWYgKHQgPSByIHwgMSwgazIoZiwgQSArIChlW2kgKyA4MDQgPj4gMl0gPDwgNSkgfCAwLCAxKSwgIW4pCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZm9yIChBID0gaSArIDI4IHwgMCwgciA9IGYgKyAxIHwgMCwgZiA9IDA7IGkgPSBBICsgKGYgPDwgMykgfCAwLCBrMihyLCAoZVtpID4+IDJdIDw8IDExKSArIGVbaSArIDQgPj4gMl0gfCAwLCAyKSwgciA9IHIgKyAyIHwgMCwgZiA9IGYgKyAxIHwgMCwgKG4gfCAwKSAhPSAoZiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGVbayA+PiAyXSA9IGVbayA+PiAyXSAtIHQsIDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBRKHQsIDEsIDQ1OTMsIDApLCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHc2KEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwLCB1ID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIWMwKGVbQSArIDE5MiA+PiAyXSwgMTI2LCByKSB8fCBlW0EgKyAxNiA+PiAyXSAmJiAhYzAoZVtBICsgMTkyID4+IDJdLCAxMjcsIHIpIHx8ICFjMChlW0EgKyAxOTIgPj4gMl0sIDEyOCwgcikgfHwgIWMwKGVbQSArIDE5MiA+PiAyXSwgMTI5LCByKSB8fCAhYzAoZVtBICsgMTkyID4+IDJdLCAxMzAsIHIpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgbCA9IGVbQSArIDE5MiA+PiAyXSwgZiA9IGVbbCA+PiAyXSwgdCA9IGVbbCArIDggPj4gMl07CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghZikgewogICAgICAgICAgICAgICAgICAgIGsgPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGsgPSAxLCBhID0gZiAmIDEsIChmIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICBmID0gMDsKICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChmID0gZiAmIC0yOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghayB8fCAobiA9IDAsICEobzJbZVt0ID4+IDJdXShBLCBpLCByKSB8IDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gKG8yW2VbdCArIDQgPj4gMl1dKEEsIGksIHIpIHwgMCkgIT0gMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gbiwgdCA9IHQgKyA4IHwgMCwgdSA9IHUgKyAyIHwgMCwgKGYgfCAwKSA9PSAodSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZiA9ICFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChrID0gYSA/IDAgOiBrLCBmIHwgIWEpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgayA9IChvMltlW3QgPj4gMl1dKEEsIGksIHIpIHwgMCkgIT0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVbbCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBrIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBCNihBKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwOwogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDA7CiAgICAgICAgICAgICAgQSAmJiAoc2koZVtBID4+IDJdKSwgZVtBID4+IDJdID0gMCwgaSA9IGVbQSArIDcyID4+IDJdLCBpICYmIChSKGkpLCBlW0EgKyA3MiA+PiAyXSA9IDApLCBpID0gZVtBICsgNjggPj4gMl0sIGkgJiYgKFIoaSksIGVbQSArIDY4ID4+IDJdID0gMCksIGkgPSBlW0EgKyAxMDggPj4gMl0sIGkgJiYgKFIoaSksIGVbQSArIDEwOCA+PiAyXSA9IDApLCBpID0gZVtBICsgMTE2ID4+IDJdLCBpICYmIChyID0gZVtpID4+IDJdLCByICYmIChSKHIpLCBpID0gZVtBICsgMTE2ID4+IDJdLCBlW2kgPj4gMl0gPSAwKSwgUihpKSwgZVtBICsgMTE2ID4+IDJdID0gMCksIGkgPSBlW0EgKyAxMjAgPj4gMl0sIGkgJiYgKHIgPSBlW2kgKyAxMiA+PiAyXSwgciAmJiAoUihyKSwgaSA9IGVbQSArIDEyMCA+PiAyXSwgZVtpICsgMTIgPj4gMl0gPSAwKSwgciA9IGVbaSArIDQgPj4gMl0sIHIgJiYgKFIociksIGkgPSBlW0EgKyAxMjAgPj4gMl0sIGVbaSArIDQgPj4gMl0gPSAwKSwgciA9IGVbaSArIDggPj4gMl0sIHIgJiYgKFIociksIGkgPSBlW0EgKyAxMjAgPj4gMl0sIGVbaSArIDggPj4gMl0gPSAwKSwgciA9IGVbaSA+PiAyXSwgciAmJiAoUihyKSwgaSA9IGVbQSArIDEyMCA+PiAyXSwgZVtpID4+IDJdID0gMCksIFIoaSksIGVbQSArIDEyMCA+PiAyXSA9IDApLCBpID0gZVtBICsgNCA+PiAyXSwgaSAmJiAoeWkoaSksIGVbQSArIDQgPj4gMl0gPSAwKSwgaSA9IGVbQSArIDggPj4gMl0sIGkgJiYgKHlpKGkpLCBlW0EgKyA4ID4+IDJdID0gMCksIFIoQSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGM2KEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDA7CiAgICAgICAgICAgICAgbiA9IFggLSAzMiB8IDAsIFggPSBuLCB0ID0gZVtBICsgNzIgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCF0KSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgMjUxMDcsIDApLCBrID0gMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh0ID0gRTIoNCwgZVt0ICsgMTYgPj4gMl0pLCBrID0gMCwgIXQpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICAgZm9yICh1ID0gZVtBICsgNzIgPj4gMl07IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgICAgayA9IGVbKGwgPDwgMikgKyByID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+PSBkW3UgKyAxNiA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGVbbiArIDE2ID4+IDJdID0gaywgUShmLCAxLCA0MzIzLCBuICsgMTYgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayByOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gdCArIChrIDw8IDIpIHwgMCwgIWVbYSA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgICBlW24gPj4gMl0gPSBrLCBRKGYsIDEsIDU4ODksIG4pOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgUih0KSwgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZVthID4+IDJdID0gMSwgbCA9IGwgKyAxIHwgMCwgKGwgfCAwKSA9PSAoaSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFIodCksIFIoZVtBICsgNjQgPj4gMl0pOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgIGlmIChrID0gaSA8PCAyLCBmID0gVTIoayksIGVbQSArIDY0ID4+IDJdID0gZiwgIWYpIHsKICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDYwID4+IDJdID0gMCwgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBGMihmLCByLCBrKTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbQSArIDY0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVbQSArIDYwID4+IDJdID0gaSwgayA9IDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gbiArIDMyIHwgMCwgayB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gVGsoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIG4gPSBYIC0gMTYgfCAwLCBYID0gbiwgZiA9IDEsIGsgPSBlWyhlW0EgKyAxNTYgPj4gMl0gKyBaKGVbQSArIDIwNCA+PiAyXSwgNTY0NCkgfCAwKSArIDU1ODQgPj4gMl0sIHQgPSBlW2sgKyAyNCA+PiAyXSwgKHQgfCAwKSAhPSAxICYmIChmID0gWihlW2sgKyA0ID4+IDJdLCAzKSAtIDIgfCAwKSwgayA9IGVbQSArIDUyID4+IDJdLCBmID0gdCA/IGYgPDwgMSB8IDEgOiBmICsgMSB8IDAsIHQgPSBmICsgNCB8IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKHQgPj4+IDAgPiBkW0EgKyA1NiA+PiAyXSkgewogICAgICAgICAgICAgICAgICBpZiAoayA9IG8wKGssIHQpLCAhaykgewogICAgICAgICAgICAgICAgICAgIFIoZVtBICsgNTIgPj4gMl0pLCBlW0EgKyA1MiA+PiAyXSA9IDAsIGVbQSArIDU2ID4+IDJdID0gMCwgZiA9IDAsIFEociwgMSwgNzU5OSwgMCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW0EgKyA1NiA+PiAyXSA9IHQsIGVbQSArIDUyID4+IDJdID0gazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChrMihrLCA2NTM3MiwgMiksIGsyKGsgKyAyIHwgMCwgZiArIDIgfCAwLCAyKSwgZVtuICsgMTIgPj4gMl0gPSBmLCBmID0gMCwgIXM2KGVbQSArIDE1NiA+PiAyXSwgZVtBICsgMjA0ID4+IDJdLCAwLCBrICsgNCB8IDAsIG4gKyAxMiB8IDAsIHIpKSB7CiAgICAgICAgICAgICAgICAgIFEociwgMSwgNzU0NywgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtuICsgMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgUShyLCAxLCA3NTQ3LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSAoTDAoaSwgZVtBICsgNTIgPj4gMl0sIHQsIHIpIHwgMCkgPT0gKHQgfCAwKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBuICsgMTYgfCAwLCBmIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB6ayhBLCBpLCByLCBmLCBrKSB7CiAgICAgICAgICAgICAgaWYgKEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMCwgayA9IGsgfCAwLCB0MShBLCBlW2kgKyA4ID4+IDJdLCBrKSkgewogICAgICAgICAgICAgICAgZVtpICsgMjggPj4gMl0gPT0gMSB8IGVbaSArIDQgPj4gMl0gIT0gKHIgfCAwKSB8fCAoZVtpICsgMjggPj4gMl0gPSBmKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKHQxKEEsIGVbaSA+PiAyXSwgaykpIHsKICAgICAgICAgICAgICAgICAgaWYgKCEoZVtpICsgMTYgPj4gMl0gIT0gKHIgfCAwKSAmIGVbaSArIDIwID4+IDJdICE9IChyIHwgMCkpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgZVtpICsgMzIgPj4gMl0gPSAxOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW2kgKyAzMiA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgNDQgPj4gMl0gPT0gNCkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHUyW2kgKyA1MiA+PiAxXSA9IDAsIEEgPSBlW0EgKyA4ID4+IDJdLCBvMltlW2VbQSA+PiAyXSArIDIwID4+IDJdXShBLCBpLCByLCByLCAxLCBrKSwgSVtpICsgNTMgfCAwXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgNDQgPj4gMl0gPSAzLCAhSVtpICsgNTIgfCAwXSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVbaSArIDQ0ID4+IDJdID0gNDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZVtpICsgMjAgPj4gMl0gPSByLCBlW2kgKyA0MCA+PiAyXSA9IGVbaSArIDQwID4+IDJdICsgMSwgZVtpICsgMzYgPj4gMl0gIT0gMSB8IGVbaSArIDI0ID4+IDJdICE9IDIpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgRltpICsgNTQgfCAwXSA9IDE7CiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEEgPSBlW0EgKyA4ID4+IDJdLCBvMltlW2VbQSA+PiAyXSArIDI0ID4+IDJdXShBLCBpLCByLCBmLCBrKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdjYoQSwgaSkgewogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IGVbQSArIDggPj4gMl0sIHIgPSBlW0EgKyA0ID4+IDJdLCBmIC0gciA+PiAzID4+PiAwID49IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgIGkgJiYgKGkgPSBpIDw8IDMsIHIgPSBkMihyLCAwLCBpKSArIGkgfCAwKSwgZVtBICsgNCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICh0ID0gZVtBID4+IDJdLCBuID0gciAtIHQgfCAwLCBrID0gKG4gPj4gMykgKyBpIHwgMCwgayA+Pj4gMCA8IDUzNjg3MDkxMikgewogICAgICAgICAgICAgICAgICBpZiAoZiA9IGYgLSB0IHwgMCwgbCA9IGYgPj4gMiwgZiA9IGYgPj4+IDAgPj0gMjE0NzQ4MzY0MCA/IDUzNjg3MDkxMSA6IGsgPj4+IDAgPCBsID4+PiAwID8gbCA6IGssIGYpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZiA+Pj4gMCA+PSA1MzY4NzA5MTIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGEgPSBfMihmIDw8IDMpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChrID0gbiArIGEgfCAwLCBpID0gaSA8PCAzLCBpID0gZDIoaywgMCwgaSkgKyBpIHwgMCwgKHIgfCAwKSAhPSAodCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IHIgPSByIC0gOCB8IDAsIG4gPSBlW3IgKyA0ID4+IDJdLCBrID0gayAtIDggfCAwLCBlW2sgPj4gMl0gPSBlW3IgPj4gMl0sIGVbayArIDQgPj4gMl0gPSBuLCAociB8IDApICE9ICh0IHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICB0ID0gZVtBID4+IDJdOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSAoZiA8PCAzKSArIGEsIGVbQSArIDQgPj4gMl0gPSBpLCBlW0EgPj4gMl0gPSBrLCB0ICYmIFIodCk7CiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBpKCksIFUwKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFpyKCksIFUwKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gSWkoQSwgaSwgciwgZiwgaykgewogICAgICAgICAgICAgIHZhciB0ID0gMCwgbiA9IDAsIGwgPSAwOwogICAgICAgICAgICAgIHQgPSBYIC0gMjA4IHwgMCwgWCA9IHQsIGVbdCArIDIwNCA+PiAyXSA9IHIsIHIgPSB0ICsgMTYwIHwgMCwgZDIociwgMCwgNDApLCBlW3QgKyAyMDAgPj4gMl0gPSBlW3QgKyAyMDQgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChXNCgwLCBpLCB0ICsgMjAwIHwgMCwgdCArIDgwIHwgMCwgciwgZiwgaykgfCAwKSA8IDApCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICByID0gZVtBICsgNzYgPj4gMl0gPCAwLCBuID0gZVtBID4+IDJdLCBlW0EgPj4gMl0gPSBuICYgLTMzOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgazogewogICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW0EgKyA0OCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgICAgICBlW0EgKyA0OCA+PiAyXSA9IDgwLCBlW0EgKyAyOCA+PiAyXSA9IDAsIGVbQSArIDE2ID4+IDJdID0gMCwgZVtBICsgMjAgPj4gMl0gPSAwLCBsID0gZVtBICsgNDQgPj4gMl0sIGVbQSArIDQ0ID4+IDJdID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyAxNiA+PiAyXSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHZyKEEpKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBXNChBLCBpLCB0ICsgMjAwIHwgMCwgdCArIDgwIHwgMCwgdCArIDE2MCB8IDAsIGYsIGspOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGwgJiYgKG8yW2VbQSArIDM2ID4+IDJdXShBLCAwLCAwKSB8IDAsIGVbQSArIDQ4ID4+IDJdID0gMCwgZVtBICsgNDQgPj4gMl0gPSBsLCBlW0EgKyAyOCA+PiAyXSA9IDAsIGVbQSArIDE2ID4+IDJdID0gMCwgZVtBICsgMjAgPj4gMl0gPSAwKSwgZVtBID4+IDJdID0gZVtBID4+IDJdIHwgbiAmIDMyLCByKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBYID0gdCArIDIwOCB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZGsoQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICBrID0gMTU7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaToKICAgICAgICAgICAgICAgICAgc3dpdGNoIChlW0EgKyA0MCA+PiAyXSAtIDEgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgayA9IGVbQSArIDExMiA+PiAyXSArIDExIHwgMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyID0gRTIoMSwgayksICFyKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgazIociwgaywgNCksIGsyKHIgKyA0IHwgMCwgMTY2ODI0NjY0MiwgNCksIGsyKHIgKyA4IHwgMCwgZVtBICsgNDAgPj4gMl0sIDEpLCBrMihyICsgOSB8IDAsIGVbQSArIDUyID4+IDJdLCAxKSwgazIociArIDEwIHwgMCwgZVtBICsgNDQgPj4gMl0sIDEpLCBmID0gciArIDExIHwgMDsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgcjoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVbQSArIDQwID4+IDJdIC0gMSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW0EgKyAxMTIgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGsyKGYsIElbZVtBICsgMTA4ID4+IDJdICsgdCB8IDBdLCAxKSwgZiA9IGYgKyAxIHwgMCwgdCA9IHQgKyAxIHwgMCwgdCA+Pj4gMCA8IGRbQSArIDExMiA+PiAyXTsgKQogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBrMihmLCBlW0EgKyA0OCA+PiAyXSwgNCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW2kgPj4gMl0gPSBrLCBmID0gcjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEk2KEEsIGksIHIsIGYsIGspIHsKICAgICAgICAgICAgICB2YXIgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChkW2YgPj4gMl0gPD0gNCkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmIChpID0gZVsoWihpLCA1NjQ0KSArIEEgfCAwKSArIDU1ODQgPj4gMl0sIGsyKHIsIGVbaSArIDQgPj4gMl0gLSAxIHwgMCwgMSksIGsyKHIgKyAxIHwgMCwgZVtpICsgOCA+PiAyXSAtIDIgfCAwLCAxKSwgazIociArIDIgfCAwLCBlW2kgKyAxMiA+PiAyXSAtIDIgfCAwLCAxKSwgazIociArIDMgfCAwLCBlW2kgKyAxNiA+PiAyXSwgMSksIGsyKHIgKyA0IHwgMCwgZVtpICsgMjAgPj4gMl0sIDEpLCB0ID0gZVtmID4+IDJdIC0gNSB8IDAsIGVbZiA+PiAyXSA9IHQsIEZbaSB8IDBdICYgMSkgewogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgaWYgKEEgPSBlW2kgKyA0ID4+IDJdLCBBID4+PiAwIDw9IHQgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSByICsgNSB8IDAsIHQgPSBpICsgOTQ0IHwgMCwgbiA9IGkgKyA4MTIgfCAwLCBrID0gMDsgQSA9IGsgPDwgMiwgazIociwgKGVbQSArIHQgPj4gMl0gPDwgNCkgKyBlW0EgKyBuID4+IDJdIHwgMCwgMSksIHIgPSByICsgMSB8IDAsIEEgPSBlW2kgKyA0ID4+IDJdLCBrID0gayArIDEgfCAwLCBBID4+PiAwID4gayA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIHQgPSBlW2YgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZVtmID4+IDJdID0gdCAtIEE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFEoaywgMSwgNDQ4NywgMCksIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gS2soQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwOwogICAgICAgICAgICAgIGsgPSBYIC0gMTYgfCAwLCBYID0gaywgZVtBICsgOCA+PiAyXSA9PSAxNiA/IG4gPSBlW0EgKyAxNTYgPj4gMl0gKyBaKGVbQSArIDIwNCA+PiAyXSwgNTY0NCkgfCAwIDogbiA9IGVbQSArIDEyID4+IDJdLCBsID0gZVtBICsgNzIgPj4gMl0sIHQgPSBkW2wgKyAxNiA+PiAyXSA8IDI1NyA/IDEgOiAyOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICh0ID4+PiAwID49IHIgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgciA9IDAsIFEoZiwgMSwgNzc2OCwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtrICsgMTIgPj4gMl0gPSAodCBeIC0xKSArIHIsIGgyKGksIGsgKyA4IHwgMCwgdCksIGEgPSBlW2sgKyA4ID4+IDJdLCBhID4+PiAwID49IGRbbCArIDE2ID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgIHIgPSAwLCBRKGYsIDEsIDI1NDIyLCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyID0gMSwgaSA9IGkgKyB0IHwgMCwgaDIoaSwgZVtuICsgNTU4NCA+PiAyXSArIFooYSwgMTA4MCkgfCAwLCAxKSwgIU40KEEsIGVbayArIDggPj4gMl0sIGkgKyAxIHwgMCwgayArIDEyIHwgMCwgZikpIHsKICAgICAgICAgICAgICAgICAgciA9IDAsIFEoZiwgMSwgNzc2OCwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWVbayArIDEyID4+IDJdKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgciA9IDAsIFEoZiwgMSwgNzc2OCwgMCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gayArIDE2IHwgMCwgciB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gWjYoKSB7CiAgICAgICAgICAgICAgdmFyIEEgPSAwLCBpID0gMDsKICAgICAgICAgICAgICBlcigyOTc4MCwgMTcxNywgMjk3OTksIDcsIDI5ODAxLCA4KSwgQSA9IF8yKDQpLCBlW0EgPj4gMl0gPSAwLCBpID0gXzIoNCksIGVbaSA+PiAyXSA9IDAsIHoxKDI5NzgwLCAxOTM4LCA0ODk5NiwgMjk4MDQsIDksIEEgfCAwLCA0ODk5NiwgMjk4MDgsIDEwLCBpIHwgMCksIEEgPSBfMig0KSwgZVtBID4+IDJdID0gMiwgaSA9IF8yKDQpLCBlW2kgPj4gMl0gPSAyLCB6MSgyOTc4MCwgMTE3OSwgNDg5OTYsIDI5ODA0LCA5LCBBIHwgMCwgNDg5OTYsIDI5ODA4LCAxMCwgaSB8IDApLCBBID0gXzIoNCksIGVbQSA+PiAyXSA9IDQsIGkgPSBfMig0KSwgZVtpID4+IDJdID0gNCwgejEoMjk3ODAsIDIwNTQsIDQ4OTYwLCAyOTgwNCwgMTEsIEEgfCAwLCA0ODk2MCwgMjk4MDgsIDEyLCBpIHwgMCksIEEgPSBfMig0KSwgZVtBID4+IDJdID0gNSwgaSA9IF8yKDQpLCBlW2kgPj4gMl0gPSA1LCB6MSgyOTc4MCwgMTE0NSwgNDg5NjAsIDI5ODA0LCAxMSwgQSB8IDAsIDQ4OTYwLCAyOTgwOCwgMTIsIGkgfCAwKSwgQSA9IF8yKDQpLCBlW0EgPj4gMl0gPSA2LCBpID0gXzIoNCksIGVbaSA+PiAyXSA9IDYsIHoxKDI5NzgwLCAyMzUwLCA0ODkzNiwgMjk4MDQsIDEzLCBBIHwgMCwgNDg5MzYsIDI5ODA4LCAxNCwgaSB8IDApLCBxaSgyOTc4MCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gamsoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDA7CiAgICAgICAgICAgICAgdCA9IFggLSAxNiB8IDAsIFggPSB0LCBrID0gZVtBICsgMTIwID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghaykgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDE5MTIxLCAwKSwgciA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtrICsgMTIgPj4gMl0pIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCAyMjEzNywgMCksIHIgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGsgPSBJW2sgKyAxOCB8IDBdLCBuID0gayA8PCAyLCBuID4+PiAwID4gciA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDE5MDg4LCAwKSwgciA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobiA9IFUyKG4pLCByID0gMCwgIW4pCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoaykKICAgICAgICAgICAgICAgICAgZm9yIChmID0gMDsgciA9IHQgKyAxMiB8IDAsIGgyKGksIHIsIDIpLCBsID0gbiArIChmIDw8IDIpIHwgMCwgdTJbbCA+PiAxXSA9IGVbdCArIDEyID4+IDJdLCBoMihpICsgMiB8IDAsIHIsIDEpLCBGW2wgKyAyIHwgMF0gPSBlW3QgKyAxMiA+PiAyXSwgaDIoaSArIDMgfCAwLCByLCAxKSwgRltsICsgMyB8IDBdID0gZVt0ICsgMTIgPj4gMl0sIGkgPSBpICsgNCB8IDAsIGYgPSBmICsgMSB8IDAsIChrIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGVbZVtBICsgMTIwID4+IDJdICsgMTIgPj4gMl0gPSBuLCByID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSB0ICsgMTYgfCAwLCByIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBDNihBLCBpKSB7CiAgICAgICAgICAgICAgdmFyIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICB0ID0gWCAtIDMyIHwgMCwgWCA9IHQsIHIgPSBlW0EgKyA2MCA+PiAyXTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMTsgayA9IGVbZVtBICsgNjQgPj4gMl0gKyAoZiA8PCAyKSA+PiAyXSwgZVsoZVtlW0EgKyA3NiA+PiAyXSArIDI0ID4+IDJdICsgWihrLCA1MikgfCAwKSArIDQ0ID4+IDJdIHx8IChlW3QgKyAxNiA+PiAyXSA9IGssIFEoaSwgMiwgMTcyNTksIHQgKyAxNiB8IDApLCBuID0gMCwgciA9IGVbQSArIDYwID4+IDJdKSwgZiA9IGYgKyAxIHwgMCwgciA+Pj4gMCA+IGYgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChuID0gMSwgciA9IGVbQSArIDc2ID4+IDJdLCBrID0gMSwgIWVbciArIDE2ID4+IDJdKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGZvciAoOyBlWyhlW3IgKyAyNCA+PiAyXSArIFooZiwgNTIpIHwgMCkgKyA0NCA+PiAyXSB8fCAoZVt0ID4+IDJdID0gZiwgUShpLCAyLCAxNzI1OSwgdCksIG4gPSAwLCByID0gZVtBICsgNzYgPj4gMl0pLCBmID0gZiArIDEgfCAwLCBmID4+PiAwIDwgZFtyICsgMTYgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoayA9IDEsIG4pCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBRKGksIDEsIDQ4NjYsIDApLCBrID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSB0ICsgMzIgfCAwLCBrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIExrKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMDsKICAgICAgICAgICAgICBrID0gWCAtIDE2IHwgMCwgWCA9IGssIG4gPSBlW2VbQSArIDcyID4+IDJdICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKChuICsgMiB8IDApICE9IChyIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCA3NjM4LCAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChoMihpLCBrICsgMTIgfCAwLCAyKSwgZVtrICsgMTIgPj4gMl0gIT0gKG4gfCAwKSkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDc2MzgsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFuKSB7CiAgICAgICAgICAgICAgICAgIHQgPSAxOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChyID0gaSArIDIgfCAwLCBBID0gZVtlW0EgKyA3MiA+PiAyXSArIDI0ID4+IDJdLCBpID0gMDsgOyApIHsKICAgICAgICAgICAgICAgICAgaWYgKGgyKHIsIGsgKyA4IHwgMCwgMSksIHQgPSBlW2sgKyA4ID4+IDJdLCBsID0gdCAmIDEyNywgYSA9IGwgKyAxIHwgMCwgZVtBICsgMjQgPj4gMl0gPSBhLCBlW0EgKyAzMiA+PiAyXSA9IHQgPj4+IDcgJiAxLCBsID4+PiAwID49IDMxKSB7CiAgICAgICAgICAgICAgICAgICAgZVtrICsgNCA+PiAyXSA9IGEsIGVbayA+PiAyXSA9IGksIFEoZiwgMSwgMjczOTcsIGspLCB0ID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChBID0gQSArIDUyIHwgMCwgdCA9IDEsIHIgPSByICsgMSB8IDAsIGkgPSBpICsgMSB8IDAsIChuIHwgMCkgPT0gKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBrICsgMTYgfCAwLCB0IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBPayhBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMDsKICAgICAgICAgICAgICBrID0gWCAtIDE2IHwgMCwgWCA9IGs7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBsID0gayArIDggfCAwOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbZVtBICsgNzIgPj4gMl0gKyAxNiA+PiAyXSA8PSAyNTYpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAtMSwgbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBRKGYsIDEsIDc4MzMsIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDw9IDEpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIHQgPSAtMiwgbiA9IDI7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGgyKGksIGwsIG4pLCBlW2sgKyAxMiA+PiAyXSA9IHIgKyB0LCByID0gZVtrICsgOCA+PiAyXSwgdCA9IGVbZVtBICsgNzIgPj4gMl0gKyAxNiA+PiAyXSwgciA+Pj4gMCA+PSB0ID4+PiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZVtrICsgNCA+PiAyXSA9IHQsIGVbayA+PiAyXSA9IHIsIFEoZiwgMSwgMTczNjcsIGspLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICghZjYoQSwgciwgaSArIG4gfCAwLCBrICsgMTIgfCAwLCBmKSkgewogICAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNzgzMywgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKEEgPSAxLCAhZVtrICsgMTIgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgUShmLCAxLCA3ODMzLCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBRKGYsIDEsIDc4MzMsIDApLCBBID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBrICsgMTYgfCAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBfayhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwOwogICAgICAgICAgICAgIGlmIChmID0gZVtBICsgNDAgPj4gMl0sIGYgPj4+IDAgPj0gMTA5MjIpCiAgICAgICAgICAgICAgICByZXR1cm4gUShyLCAxLCA3MDY3LCAwKSwgMDsKICAgICAgICAgICAgICBpZiAodCA9IGYgPj4+IDAgPCAyNTYsIGVbQSArIDIwID4+IDJdID0gdCwgayA9IGVbQSArIDUyID4+IDJdLCBuID0gWihmLCB0ID8gNSA6IDYpLCBmID0gbiArIDYgfCAwLCBmID4+PiAwID4gZFtBICsgNTYgPj4gMl0pIHsKICAgICAgICAgICAgICAgIGlmIChrID0gbzAoaywgZiksICFrKQogICAgICAgICAgICAgICAgICByZXR1cm4gUihlW0EgKyA1MiA+PiAyXSksIGVbQSArIDUyID4+IDJdID0gMCwgZVtBICsgNTYgPj4gMl0gPSAwLCBRKHIsIDEsIDcxNzIsIDApLCAwOwogICAgICAgICAgICAgICAgZVtBICsgNTYgPj4gMl0gPSBmLCBlW0EgKyA1MiA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBkMihrLCAwLCBmKSwgayA9IGVbQSArIDUyID4+IDJdLCBsID0gZVtpICsgNjAgPj4gMl0sIGVbQSArIDI0ID4+IDJdID0gZVtpICsgNTYgPj4gMl0sIGVbQSArIDI4ID4+IDJdID0gbCwgazIoaywgNjUzNjUsIDIpLCBrMihrICsgMiB8IDAsIG4gKyA0IHwgMCwgMiksIGsyKGsgKyA0IHwgMCwgMCwgMSksIGsyKGsgKyA1IHwgMCwgdCA/IDgwIDogOTYsIDEpLCAoTDAoaSwgZVtBICsgNTIgPj4gMl0sIGYsIHIpIHwgMCkgPT0gKGYgfCAwKSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gRzYoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIG4gPSBYIC0gMTI4IHwgMCwgWCA9IG4sIHQgPSBuLCByID0gZVtpICsgMTIgPj4gMl0gKyAociA8PCA0KSB8IDAsIGsgPSBlW3IgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFrKSB7CiAgICAgICAgICAgICAgICAgIGkgPSByOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICg7IGVbdCA+PiAyXSA9IHIsIHQgPSB0ICsgNCB8IDAsIGkgPSBrLCByID0gaSwgayA9IGVbciA+PiAyXSwgISFrOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZm9yIChrID0gMDsgOyApIHsKICAgICAgICAgICAgICAgIHIgPSBlW2kgKyA4ID4+IDJdLCAoayB8IDApID4gKHIgfCAwKSAmJiAoZVtpICsgOCA+PiAyXSA9IGssIHIgPSBrKTsKICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPj0gKGYgfCAwKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtpICsgNCA+PiAyXSA8PSAociB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoSDEoQSwgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZVtpICsgNCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICByID0gciArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoISgociB8IDApIDwgKGYgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbaSArIDggPj4gMl0gPSByLCAodCB8IDApICE9IChuIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgdCA9IHQgLSA0IHwgMCwgaSA9IGVbdCA+PiAyXSwgayA9IHI7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gbiArIDEyOCB8IDAsIGVbaSArIDQgPj4gMl0gPCAoZiB8IDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFc2KEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBuID0gWCAtIDEyOCB8IDAsIFggPSBuLCB0ID0gbiwgciA9IGVbaSArIDEyID4+IDJdICsgKHIgPDwgNCkgfCAwLCBrID0gZVtyID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghaykgewogICAgICAgICAgICAgICAgICBpID0gcjsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoOyBlW3QgPj4gMl0gPSByLCB0ID0gdCArIDQgfCAwLCBpID0gaywgciA9IGksIGsgPSBlW3IgPj4gMl0sICEhazsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGZvciAoayA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICByID0gZVtpICsgOCA+PiAyXSwgKGsgfCAwKSA+IChyIHwgMCkgJiYgKGVbaSArIDggPj4gMl0gPSBrLCByID0gayk7CiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgIGlmICgociB8IDApID49IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDQgPj4gMl0gPD0gKHIgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaSArIDEyID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgb2UoQSwgMSksIGVbaSArIDEyID4+IDJdID0gMTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChvZShBLCAwKSwgciA9IHIgKyAxIHwgMCwgKGYgfCAwKSA9PSAociB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgciA9IGY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtpICsgOCA+PiAyXSA9IHIsICh0IHwgMCkgIT0gKG4gfCAwKSkgewogICAgICAgICAgICAgICAgICB0ID0gdCAtIDQgfCAwLCBpID0gZVt0ID4+IDJdLCBrID0gcjsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgWCA9IG4gKyAxMjggfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFEoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIGsgPSBYIC0gNTI4IHwgMCwgWCA9IGs7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFBKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOgogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaSAtIDEgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBBICsgMTIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBpID0gQSArIDE2IHwgMCwgQSA9IEEgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpID0gQSArIDIwIHwgMCwgQSA9IEEgKyA4IHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh0ID0gZVtpID4+IDJdLCAhdCB8ICFyKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgbiA9IGVbQSA+PiAyXSwgaSA9IGQyKGssIDAsIDUxMiksIGVbaSArIDUyNCA+PiAyXSA9IGYsIEEgPSBYIC0gMTYwIHwgMCwgWCA9IEEsIGVbQSArIDE0OCA+PiAyXSA9IGksIGVbQSArIDE1MiA+PiAyXSA9IDUxMSwgQSA9IGQyKEEsIDAsIDE0NCksIGVbQSArIDc2ID4+IDJdID0gLTEsIGVbQSArIDM2ID4+IDJdID0gMjYxLCBlW0EgKyA4MCA+PiAyXSA9IC0xLCBlW0EgKyA0NCA+PiAyXSA9IEEgKyAxNTksIGVbQSArIDg0ID4+IDJdID0gQSArIDE0OCwgRltpIHwgMF0gPSAwLCBJaShBLCByLCBmLCAyNTksIDI2MCksIFggPSBBICsgMTYwIHwgMCwgRltpICsgNTExIHwgMF0gPSAwLCBvMlt0IHwgMF0oaSwgbik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFggPSBrICsgNTI4IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBtNihBLCBpKSB7CiAgICAgICAgICAgICAgaWYgKCFBKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoQSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpID4+PiAwIDw9IDEyNykKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW2VbMTI2ODhdID4+IDJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSAmIC0xMjgpID09IDU3MjE2KQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHI7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSAyMDQ3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEZbQSArIDEgfCAwXSA9IGkgJiA2MyB8IDEyOCwgRltBIHwgMF0gPSBpID4+PiA2IHwgMTkyLCBBID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghKChpICYgLTgxOTIpICE9IDU3MzQ0ICYgaSA+Pj4gMCA+PSA1NTI5NikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgRltBICsgMiB8IDBdID0gaSAmIDYzIHwgMTI4LCBGW0EgfCAwXSA9IGkgPj4+IDEyIHwgMjI0LCBGW0EgKyAxIHwgMF0gPSBpID4+PiA2ICYgNjMgfCAxMjgsIEEgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgLSA2NTUzNiA+Pj4gMCA8PSAxMDQ4NTc1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEZbQSArIDMgfCAwXSA9IGkgJiA2MyB8IDEyOCwgRltBIHwgMF0gPSBpID4+PiAxOCB8IDI0MCwgRltBICsgMiB8IDBdID0gaSA+Pj4gNiAmIDYzIHwgMTI4LCBGW0EgKyAxIHwgMF0gPSBpID4+PiAxMiAmIDYzIHwgMTI4LCBBID0gNDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVsxMjQ4NV0gPSAyNSwgQSA9IC0xOwogICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICBBID0gMTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEZbQSB8IDBdID0gaSwgQSA9IDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBBOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGJrKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDAsIGEgPSAwOwogICAgICAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgICAgZm9yICg7IGcxKCtHW0EgPj4gMl0pLCBmID0gVzAoMSkgfCAwLCBrID0gVzAoMCkgfCAwLCB0ID0gayAmIDE2NzExNjgwLCBuID0gdCA+Pj4gOCB8IDAsIGEgPSB0IDw8IDI0LCB0ID0gayAmIC0xNjc3NzIxNiwgZiA9IGEgfCB0IDw8IDggfCAoKChmICYgMjU1KSA8PCAyNCB8IGsgPj4+IDgpICYgLTE2Nzc3MjE2IHwgKChmICYgMTY3NzcyMTUpIDw8IDggfCBrID4+PiAyNCkgJiAxNjcxMTY4MCB8IChmID4+PiA4ICYgNjUyODAgfCBmID4+PiAyNCkpLCBGW2kgfCAwXSA9IGYsIEZbaSArIDEgfCAwXSA9IGYgPj4+IDgsIEZbaSArIDIgfCAwXSA9IGYgPj4+IDE2LCBGW2kgKyAzIHwgMF0gPSBmID4+PiAyNCwgZiA9IG4gfCB0ID4+PiAyNCB8IChrIDw8IDI0IHwgKGsgJiA2NTI4MCkgPDwgOCksIG4gPSAwLCBmID0gZiB8IChuIHwgbiksIEZbaSArIDQgfCAwXSA9IGYsIEZbaSArIDUgfCAwXSA9IGYgPj4+IDgsIEZbaSArIDYgfCAwXSA9IGYgPj4+IDE2LCBGW2kgKyA3IHwgMF0gPSBmID4+PiAyNCwgaSA9IGkgKyA4IHwgMCwgQSA9IEEgKyA0IHwgMCwgbCA9IGwgKyAxIHwgMCwgKGwgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiAkayhBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDA7CiAgICAgICAgICAgICAgdCA9IGVbQSArIDMyID4+IDJdLCBlW0EgKyAzNiA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGsgPSBlW0EgKyA0OCA+PiAyXSwgaykgewogICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IG8yW2VbQSArIDIwID4+IDJdXSh0LCBrLCBlW0EgPj4gMl0pIHwgMCwgKGsgfCAwKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBrICsgZVtBICsgMzYgPj4gMl0gfCAwLCBlW0EgKyAzNiA+PiAyXSA9IHQsIGsgPSBlW0EgKyA0OCA+PiAyXSAtIGsgfCAwLCBlW0EgKyA0OCA+PiAyXSA9IGssICFrKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgdCA9IGVbQSArIDMyID4+IDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGVbQSArIDQ4ID4+IDJdID0gMCwgZVtBICsgMzYgPj4gMl0gPSB0LCBvMltlW0EgKyAyOCA+PiAyXV0oaSwgciwgZVtBID4+IDJdKSB8IDAgPyAoZVtBICsgNTYgPj4gMl0gPSBpLCBlW0EgKyA2MCA+PiAyXSA9IHIsIDEpIDogKGVbQSArIDY4ID4+IDJdID0gZVtBICsgNjggPj4gMl0gfCA4LCAwKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGVbQSArIDY4ID4+IDJdID0gZVtBICsgNjggPj4gMl0gfCA4LCBRKGYsIDQsIDI3NTk5LCAwKSwgZVtBICsgNjggPj4gMl0gPSBlW0EgKyA2OCA+PiAyXSB8IDgsIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcWsoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDA7CiAgICAgICAgICAgICAgaWYgKGYgPSBlW0EgKyA3MiA+PiAyXSwgayA9IGVbZiArIDE2ID4+IDJdLCAhaykKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgIGZvciAobCA9IGVbZVtBICsgMTU2ID4+IDJdICsgNTU4NCA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgaWYgKGVbbCArIDgwOCA+PiAyXSkgewogICAgICAgICAgICAgICAgICAgIGlmIChhID0gZVtlW0EgKyAxNTYgPj4gMl0gKyA1NTg0ID4+IDJdLCB0ID0gZVtBICsgNTIgPj4gMl0sIGsyKHQsIDY1Mzc0LCAyKSwgZiA9IGsgPj4+IDAgPCAyNTcgPyAxIDogMiwgazIodCArIDIgfCAwLCBmIHwgNCwgMiksIGsgPSB0ICsgNCB8IDAsIGsyKGssIG4sIGYpLCB0ID0gMCwgayA9IGYgKyBrIHwgMCwgazIoaywgMCwgMSksIGsyKGsgKyAxIHwgMCwgZVsoWihuLCAxMDgwKSArIGEgfCAwKSArIDgwOCA+PiAyXSwgMSksIGYgPSBmICsgNiB8IDAsIChMMChpLCBlW0EgKyA1MiA+PiAyXSwgZiwgcikgfCAwKSAhPSAoZiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBmID0gZVtBICsgNzIgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGwgPSBsICsgMTA4MCB8IDAsIHQgPSAxLCBrID0gZVtmICsgMTYgPj4gMl0sIG4gPSBuICsgMSB8IDAsIGsgPj4+IDAgPiBuID4+PiAwKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiB0IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBlMyhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFjMChlW0EgKyA4ID4+IDJdLCAxODUsIHIpIHx8ICF3NihlW0EgPj4gMl0sIGksIHIpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgbCA9IGVbQSArIDggPj4gMl0sIGYgPSBlW2wgPj4gMl0sIHQgPSBlW2wgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIWYpIHsKICAgICAgICAgICAgICAgICAgICBrID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChrID0gMSwgYSA9IGYgJiAxLCAoZiB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGYgJiAtMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgcjogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWsgfHwgKG4gPSAwLCAhKG8yW2VbdCA+PiAyXV0oQSwgaSwgcikgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IChvMltlW3QgKyA0ID4+IDJdXShBLCBpLCByKSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IG4sIHQgPSB0ICsgOCB8IDAsIHUgPSB1ICsgMiB8IDAsIChmIHwgMCkgPT0gKHUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGYgPSAhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoayA9IGEgPyAwIDogaywgZiB8ICFhKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGsgPSAobzJbZVt0ID4+IDJdXShBLCBpLCByKSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW2wgPj4gMl0gPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gayB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gaTMoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDA7CiAgICAgICAgICAgICAgaWYgKGVbQSArIDEwMCA+PiAyXSAhPSAxKQogICAgICAgICAgICAgICAgcmV0dXJuIFEoZiwgMSwgMjE5ODAsIDApLCAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChyID4+PiAwIDw9IDcgfHwgKGgyKGksIEEgKyA1NiB8IDAsIDQpLCBoMihpICsgNCB8IDAsIEEgKyA2MCB8IDAsIDQpLCByICYgMykpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICByID0gciAtIDggfCAwLCBrID0gciA+Pj4gMiB8IDAsIGVbQSArIDY0ID4+IDJdID0gazsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIGlmIChyID0gRTIoaywgNCksIGVbQSArIDY4ID4+IDJdID0gciwgIXIpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFEoZiwgMSwgNDExNiwgMCksIDA7CiAgICAgICAgICAgICAgICAgIGlmICghZVtBICsgNjQgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZm9yIChmID0gaSArIDggfCAwLCByID0gMDsgaDIoZiwgZVtBICsgNjggPj4gMl0gKyAociA8PCAyKSB8IDAsIDQpLCBmID0gZiArIDQgfCAwLCByID0gciArIDEgfCAwLCByID4+PiAwIDwgZFtBICsgNjQgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZVtBICsgMTAwID4+IDJdID0gZVtBICsgMTAwID4+IDJdIHwgMiwgMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFEoZiwgMSwgOTg5NiwgMCksIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcjMoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBrID0gWCAtIDE2IHwgMCwgWCA9IGssIGVbayArIDEyID4+IDJdID0gcjsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoISghZjYoQSwgMCwgaSwgayArIDEyIHwgMCwgZikgfCBlW2sgKyAxMiA+PiAyXSkpIHsKICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gPT0gMTYgPyBpID0gZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCA6IGkgPSBlW0EgKyAxMiA+PiAyXSwgdCA9IDEsIGRbZVtBICsgNzIgPj4gMl0gKyAxNiA+PiAyXSA8IDIpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZm9yIChyID0gZVtpICsgNTU4NCA+PiAyXSwgbiA9IHIgKyAyOCB8IDAsIGkgPSAxLCBmID0gcjsgZVtmICsgMTEwNCA+PiAyXSA9IGVbciArIDI0ID4+IDJdLCBlW2YgKyAxODg0ID4+IDJdID0gZVtyICsgODA0ID4+IDJdLCBGMihmICsgMTEwOCB8IDAsIG4sIDc3NiksIGYgPSBmICsgMTA4MCB8IDAsIGkgPSBpICsgMSB8IDAsIGkgPj4+IDAgPCBkW2VbQSArIDcyID4+IDJdICsgMTYgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBRKGYsIDEsIDc1NzMsIDApOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGsgKyAxNiB8IDAsIHQgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFppKEEpIHsKICAgICAgICAgICAgICB2YXIgaSA9IDAsIHIgPSAwLCBmID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIUEgfHwgKGkgPSBlW0EgKyA4ID4+IDJdLCAhaSkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoQSA9IGVbQSArIDEyID4+IDJdLCBpID4+PiAwID49IDQpCiAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGkgJiAtNDsgZVtBICsgNjAgPj4gMl0gPSAwLCBlW0EgKyA1MiA+PiAyXSA9IDk5OSwgZVtBICsgNTYgPj4gMl0gPSAwLCBlW0EgKyA0NCA+PiAyXSA9IDAsIGVbQSArIDM2ID4+IDJdID0gOTk5LCBlW0EgKyA0MCA+PiAyXSA9IDAsIGVbQSArIDI4ID4+IDJdID0gMCwgZVtBICsgMjAgPj4gMl0gPSA5OTksIGVbQSArIDI0ID4+IDJdID0gMCwgZVtBICsgMTIgPj4gMl0gPSAwLCBlW0EgKyA0ID4+IDJdID0gOTk5LCBlW0EgKyA4ID4+IDJdID0gMCwgQSA9IEEgLSAtNjQgfCAwLCByID0gciArIDQgfCAwLCAoZiB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAoaSA9IGkgJiAzLCAhaSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGZvciAociA9IDA7IGVbQSArIDEyID4+IDJdID0gMCwgZVtBICsgNCA+PiAyXSA9IDk5OSwgZVtBICsgOCA+PiAyXSA9IDAsIEEgPSBBICsgMTYgfCAwLCByID0gciArIDEgfCAwLCAoaSB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBmMyhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDAsIGwgPSAwLCBhID0gMCwgdSA9IDA7CiAgICAgICAgICAgICAgaWYgKCFjMChlW0EgKyA4ID4+IDJdLCAxODQsIHIpKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgbCA9IGVbQSArIDggPj4gMl0sIGYgPSBlW2wgPj4gMl0sIHQgPSBlW2wgKyA4ID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChmKSB7CiAgICAgICAgICAgICAgICAgIGlmIChrID0gMSwgYSA9IGYgJiAxLCAoZiB8IDApID09IDEpCiAgICAgICAgICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IGYgJiAtMjsgOyApIHsKICAgICAgICAgICAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWsgfHwgKG4gPSAwLCAhKG8yW2VbdCA+PiAyXV0oQSwgaSwgcikgfCAwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IChvMltlW3QgKyA0ID4+IDJdXShBLCBpLCByKSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9IG4sIHQgPSB0ICsgOCB8IDAsIHUgPSB1ICsgMiB8IDAsIChmIHwgMCkgPT0gKHUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGYgPSAhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoayA9IGEgPyAwIDogaywgZiB8ICFhIHx8IChrID0gKG8yW2VbdCA+PiAyXV0oQSwgaSwgcikgfCAwKSAhPSAwKSwgZVtsID4+IDJdID0gMCwgaykKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVbbCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEEzKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwLCB0ID0gMCwgbiA9IDA7CiAgICAgICAgICAgICAgayA9IFggLSAxNiB8IDAsIFggPSBrLCBuID0gZVtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdLCB0ID0gbiA+Pj4gMCA8IDI1NyA/IDEgOiAyOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICgodCArIDIgfCAwKSAhPSAociB8IDApKSB7CiAgICAgICAgICAgICAgICAgIEEgPSAwLCBRKGYsIDEsIDY5MzQsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVbQSArIDggPj4gMl0gPT0gMTYgPyByID0gZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCA6IHIgPSBlW0EgKyAxMiA+PiAyXSwgaDIoaSwgayArIDEyIHwgMCwgdCksIEEgPSAxLCBpID0gaSArIHQgfCAwLCBoMihpLCBrICsgOCB8IDAsIDEpLCB0ID0gZVtrICsgMTIgPj4gMl0sIHQgPj4+IDAgPj0gbiA+Pj4gMCkgewogICAgICAgICAgICAgICAgICBlW2sgKyA0ID4+IDJdID0gbiwgZVtrID4+IDJdID0gdCwgUShmLCAxLCAyNjQ2NCwgayksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaDIoaSArIDEgfCAwLCAoZVtyICsgNTU4NCA+PiAyXSArIFoodCwgMTA4MCkgfCAwKSArIDgwOCB8IDAsIDEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGsgKyAxNiB8IDAsIEEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGszKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMDsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMDsKICAgICAgICAgICAgICBpZiAodCA9IFooRzJbZVtBICsgMTE2ID4+IDJdICsgNCA+PiAxXSwgNikgKyAxMCB8IDAsIHIgPSBVMih0KSwgcikgewogICAgICAgICAgICAgICAgaWYgKGsyKHIsIHQsIDQpLCBrMihyICsgNCB8IDAsIDE2Njc1MjM5NDIsIDQpLCBrMihyICsgOCB8IDAsIEcyW2VbQSArIDExNiA+PiAyXSArIDQgPj4gMV0sIDIpLCBrID0gZVtBICsgMTE2ID4+IDJdLCBHMltrICsgNCA+PiAxXSkKICAgICAgICAgICAgICAgICAgZm9yIChmID0gciArIDEwIHwgMDsgbCA9IFoobiwgNiksIGsyKGYsIEcyW2wgKyBlW2sgPj4gMl0gPj4gMV0sIDIpLCBrMihmICsgMiB8IDAsIEcyWyhlW2VbQSArIDExNiA+PiAyXSA+PiAyXSArIGwgfCAwKSArIDIgPj4gMV0sIDIpLCBrMihmICsgNCB8IDAsIEcyWyhlW2VbQSArIDExNiA+PiAyXSA+PiAyXSArIGwgfCAwKSArIDQgPj4gMV0sIDIpLCBmID0gZiArIDYgfCAwLCBuID0gbiArIDEgfCAwLCBrID0gZVtBICsgMTE2ID4+IDJdLCBuID4+PiAwIDwgRzJbayArIDQgPj4gMV07ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBlW2kgPj4gMl0gPSB0OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gciB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24geTYoQSwgaSkgewogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IGVbQSArIDQgPj4gMl0sIChmIHwgMCkgPT0gMjE0NzQ4MzY0NykKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIGlmIChyID0gZVtBID4+IDJdLCAoZiB8IDApID4gMCkKICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICBpZiAodCA9IHIgKyBaKGssIDEyKSB8IDAsICFlW3QgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYgPSBlW3QgKyA4ID4+IDJdLCBmICYmIChvMltmIHwgMF0oZVt0ICsgNCA+PiAyXSksIHIgPSBlW0EgPj4gMl0pLCBBID0gWihrLCAxMikgKyByIHwgMCwgZVtBICsgOCA+PiAyXSA9IDI1MCwgZVtBICsgNCA+PiAyXSA9IGksIDE7CiAgICAgICAgICAgICAgICAgIGlmIChrID0gayArIDEgfCAwLCAoZiB8IDApID09IChrIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHIgPSBvMChyLCBaKGYsIDEyKSArIDEyIHwgMCksIHIgPyAoZVtBID4+IDJdID0gciwgZiA9IGVbQSArIDQgPj4gMl0sIHIgPSByICsgWihmLCAxMikgfCAwLCBlW3IgKyA4ID4+IDJdID0gMjUwLCBlW3IgKyA0ID4+IDJdID0gaSwgZVtyID4+IDJdID0gMCwgZVtBICsgNCA+PiAyXSA9IGYgKyAxLCAxKSA6IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZzAoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyAxNiA+PiAyXSwgciA9IElbaSB8IDBdLCAociB8IDApID09IDI1NSkgewogICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gaSArIDEsIEZbaSArIDEgfCAwXSA9IGVbQSA+PiAyXSA+Pj4gMjA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmID0gZVtBID4+IDJdOwogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoZiAmIDEzNDIxNzcyOCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gaSArIDEsIEZbaSArIDEgfCAwXSA9IGYgPj4+IDE5OwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKEZbaSB8IDBdID0gciArIDEsIGkgPSBlW0EgKyAxNiA+PiAyXSwgSVtpIHwgMF0gPT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgICBlW0EgKyAxNiA+PiAyXSA9IGkgKyAxLCByID0gZVtBID4+IDJdICYgMTM0MjE3NzI3LCBlW0EgPj4gMl0gPSByLCBGW2kgKyAxIHwgMF0gPSByID4+PiAyMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVbQSArIDE2ID4+IDJdID0gaSArIDEsIEZbaSArIDEgfCAwXSA9IGVbQSA+PiAyXSA+Pj4gMTk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgciA9IDgsIGkgPSA1MjQyODc7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByID0gNywgaSA9IDEwNDg1NzU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSByLCBlW0EgPj4gMl0gPSBlW0EgPj4gMl0gJiBpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGIxKEEsIGksIHIpIHsKICAgICAgICAgICAgICB2YXIgZiA9IDA7CiAgICAgICAgICAgICAgaWYgKCFlW0EgKyAxMiA+PiAyXSkgewogICAgICAgICAgICAgICAgbzJbaSB8IDBdKHIsIGVbQSArIDM2ID4+IDJdKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGYgPSBVMig4KSwgZikgewogICAgICAgICAgICAgICAgaWYgKGVbZiArIDQgPj4gMl0gPSByLCBlW2YgPj4gMl0gPSBpLCBpID0gVTIoOCksICFpKSB7CiAgICAgICAgICAgICAgICAgIFIoZik7CiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlW2kgPj4gMl0gPSBmLCByID0gWihlW0EgKyA0ID4+IDJdLCAxMDApLCBlW0EgKyA0MCA+PiAyXSA9IHIsIChyIHwgMCkgPCBlW0EgKyAyNCA+PiAyXSkKICAgICAgICAgICAgICAgICAgZm9yICg7IGVbQSArIDQwID4+IDJdIDwgZVtBICsgMjQgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBlW2kgKyA0ID4+IDJdID0gZVtBICsgMjAgPj4gMl0sIGVbQSArIDIwID4+IDJdID0gaSwgZVtBICsgMjQgPj4gMl0gPSBlW0EgKyAyNCA+PiAyXSArIDEsIGkgPSBlW0EgKyAyOCA+PiAyXSwgaSAmJiAoZVtlW2kgPj4gMl0gKyA4ID4+IDJdID0gMCwgZVtBICsgMjggPj4gMl0gPSBlW2kgKyA0ID4+IDJdLCBlW0EgKyAzMiA+PiAyXSA9IGVbQSArIDMyID4+IDJdIC0gMSwgUihpKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGhyKEEsIGksIHIpIHsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICBmID0gZVtyICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFmKSB7CiAgICAgICAgICAgICAgICAgIGlmICh2cihyKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBmID0gZVtyICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoayA9IGVbciArIDIwID4+IDJdLCBmIC0gayA+Pj4gMCA8IGkgPj4+IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiBvMltlW3IgKyAzNiA+PiAyXV0ociwgQSwgaSkgfCAwOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICByOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpIHwgZVtyICsgODAgPj4gMl0gPCAwKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICBmb3IgKGYgPSBpOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBBICsgZiB8IDAsIElbdCAtIDEgfCAwXSAhPSAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGYgLSAxIHwgMCwgZikKICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoayA9IG8yW2VbciArIDM2ID4+IDJdXShyLCBBLCBmKSB8IDAsIGsgPj4+IDAgPCBmID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpID0gaSAtIGYgfCAwLCBrID0gZVtyICsgMjAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB0ID0gQSwgZiA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBGMihrLCB0LCBpKSwgZVtyICsgMjAgPj4gMl0gPSBlW3IgKyAyMCA+PiAyXSArIGksIGsgPSBpICsgZiB8IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG4zKCkgewogICAgICAgICAgICAgIHZhciBBID0gMCwgaSA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBfMigxMTIpLCBlW0EgPj4gMl0gPSAwLCBlW0EgKyA0ID4+IDJdID0gMCwgZVtBICsgNTYgPj4gMl0gPSAwLCBlW0EgKyA2MCA+PiAyXSA9IDAsIGVbQSArIDQ4ID4+IDJdID0gMCwgZVtBICsgNTIgPj4gMl0gPSAyLCBlW0EgKyA0MCA+PiAyXSA9IDAsIGVbQSArIDQ0ID4+IDJdID0gMCwgRltBICsgMzYgfCAwXSA9IDEsIGVbQSArIDMyID4+IDJdID0gNSwgZVtBICsgMTA4ID4+IDJdID0gMCwgZVtBICsgMTAwID4+IDJdID0gMCwgZVtBICsgMTA0ID4+IDJdID0gMCwgZVtBICsgOTIgPj4gMl0gPSA2NCwgZVtBICsgOTYgPj4gMl0gPSA2NCwgZVtBICsgMTYgPj4gMl0gPSAwLCBlW0EgKyAyMCA+PiAyXSA9IDAsIGVbQSArIDggPj4gMl0gPSAwLCBlW0EgKyAxMiA+PiAyXSA9IDAsIGkgPSBBIC0gLTY0IHwgMCwgZVtpID4+IDJdID0gMCwgZVtpICsgNCA+PiAyXSA9IDAsIGVbQSArIDcyID4+IDJdID0gMCwgZVtBICsgNzYgPj4gMl0gPSAwLCBlW0EgKyA4MCA+PiAyXSA9IDAsIGVbQSArIDg0ID4+IDJdID0gMCwgZVtBICsgODggPj4gMl0gPSAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB0MyhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDA7CiAgICAgICAgICAgICAgaWYgKGsyKGVbQSArIDUyID4+IDJdLCA2NTQ5NywgMiksIChMMChpLCBlW0EgKyA1MiA+PiAyXSwgMiwgcikgfCAwKSA9PSAyKSB7CiAgICAgICAgICAgICAgICBBID0gZVtpICsgMzIgPj4gMl0sIGVbaSArIDM2ID4+IDJdID0gQSwgZiA9IGVbaSArIDQ4ID4+IDJdOwogICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICBpZiAoZikgewogICAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBvMltlW2kgKyAyMCA+PiAyXV0oQSwgZiwgZVtpID4+IDJdKSB8IDAsIChmIHwgMCkgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZVtpICsgNjggPj4gMl0gPSBlW2kgKyA2OCA+PiAyXSB8IDgsIFEociwgNCwgMjc1OTksIDApLCBBID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChBID0gZiArIGVbaSArIDM2ID4+IDJdIHwgMCwgZVtpICsgMzYgPj4gMl0gPSBBLCBmID0gZVtpICsgNDggPj4gMl0gLSBmIHwgMCwgZVtpICsgNDggPj4gMl0gPSBmLCAhZikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEEgPSBlW2kgKyAzMiA+PiAyXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW2kgKyAzNiA+PiAyXSA9IEEsIEEgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgQSA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIEEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGwzKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBrID0gRzJbaSArIDI2ID4+IDFdLCBpID0gRzJbaSArIDI0ID4+IDFdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIHQgPSByICYgMzsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKCF0KSB7CiAgICAgICAgICAgICAgICAgICAgZiA9IHI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmb3IgKGYgPSByOyBmID0gZiAtIDEgfCAwLCBrID0gayArIDEgPj4+IDEgfCAwLCBpID0gaSArIDEgPj4+IDEgfCAwLCBuID0gbiArIDEgfCAwLCAodCB8IDApICE9IChuIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8IDQpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKDsgayA9ICgoKGsgKyAxID4+PiAxIHwgMCkgKyAxID4+PiAxIHwgMCkgKyAxID4+PiAxIHwgMCkgKyAxID4+PiAxIHwgMCwgaSA9ICgoKGkgKyAxID4+PiAxIHwgMCkgKyAxID4+PiAxIHwgMCkgKyAxID4+PiAxIHwgMCkgKyAxID4+PiAxIHwgMCwgZiA9IGYgLSA0IHwgMCwgISFmOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZVtBID4+IDJdID0gaSwgZVtBICsgNCA+PiAyXSA9IGs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gYTMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIGlmIChrID0gKGVbQSArIDY0ID4+IDJdIDw8IDIpICsgMTYgfCAwLCBmID0gRTIoMSwgayksICFmKQogICAgICAgICAgICAgICAgcmV0dXJuIFEociwgMSwgMTc5OTcsIDApLCAwOwogICAgICAgICAgICAgIGlmIChrMihmLCBrLCA0KSwgazIoZiArIDQgfCAwLCAxNzE4OTA5Mjk2LCA0KSwgazIoZiArIDggfCAwLCBlW0EgKyA1NiA+PiAyXSwgNCksIGsyKGYgKyAxMiB8IDAsIGVbQSArIDYwID4+IDJdLCA0KSwgZVtBICsgNjQgPj4gMl0pCiAgICAgICAgICAgICAgICBmb3IgKG4gPSBmICsgMTYgfCAwOyBrMihuLCBlW2VbQSArIDY4ID4+IDJdICsgKHQgPDwgMikgPj4gMl0sIDQpLCB0ID0gdCArIDEgfCAwLCB0ID4+PiAwIDwgZFtBICsgNjQgPj4gMl07ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIHJldHVybiBBID0gKEwwKGksIGYsIGssIHIpIHwgMCkgPT0gKGsgfCAwKSwgQSB8fCBRKHIsIDEsIDkyMDUsIDApLCBSKGYpLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBwNihBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDA7CiAgICAgICAgICAgICAgZVtBICsgMTYwID4+IDJdID0gaSwgZiA9IGVbQSArIDcyID4+IDJdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghZiB8fCAodCA9IGVbZiArIDI0ID4+IDJdLCAhdCkgfHwgKGsgPSBlW0EgKyAxMiA+PiAyXSwgIWsgfCAhZVtrICsgNTU4NCA+PiAyXSkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoayA9IGVbZiArIDE2ID4+IDJdLCAhaykKICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICBmb3IgKGYgPSAwOyA7ICkgewogICAgICAgICAgICAgICAgICBpZiAoZFsoZVtlW0EgKyAxMiA+PiAyXSArIDU1ODQgPj4gMl0gKyBaKGYsIDEwODApIHwgMCkgKyA0ID4+IDJdIDw9IGkgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFEociwgMSwgMTk0NjIsIDApLCAwOwogICAgICAgICAgICAgICAgICBpZiAoZVsoWihmLCA1MikgKyB0IHwgMCkgKyA0MCA+PiAyXSA9IGksIG4gPSAxLCBmID0gZiArIDEgfCAwLCAoayB8IDApID09IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBuIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB1MyhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICB0ID0gWCAtIDE2IHwgMCwgWCA9IHQsIGYgPSBlW0EgKyA1MiA+PiAyXSwgayA9IFooZVsoZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCkgKyA0MjAgPj4gMl0gKyAxIHwgMCwgZFtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdIDwgMjU3ID8gNyA6IDkpICsgNCB8IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGsgPj4+IDAgPiBkW0EgKyA1NiA+PiAyXSkgewogICAgICAgICAgICAgICAgICBpZiAoZiA9IG8wKGYsIGspLCAhZikgewogICAgICAgICAgICAgICAgICAgIFIoZVtBICsgNTIgPj4gMl0pLCBlW0EgKyA1MiA+PiAyXSA9IDAsIGVbQSArIDU2ID4+IDJdID0gMCwgUShyLCAxLCA3NzI5LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW0EgKyA1NiA+PiAyXSA9IGssIGVbQSArIDUyID4+IDJdID0gZjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGg2KEEsIGYsIHQgKyAxMiB8IDApLCBBID0gKEwwKGksIGVbQSArIDUyID4+IDJdLCBrLCByKSB8IDApID09IChrIHwgMCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gdCArIDE2IHwgMCwgQSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUTYoKSB7CiAgICAgICAgICAgICAgdmFyIEEgPSAwLCBpID0gMDsKICAgICAgICAgICAgICBpID0gdTJbMjM3ODBdOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICBlWzEyNDg1XSA9IDI4LCBBID0gLTE7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIHI6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA+IC0yKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICBBID0gMjAwODA5OwogICAgICAgICAgICAgICAgICAgIGs6CiAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKChpICYgMjU1KSAtIDEgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gMTMxMDcyOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gMzI3Njg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSA2NTUzNjsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IDIxNDc0ODM2NDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IFlBKCkgPj4+IDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgcjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBBID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIEEgPSBpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gQTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBWNihBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMDsKICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDc2ID4+IDJdLCAhKChpIHwgMCkgPj0gMCAmICghaSB8IGVbMTI2NzBdICE9IChpICYgMTA3Mzc0MTgyMykpKSkgewogICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICBpZiAoZVtBICsgODAgPj4gMl0gPT0gMTAgfHwgKGkgPSBlW0EgKyAyMCA+PiAyXSwgKGkgfCAwKSA9PSBlW0EgKyAxNiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZVtBICsgMjAgPj4gMl0gPSBpICsgMSwgRltpIHwgMF0gPSAxMDsKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQnIoQSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGkgPSBBICsgNzYgfCAwLCByID0gZVtpID4+IDJdLCBlW2kgPj4gMl0gPSByIHx8IDEwNzM3NDE4MjM7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoZVtBICsgODAgPj4gMl0gPT0gMTAgfHwgKHIgPSBlW0EgKyAyMCA+PiAyXSwgKHIgfCAwKSA9PSBlW0EgKyAxNiA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZVtBICsgMjAgPj4gMl0gPSByICsgMSwgRltyIHwgMF0gPSAxMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEJyKEEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlW2kgPj4gMl0gPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG8zKEEsIGksIHIsIGYsIGspIHsKICAgICAgICAgICAgICBpZiAoQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBrID0gayB8IDAsIHQxKEEsIGVbaSArIDggPj4gMl0sIGspKSB7CiAgICAgICAgICAgICAgICBlW2kgKyAyOCA+PiAyXSA9PSAxIHwgZVtpICsgNCA+PiAyXSAhPSAociB8IDApIHx8IChlW2kgKyAyOCA+PiAyXSA9IGYpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIXQxKEEsIGVbaSA+PiAyXSwgaykpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoIShlW2kgKyAxNiA+PiAyXSAhPSAociB8IDApICYgZVtpICsgMjAgPj4gMl0gIT0gKHIgfCAwKSkpIHsKICAgICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBlW2kgKyAzMiA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVbaSArIDIwID4+IDJdID0gciwgZVtpICsgMzIgPj4gMl0gPSBmLCBlW2kgKyA0MCA+PiAyXSA9IGVbaSArIDQwID4+IDJdICsgMSwgZVtpICsgMzYgPj4gMl0gIT0gMSB8IGVbaSArIDI0ID4+IDJdICE9IDIgfHwgKEZbaSArIDU0IHwgMF0gPSAxKSwgZVtpICsgNDQgPj4gMl0gPSA0OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB6ZShBLCBpLCByKSB7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDA7CiAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPiAwKQogICAgICAgICAgICAgICAgZm9yIChrID0gZVtBICsgMTIgPj4gMl0sIGYgPSBlW0EgKyAxNiA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgICAgbCA9IHIsIHIgPSByIC0gMSB8IDAsIGEgPSBpID4+PiByICYgMTsKICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgIGlmIChmKSB7CiAgICAgICAgICAgICAgICAgICAgICB0ID0gazsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gayA8PCA4ICYgNjUyODAsIGVbQSArIDEyID4+IDJdID0gdCwgZiA9ICh0IHwgMCkgPT0gNjUyODAgPyA3IDogOCwgZVtBICsgMTYgPj4gMl0gPSBmLCBuID0gZVtBICsgOCA+PiAyXSwgbiA+Pj4gMCA+PSBkW0EgKyA0ID4+IDJdKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBlW0EgKyA4ID4+IDJdID0gbiArIDEsIEZbbiB8IDBdID0gaywgdCA9IGVbQSArIDEyID4+IDJdLCBmID0gZVtBICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGYgPSBmIC0gMSB8IDAsIGVbQSArIDE2ID4+IDJdID0gZiwgayA9IGEgPDwgZiB8IHQsIGVbQSArIDEyID4+IDJdID0gaywgIShsID4+PiAwID4gMSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZzMoQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDA7CiAgICAgICAgICAgICAgaWYgKHIgPSBlW0EgKyAzMiA+PiAyXSwgaSA9IGVbQSArIDI4ID4+IDJdLCByID4+PiAwID4gaSArIDcgPj4+IDApCiAgICAgICAgICAgICAgICBmb3IgKDsgbzJbZVtBICsgMzYgPj4gMl1dKGVbQSArIDI0ID4+IDJdICsgKGkgPDwgMikgfCAwLCBlW0EgPj4gMl0sIGVbQSArIDE2ID4+IDJdLCAhZVtBICsgMTIgPj4gMl0sIGVbQSArIDIwID4+IDJdLCA4KSwgZiA9IGkgKyAxNSB8IDAsIGkgPSBpICsgOCB8IDAsIHIgPSBlW0EgKyAzMiA+PiAyXSwgZiA+Pj4gMCA8IHIgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIGkgPj4+IDAgPCByID4+PiAwICYmIG8yW2VbQSArIDM2ID4+IDJdXShlW0EgKyAyNCA+PiAyXSArIChpIDw8IDIpIHwgMCwgZVtBID4+IDJdLCBlW0EgKyAxNiA+PiAyXSwgIWVbQSArIDEyID4+IDJdLCBlW0EgKyAyMCA+PiAyXSwgciAtIGkgfCAwKSwgUihlW0EgPj4gMl0pLCBSKEEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIENpKEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMDsKICAgICAgICAgICAgICBpZiAoQSkgewogICAgICAgICAgICAgICAgaWYgKHIgPSBlW0EgKyA0ID4+IDJdLCByICYmIChSKHIpLCBlW0EgKyA0ID4+IDJdID0gMCksIGkpCiAgICAgICAgICAgICAgICAgIGZvciAociA9IEE7IDsgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBlW3IgKyAyMDAgPj4gMl0sIGYpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChrID0gMCwgdCA9IGVbciArIDE5NiA+PiAyXSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbiA9IGVbZiArIDEyID4+IDJdLCBuICYmIChSKG4pLCBlW2YgKyAxMiA+PiAyXSA9IDAsIHQgPSBlW3IgKyAxOTYgPj4gMl0pLCBmID0gZiArIDE2IHwgMCwgayA9IGsgKyAxIHwgMCwgayA+Pj4gMCA8IHQgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlW3IgKyAyMDAgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBSKGYpLCBlW3IgKyAyMDAgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAociA9IHIgKyAyNDAgfCAwLCBsID0gbCArIDEgfCAwLCAobCB8IDApID09IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgUihBKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gazIoQSwgaSwgcikgewogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDA7CiAgICAgICAgICAgICAgZiA9IFggLSAxNiB8IDAsIGVbZiArIDEyID4+IDJdID0gaTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBpZiAoayA9IHIgJiAzLCBpID0gKGYgKyAxMiB8IDApICsgciB8IDAsIHIgPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgZm9yIChmID0gciAmIC00LCByID0gMDsgRltBIHwgMF0gPSBJW2kgLSAxIHwgMF0sIEZbQSArIDEgfCAwXSA9IElbaSAtIDIgfCAwXSwgRltBICsgMiB8IDBdID0gSVtpIC0gMyB8IDBdLCBpID0gaSAtIDQgfCAwLCBGW0EgKyAzIHwgMF0gPSBJW2kgfCAwXSwgQSA9IEEgKyA0IHwgMCwgciA9IHIgKyA0IHwgMCwgKGYgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgaWYgKCFrKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yIChyID0gMDsgaSA9IGkgLSAxIHwgMCwgRltBIHwgMF0gPSBJW2kgfCAwXSwgQSA9IEEgKyAxIHwgMCwgciA9IHIgKyAxIHwgMCwgKGsgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gaDMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMDsKICAgICAgICAgICAgICByZXR1cm4gayA9IGVbQSArIDg0ID4+IDJdLCB0ID0gZVtrID4+IDJdLCBmID0gZVtrICsgNCA+PiAyXSwgbCA9IGVbQSArIDI4ID4+IDJdLCBuID0gZVtBICsgMjAgPj4gMl0gLSBsIHwgMCwgbiA9IGYgPj4+IDAgPCBuID4+PiAwID8gZiA6IG4sIG4gJiYgKEYyKHQsIGwsIG4pLCB0ID0gbiArIGVbayA+PiAyXSB8IDAsIGVbayA+PiAyXSA9IHQsIGYgPSBlW2sgKyA0ID4+IDJdIC0gbiB8IDAsIGVbayArIDQgPj4gMl0gPSBmKSwgZiA9IHIgPj4+IDAgPiBmID4+PiAwID8gZiA6IHIsIGYgJiYgKEYyKHQsIGksIGYpLCB0ID0gZiArIGVbayA+PiAyXSB8IDAsIGVbayA+PiAyXSA9IHQsIGVbayArIDQgPj4gMl0gPSBlW2sgKyA0ID4+IDJdIC0gZiksIEZbdCB8IDBdID0gMCwgaSA9IGVbQSArIDQ0ID4+IDJdLCBlW0EgKyAyOCA+PiAyXSA9IGksIGVbQSArIDIwID4+IDJdID0gaSwgciB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gczMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBmID0gWCArIC02NCB8IDAsIFggPSBmLCBrID0gMTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAodDEoQSwgaSwgMCkgfHwgKGsgPSAwLCAhaSkgfHwgKGkgPSBtMShpLCA0ODU3NiksIGsgPSAwLCAhaSkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBkMihmICsgOCB8IDAsIDAsIDU2KSwgRltmICsgNTkgfCAwXSA9IDEsIGVbZiArIDE2ID4+IDJdID0gLTEsIGVbZiArIDEyID4+IDJdID0gQSwgZVtmICsgNCA+PiAyXSA9IGksIGVbZiArIDUyID4+IDJdID0gMSwgbzJbZVtlW2kgPj4gMl0gKyAyOCA+PiAyXV0oaSwgZiArIDQgfCAwLCBlW3IgPj4gMl0sIDEpLCBBID0gZVtmICsgMjggPj4gMl0sIChBIHwgMCkgPT0gMSAmJiAoZVtyID4+IDJdID0gZVtmICsgMjAgPj4gMl0pLCBrID0gKEEgfCAwKSA9PSAxOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gQSA9IGssIFggPSBmIC0gLTY0IHwgMCwgQSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gWTYoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEZbQSArIDUzIHwgMF0gPSAxOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChlW0EgKyA0ID4+IDJdICE9IChyIHwgMCkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBGW0EgKyA1MiB8IDBdID0gMSwgciA9IGVbQSArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoIXIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMzYgPj4gMl0gPSAxLCBlW0EgKyAyNCA+PiAyXSA9IGYsIGVbQSArIDE2ID4+IDJdID0gaSwgKGYgfCAwKSAhPSAxKQogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICBpZiAoZVtBICsgNDggPj4gMl0gPT0gMSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA9PSAociB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBlW0EgKyAyNCA+PiAyXSwgKHIgfCAwKSA9PSAyICYmIChlW0EgKyAyNCA+PiAyXSA9IGYsIHIgPSBmKSwgZVtBICsgNDggPj4gMl0gIT0gMSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlW0EgKyAzNiA+PiAyXSA9IGVbQSArIDM2ID4+IDJdICsgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEZbQSArIDU0IHwgMF0gPSAxOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBINihBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMDsKICAgICAgICAgICAgICBpID0gZVtBICsgNDQgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKHIgPSBlW0EgKyAzNiA+PiAyXSwgcikgewogICAgICAgICAgICAgICAgICBpZiAoaSA+Pj4gMCA8PSBkW0EgKyA0OCA+PiAyXSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDQwID4+IDJdKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gciA9IFAwKGkpLCBlW0EgKyAzNiA+PiAyXSA9IHIsIGkgPSBlW0EgKyA0NCA+PiAyXSwgIWkgfCByID8gKGVbQSArIDQwID4+IDJdID0gMSwgZVtBICsgNDggPj4gMl0gPSBpLCAxKSA6IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBSKHIpLCBpID0gUDAoZVtBICsgNDQgPj4gMl0pLCBlW0EgKyAzNiA+PiAyXSA9IGksIGkgPyAoZVtBICsgNDAgPj4gMl0gPSAxLCBlW0EgKyA0OCA+PiAyXSA9IGVbQSArIDQ0ID4+IDJdLCAxKSA6IChlW0EgKyA0OCA+PiAyXSA9IDAsIGVbQSArIDQwID4+IDJdID0gMCwgZVtBICsgNDQgPj4gMl0gPSAwLCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBzcihBKSB7CiAgICAgICAgICAgICAgZVtBICsgMTAwID4+IDJdID0gMzU5NjgsIGVbQSArIDk2ID4+IDJdID0gMzU5NjgsIGVbQSArIDkyID4+IDJdID0gMzU5NjgsIGVbQSArIDg4ID4+IDJdID0gMzU5NjgsIGVbQSArIDg0ID4+IDJdID0gMzU5NjgsIGVbQSArIDgwID4+IDJdID0gMzU5NjgsIGVbQSArIDc2ID4+IDJdID0gMzU5NjgsIGVbQSArIDcyID4+IDJdID0gMzU5NjgsIGVbQSArIDY4ID4+IDJdID0gMzU5NjgsIGVbQSArIDY0ID4+IDJdID0gMzU5NjgsIGVbQSArIDYwID4+IDJdID0gMzU5NjgsIGVbQSArIDU2ID4+IDJdID0gMzU5NjgsIGVbQSArIDUyID4+IDJdID0gMzU5NjgsIGVbQSArIDQ4ID4+IDJdID0gMzU5NjgsIGVbQSArIDQ0ID4+IDJdID0gMzU5NjgsIGVbQSArIDQwID4+IDJdID0gMzU5NjgsIGVbQSArIDM2ID4+IDJdID0gMzU5NjgsIGVbQSArIDMyID4+IDJdID0gMzU5NjgsIGVbQSArIDI4ID4+IDJdID0gMzU5Njg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gSDEoQSwgaSkgewogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgZm9yIChyID0gZVtBICsgMTIgPj4gMl0sIGYgPSBlW0EgKyAxNiA+PiAyXTsgOyApIHsKICAgICAgICAgICAgICAgIGsgPSBpOwogICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICBpZiAoZiB8fCAociA9IHIgPDwgOCAmIDY1MjgwLCBlW0EgKyAxMiA+PiAyXSA9IHIsIGYgPSAociB8IDApID09IDY1MjgwID8gNyA6IDgsIGVbQSArIDE2ID4+IDJdID0gZiwgaSA9IGVbQSArIDggPj4gMl0sIGkgPj4+IDAgPj0gZFtBICsgNCA+PiAyXSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZVtBICsgOCA+PiAyXSA9IGkgKyAxLCByID0gSVtpIHwgMF0gfCByLCBlW0EgKyAxMiA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZiA9IGYgLSAxIHwgMCwgZVtBICsgMTYgPj4gMl0gPSBmLCBpID0gayAtIDEgfCAwLCB0ID0gKHIgPj4+IGYgJiAxKSA8PCBpIHwgdCwgIShrID4+PiAwID4gMSkpCiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB3MyhBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDA7CiAgICAgICAgICAgICAgdCA9IFggLSAxNiB8IDAsIFggPSB0LCBrID0gZVtBICsgMjQgPj4gMl0sIChrIHwgMCkgIT0gMjU1ICYmIChlW3QgPj4gMl0gPSBrLCBRKGYsIDIsIDQ2MjYsIHQpKTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyAyMCA+PiAyXSA9PSAociB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGsgPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgayA9IDAsIFEoZiwgMSwgMjYwNTEsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChyID0gMDsgayA9IDEsIGgyKGksIChlW0EgKyA3MiA+PiAyXSArIFoociwgMTIpIHwgMCkgKyA4IHwgMCwgMSksIGkgPSBpICsgMSB8IDAsIHIgPSByICsgMSB8IDAsIHIgPj4+IDAgPCBkW0EgKyAyMCA+PiAyXTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gdCArIDE2IHwgMCwgayB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gQjMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIGYgPSBYIC0gMTYgfCAwLCBYID0gZiwgbiA9IGVbaSArIDYwID4+IDJdLCBrID0gZiArIDggfCAwLCB0ID0gZVtpICsgNTYgPj4gMl0sIGsyKGssIHQgLSBlW0EgKyA4MCA+PiAyXSB8IDAsIDQpLCBrMihmICsgMTIgfCAwLCAxNzg1NzM3ODI3LCA0KTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgIGlmICghKG8yW2VbaSArIDQ0ID4+IDJdXShpLCBlW0EgKyA4MCA+PiAyXSwgZVtBICsgODQgPj4gMl0sIHIpIHwgMCkgfHwgKEwwKGksIGssIDgsIHIpIHwgMCkgIT0gOCkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoQSA9IDEsIG8yW2VbaSArIDQ0ID4+IDJdXShpLCB0LCBuLCByKSB8IDApCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFEociwgMSwgMjE0MDgsIDApLCBBID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBmICsgMTYgfCAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBoMihBLCBpLCByKSB7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBlW2kgPj4gMl0gPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGlmIChmID0gciAmIDMsIGkgPSBpICsgciB8IDAsIHIgPj4+IDAgPj0gNCkKICAgICAgICAgICAgICAgICAgZm9yIChrID0gciAmIC00LCByID0gMDsgRltpIC0gMSB8IDBdID0gSVtBIHwgMF0sIEZbaSAtIDIgfCAwXSA9IElbQSArIDEgfCAwXSwgRltpIC0gMyB8IDBdID0gSVtBICsgMiB8IDBdLCBpID0gaSAtIDQgfCAwLCBGW2kgfCAwXSA9IElbQSArIDMgfCAwXSwgQSA9IEEgKyA0IHwgMCwgciA9IHIgKyA0IHwgMCwgKGsgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yIChyID0gMDsgaSA9IGkgLSAxIHwgMCwgRltpIHwgMF0gPSBJW0EgfCAwXSwgQSA9IEEgKyAxIHwgMCwgciA9IHIgKyAxIHwgMCwgKGYgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gYzMoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBrID0gWCAtIDE2IHwgMCwgWCA9IGs7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFyKSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgNjY3NywgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGgyKGksIGsgKyAxMiB8IDAsIDEpLCB0ID0gciAtIDEgfCAwLCBBID0gMSwgIXQpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBmb3IgKEEgPSAwLCByID0gMDsgaSA9IGkgKyAxIHwgMCwgaDIoaSwgayArIDggfCAwLCAxKSwgbiA9IGVbayArIDggPj4gMl0sIHIgPSBuIDw8IDI0ID4+IDMxICYgKG4gJiAxMjcgfCByKSA8PCA3LCBBID0gQSArIDEgfCAwLCAodCB8IDApICE9IChBIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgaWYgKEEgPSAxLCAhcikKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIFEoZiwgMSwgNjY3NywgMCksIEEgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gWCA9IGsgKyAxNiB8IDAsIEEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHYzKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IGVbQSArIDUyID4+IDJdLCBuID0gZVtBICsgMTAwID4+IDJdLCB0ID0gdWUobiksIGsgPSB0ICsgNiB8IDAsIGsgPj4+IDAgPiBkW0EgKyA1NiA+PiAyXSkgewogICAgICAgICAgICAgICAgaWYgKGYgPSBvMChmLCBrKSwgIWYpCiAgICAgICAgICAgICAgICAgIHJldHVybiBSKGVbQSArIDUyID4+IDJdKSwgZVtBICsgNTIgPj4gMl0gPSAwLCBlW0EgKyA1NiA+PiAyXSA9IDAsIFEociwgMSwgNzAyNCwgMCksIDA7CiAgICAgICAgICAgICAgICBlW0EgKyA1NiA+PiAyXSA9IGssIGVbQSArIDUyID4+IDJdID0gZjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGsyKGYsIDY1MzgwLCAyKSwgazIoZiArIDIgfCAwLCB0ICsgNCB8IDAsIDIpLCBrMihmICsgNCB8IDAsIDEsIDIpLCBGMihmICsgNiB8IDAsIG4sIHQpLCAoTDAoaSwgZVtBICsgNTIgPj4gMl0sIGssIHIpIHwgMCkgPT0gKGsgfCAwKSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gWDYoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSBXKDApLCBsID0gMCwgYSA9IFcoMCksIHUgPSAwLCBvID0gVygwKTsKICAgICAgICAgICAgICBpZiAoZikKICAgICAgICAgICAgICAgIGZvciAoOyBrID0gdCA8PCAyLCBsID0gayArIGkgfCAwLCBhID0gR1tsID4+IDJdLCB1ID0gQSArIGsgfCAwLCBuID0gR1t1ID4+IDJdLCBrID0gciArIGsgfCAwLCBvID0gR1trID4+IDJdLCBHW3UgPj4gMl0gPSBXKG8gKiBXKDEuNDAxOTk5OTUwNDA4OTM1NSkpICsgbiwgR1tsID4+IDJdID0gVyhuICsgVyhhICogVygtMC4zNDQxMzAwMDk0MTI3NjU1KSkpICsgVyhvICogVygtMC43MTQxMzk5OTc5NTkxMzcpKSwgR1trID4+IDJdID0gbiArIFcoYSAqIFcoMS43NzE5OTk5NTUxNzczMDcxKSksIHQgPSB0ICsgMSB8IDAsICh0IHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gSTMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwOwogICAgICAgICAgICAgIHQgPSBlW0EgKyA0MCA+PiAyXSwgbiA9IGVbQSArIDIwID4+IDJdLCBsID0gZVtpICsgNTYgPj4gMl0sIGEgPSBlW2kgKyA2MCA+PiAyXSwgZiA9IGVbQSArIDI4ID4+IDJdLCBrID0gZVtBICsgMjQgPj4gMl0gKyA2IHwgMCwgZiA9IGsgPj4+IDAgPCA2ID8gZiArIDEgfCAwIDogZjsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoIShvMltlW2kgKyA0NCA+PiAyXV0oaSwgaywgZiwgcikgfCAwKSB8fCAoZiA9IGVbQSArIDMyID4+IDJdLCBBID0gWihuID8gNSA6IDYsIHQpLCAoTDAoaSwgZiwgQSwgcikgfCAwKSAhPSAoQSB8IDApKSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIHUgPSAobzJbZVtpICsgNDQgPj4gMl1dKGksIGwsIGEsIHIpIHwgMCkgIT0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHUgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFozKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IFcoMCksIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IFggLSAxNiB8IDAsIFggPSBmLCByKQogICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgIEZbZiArIDE1IHwgMF0gPSBJW0EgfCAwXSwgRltmICsgMTQgfCAwXSA9IElbQSArIDEgfCAwXSwgRltmICsgMTMgfCAwXSA9IElbQSArIDIgfCAwXSwgRltmICsgMTIgfCAwXSA9IElbQSArIDMgfCAwXSwgayA9IEdbZiArIDEyID4+IDJdOwogICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFcoUjIoaykpIDwgVygyMTQ3NDgzNjQ4KSkgewogICAgICAgICAgICAgICAgICAgICAgdCA9IH5+azsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQgPSAtMjE0NzQ4MzY0ODsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZVtpID4+IDJdID0gdCwgaSA9IGkgKyA0IHwgMCwgQSA9IEEgKyA0IHwgMCwgbiA9IG4gKyAxIHwgMCwgKG4gfCAwKSA9PSAociB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIFggPSBmICsgMTYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHdyKEEpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgciA9IDAsIGYgPSAwOyByID0gQSwgQSA9IEEgKyAxIHwgMCwgaSA9IEZbciB8IDBdLCAhISgoaSB8IDApID09IDMyIHwgaSAtIDkgPj4+IDAgPCA1KTsgKQogICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIGYgPSAxOwogICAgICAgICAgICAgIGU6CiAgICAgICAgICAgICAgICBzd2l0Y2ggKChpICYgMjU1KSAtIDQzIHwgMCkgewogICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICBpID0gRltBIHwgMF0sIHIgPSBBOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKEEgPSAwLCBpID0gaSAtIDQ4IHwgMCwgaSA+Pj4gMCA8PSA5KQogICAgICAgICAgICAgICAgZm9yICg7IEEgPSBaKEEsIDEwKSAtIGkgfCAwLCBpID0gRltyICsgMSB8IDBdLCByID0gciArIDEgfCAwLCBpID0gaSAtIDQ4IHwgMCwgaSA+Pj4gMCA8IDEwOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICByZXR1cm4gZiA/IDAgLSBBIHwgMCA6IEE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdWUoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKGkgPSBBLCAhKGkgJiAzKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICBpZiAoIUlbaSB8IDBdKQogICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgKyAxIHwgMCwgIShpICYgMykpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBpOwogICAgICAgICAgICAgICAgICAgIGlmICghSVtpIHwgMF0pCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICg7IHIgPSBpLCBpID0gaSArIDQgfCAwLCBmID0gZVtyID4+IDJdLCAoKGYgfCAxNjg0MzAwOCAtIGYpICYgLTIxMzkwNjIxNDQpID09IC0yMTM5MDYyMTQ0OyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGZvciAoOyBpID0gciwgciA9IGkgKyAxIHwgMCwgISFJW2kgfCAwXTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBpIC0gQSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gQzMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDA7CiAgICAgICAgICAgICAgZiA9IFggLSAxNiB8IDAsIFggPSBmLCBrID0gZVtpICsgNCA+PiAyXSwgdCA9IGVbaSA+PiAyXSwgbiA9IGsgLSB0IHwgMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAobiA+Pj4gMCA8IHIgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgVGUoaSwgciAtIG4gfCAwKSwgdCA9IGVbaSA+PiAyXSwgayA9IGVbaSArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA+PSBuID4+PiAwKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgayA9IHIgKyB0IHwgMCwgZVtpICsgNCA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVbZiArIDEyID4+IDJdID0gdCwgZVtmICsgOCA+PiAyXSA9IGsgLSB0LCBsID0gQSwgYSA9IHJyKDI5OTg4LCBmICsgOCB8IDApIHwgMCwgZVtsICsgNCA+PiAyXSA9IGEsIGVbQSA+PiAyXSA9IDUwNjU2LCBYID0gZiArIDE2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBHMyhBKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwOwogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDI0ID4+IDJdLCBpKSB7CiAgICAgICAgICAgICAgICBpZiAociA9IGVbQSArIDI4ID4+IDJdLCBrID0gKHIgPj4+IDApIC8gNTIgfCAwLCByID4+PiAwID49IDUyKSB7CiAgICAgICAgICAgICAgICAgIGZvciAoOyByID0gZVtpID4+IDJdLCByICYmIChSKHIgLSAxIHwgMCksIGVbaSA+PiAyXSA9IDApLCByID0gZVtpICsgNCA+PiAyXSwgciAmJiAoUihyKSwgZVtpICsgNCA+PiAyXSA9IDApLCByID0gZVtpICsgOCA+PiAyXSwgciAmJiAoUihyKSwgZVtpICsgOCA+PiAyXSA9IDApLCBpID0gaSArIDUyIHwgMCwgZiA9IGYgKyAxIHwgMCwgKGsgfCAwKSAhPSAoZiB8IDApOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICBpID0gZVtBICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBSKGkpLCBlW0EgKyAyNCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFczKEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDA7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDAsIGsgPSAwOwogICAgICAgICAgICAgIGlmIChpID0gZVtBICsgMjQgPj4gMl0sIGkpIHsKICAgICAgICAgICAgICAgIGlmIChyID0gZVtBICsgMjggPj4gMl0sIHIgPj4+IDAgPj0gNjQpIHsKICAgICAgICAgICAgICAgICAgZm9yIChrID0gciA+Pj4gNiB8IDA7IHIgPSBlW2kgPj4gMl0sIHIgJiYgKFIociksIGVbaSA+PiAyXSA9IDApLCByID0gZVtpICsgNCA+PiAyXSwgciAmJiAoUihyKSwgZVtpICsgNCA+PiAyXSA9IDApLCBSKGVbaSArIDYwID4+IDJdKSwgZVtpICsgNjAgPj4gMl0gPSAwLCBpID0gaSAtIC02NCB8IDAsIGYgPSBmICsgMSB8IDAsIChrIHwgMCkgIT0gKGYgfCAwKTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgUihpKSwgZVtBICsgMjQgPj4gMl0gPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBtMyhBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDA7CiAgICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICAgIHJldHVybiByID0gRTIoMSwgMjIpLCByICYmIChrMihyLCAyMiwgNCksIGsyKHIgKyA0IHwgMCwgMTc2ODQ0OTEzOCwgNCksIGsyKHIgKyA4IHwgMCwgZVtBICsgMTYgPj4gMl0sIDQpLCBrMihyICsgMTIgfCAwLCBlW0EgKyAxMiA+PiAyXSwgNCksIGsyKHIgKyAxNiB8IDAsIGVbQSArIDIwID4+IDJdLCAyKSwgazIociArIDE4IHwgMCwgZVtBICsgMjQgPj4gMl0sIDEpLCBrMihyICsgMTkgfCAwLCBlW0EgKyAyOCA+PiAyXSwgMSksIGsyKHIgKyAyMCB8IDAsIGVbQSArIDMyID4+IDJdLCAxKSwgazIociArIDIxIHwgMCwgZVtBICsgMzYgPj4gMl0sIDEpLCBlW2kgPj4gMl0gPSAyMiksIHIgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG1lKEEsIGksIHIpIHsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAgICAgIGYgPSBpOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICg7IHIgPSByIC0gMSB8IDAsIGsgPSBBLCBBID0gbjAoQSwgaSwgMTAsIDApLCBmID0gcTIsIHQgPSByLCBuID0gayAtIGQwKEEsIGYsIDEwLCAwKSB8IDQ4LCBGW3QgfCAwXSA9IG4sIGsgPSBpID4+PiAwID4gOSwgaSA9IGYsICEhazsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChBIHwgZikKICAgICAgICAgICAgICAgIGZvciAoOyByID0gciAtIDEgfCAwLCBpID0gKEEgPj4+IDApIC8gMTAgfCAwLCBGW3IgfCAwXSA9IEEgLSBaKGksIDEwKSB8IDQ4LCBmID0gQSA+Pj4gMCA+IDksIEEgPSBpLCAhIWY7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHkzKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMDsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwOwogICAgICAgICAgICAgIGlmIChyID0gZVtBICsgMzIgPj4gMl0sIGkgPSBlW0EgKyAyOCA+PiAyXSwgZiA9IGkgKyA4IHwgMCwgciA+Pj4gMCA+PSBmID4+PiAwKQogICAgICAgICAgICAgICAgZm9yICg7IG9pKEEsIGVbQSArIDI0ID4+IDJdICsgKGkgPDwgMikgfCAwLCBlW0EgKyAyMCA+PiAyXSwgOCksIHIgPSBlW0EgKyAzMiA+PiAyXSwgaSA9IGYsIGYgPSBpICsgOCB8IDAsIHIgPj4+IDAgPj0gZiA+Pj4gMDsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgaSA+Pj4gMCA8IHIgPj4+IDAgJiYgb2koQSwgZVtBICsgMjQgPj4gMl0gKyAoaSA8PCAyKSB8IDAsIGVbQSArIDIwID4+IDJdLCByIC0gaSB8IDApLCBSKGVbQSA+PiAyXSksIFIoQSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gRjYoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDA7CiAgICAgICAgICAgICAgaWYgKGkgPSBFMigxLCA3MiksIGkpIHsKICAgICAgICAgICAgICAgIGlmIChlW2kgKyA2NCA+PiAyXSA9IDEwNDg1NzYsIHIgPSBVMigxMDQ4NTc2KSwgZVtpICsgMzIgPj4gMl0gPSByLCAhcikKICAgICAgICAgICAgICAgICAgcmV0dXJuIFIoaSksIDA7CiAgICAgICAgICAgICAgICBlW2kgKyAzNiA+PiAyXSA9IHIsIGVbaSArIDI4ID4+IDJdID0gOTksIGVbaSArIDI0ID4+IDJdID0gMTAwLCBlW2kgKyAyMCA+PiAyXSA9IDEwMSwgZVtpICsgMTYgPj4gMl0gPSAxMDIsIGVbaSArIDQ0ID4+IDJdID0gQSA/IDEwMyA6IDEwNCwgZVtpICsgNDAgPj4gMl0gPSBBID8gMTA1IDogMTA2LCBlW2kgKyA2OCA+PiAyXSA9IGVbaSArIDY4ID4+IDJdIHwgKEEgPyAyIDogMSk7CiAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBwMyhBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMDsKICAgICAgICAgICAgICBrID0gWCAtIDE2IHwgMCwgWCA9IGs7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGVbQSArIDEwMCA+PiAyXSkgewogICAgICAgICAgICAgICAgICBRKGYsIDEsIDIxODgxLCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSAhPSA0KSB7CiAgICAgICAgICAgICAgICAgIFEoZiwgMSwgOTkzMiwgMCksIEEgPSAwOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGgyKGksIGsgKyAxMiB8IDAsIDQpLCBlW2sgKyAxMiA+PiAyXSAhPSAyMTg3OTM3MzgpIHsKICAgICAgICAgICAgICAgICAgUShmLCAxLCA4NTA4LCAwKSwgQSA9IDA7CiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW0EgKyAxMDAgPj4gMl0gPSBlW0EgKyAxMDAgPj4gMl0gfCAxLCBBID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIFggPSBrICsgMTYgfCAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBjMChBLCBpLCByKSB7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBmID0gZVtBID4+IDJdLCBrID0gZVtBICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgIGk6IHsKICAgICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgIT0gKGsgfCAwKSkgewogICAgICAgICAgICAgICAgICAgIGsgPSBlW0EgKyA4ID4+IDJdOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGYgPSBrICsgMTAgfCAwLCBlW0EgKyA0ID4+IDJdID0gZiwgayA9IG8wKGVbQSArIDggPj4gMl0sIGYgPDwgMiksICFrKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGVbQSArIDggPj4gMl0gPSBrLCBmID0gZVtBID4+IDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGVbKGYgPDwgMikgKyBrID4+IDJdID0gaSwgZVtBID4+IDJdID0gZiArIDEsIDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBSKGVbQSArIDggPj4gMl0pLCBlW0EgPj4gMl0gPSAwLCBlW0EgKyA0ID4+IDJdID0gMCwgUShyLCAxLCAxMDA2NCwgMCksIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUTMoQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IGVbQSArIDIwID4+IDJdICsgOCB8IDAsIHIgPSBFMigxLCBmKSwgcikgewogICAgICAgICAgICAgICAgaWYgKGsyKHIsIGYsIDQpLCBrMihyICsgNCB8IDAsIDE2NTE1MzI2NDMsIDQpLCBlW0EgKyAyMCA+PiAyXSkKICAgICAgICAgICAgICAgICAgZm9yIChrID0gciArIDggfCAwOyBrMihrLCBlWyhlW0EgKyA3MiA+PiAyXSArIFoodCwgMTIpIHwgMCkgKyA4ID4+IDJdLCAxKSwgayA9IGsgKyAxIHwgMCwgdCA9IHQgKyAxIHwgMCwgdCA+Pj4gMCA8IGRbQSArIDIwID4+IDJdOyApCiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgZVtpID4+IDJdID0gZjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHIgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG9lKEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICByID0gZVtBICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKHIgfHwgKGsgPSBlW0EgKyAxMiA+PiAyXSwgciA9IGsgPDwgOCAmIDY1MjgwLCBlW0EgKyAxMiA+PiAyXSA9IHIsIHIgPSAociB8IDApID09IDY1MjgwID8gNyA6IDgsIGVbQSArIDE2ID4+IDJdID0gciwgZiA9IGVbQSArIDggPj4gMl0sIGYgPj4+IDAgPj0gZFtBICsgNCA+PiAyXSkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBlW0EgKyA4ID4+IDJdID0gZiArIDEsIEZbZiB8IDBdID0gaywgciA9IGVbQSArIDE2ID4+IDJdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByID0gciAtIDEgfCAwLCBlW0EgKyAxNiA+PiAyXSA9IHIsIGVbQSArIDEyID4+IDJdID0gZVtBICsgMTIgPj4gMl0gfCBpIDw8IHI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gVjMoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDA7CiAgICAgICAgICAgICAgQSA9IFggLSAxNiB8IDAsIFggPSBBLCBrID0gMTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAociA+Pj4gMCA8PSAxKSB7CiAgICAgICAgICAgICAgICAgIGsgPSAwLCBRKGYsIDEsIDcxNDYsIDApOwogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGgyKGksIEEgKyAxMiB8IDAsIDEpLCBoMihpICsgMSB8IDAsIEEgKyA4IHwgMCwgMSksIGkgPSBlW0EgKyA4ID4+IDJdLCAhKChyIC0gMiA+Pj4gMCkgJSAoKChpID4+PiA1ICYgMikgKyAoaSA+Pj4gNCAmIDMpIHwgMCkgKyAyID4+PiAwKSB8IDApKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgayA9IDAsIFEoZiwgMSwgNzE0NiwgMCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBYID0gQSArIDE2IHwgMCwgayB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gQnIoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwOwogICAgICAgICAgICAgIHIgPSBYIC0gMTYgfCAwLCBYID0gciwgRltyICsgMTUgfCAwXSA9IDEwLCBpID0gZVtBICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAgICAgIGlmICh2cihBKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBpID0gZVtBICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZiA9IGksIGkgPSBlW0EgKyAyMCA+PiAyXSwgISgoZiB8IDApID09IChpIHwgMCkgfCBlW0EgKyA4MCA+PiAyXSA9PSAxMCkpIHsKICAgICAgICAgICAgICAgICAgZVtBICsgMjAgPj4gMl0gPSBpICsgMSwgRltpIHwgMF0gPSAxMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgobzJbZVtBICsgMzYgPj4gMl1dKEEsIHIgKyAxNSB8IDAsIDEpIHwgMCkgIT0gMSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgWCA9IHIgKyAxNiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gSjYoQSwgaSwgcikgewogICAgICAgICAgICAgIHZhciBmID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IGVbQSArIDM2ID4+IDJdLCAhZikgewogICAgICAgICAgICAgICAgZVtBICsgMjQgPj4gMl0gPSByLCBlW0EgKyAxNiA+PiAyXSA9IGksIGVbQSArIDM2ID4+IDJdID0gMSwgZVtBICsgMjAgPj4gMl0gPSBlW0EgKyA1NiA+PiAyXTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCEoZVtBICsgMjAgPj4gMl0gIT0gZVtBICsgNTYgPj4gMl0gfCBlW0EgKyAxNiA+PiAyXSAhPSAoaSB8IDApKSkgewogICAgICAgICAgICAgICAgICBpZiAoZVtBICsgMjQgPj4gMl0gIT0gMikKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBlW0EgKyAyNCA+PiAyXSA9IHI7CiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEZbQSArIDU0IHwgMF0gPSAxLCBlW0EgKyAyNCA+PiAyXSA9IDIsIGVbQSArIDM2ID4+IDJdID0gZiArIDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFI2KEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMDsKICAgICAgICAgICAgICBlW0EgKyAyOCA+PiAyXSA9IHIsIGVbQSArIDI0ID4+IDJdID0gaSwgayA9IEUyKDEsIDg0OCksIGVbZVtBICsgMjAgPj4gMl0gPj4gMl0gPSBrOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghayB8fCAoayA9IEUyKGVbaSArIDE2ID4+IDJdLCA3NiksIHQgPSBlW2VbQSArIDIwID4+IDJdID4+IDJdLCBlW3QgKyAyMCA+PiAyXSA9IGssICFrKSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGVbdCArIDE2ID4+IDJdID0gZVtpICsgMTYgPj4gMl0sIGkgPSBlW3IgKyA4NCA+PiAyXSwgZVtBICsgNDQgPj4gMl0gPSBmLCBlW0EgPj4gMl0gPSBpLCBuID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gRTYoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwLCBrID0gMCwgdCA9IDA7CiAgICAgICAgICAgICAgaWYgKGYgPSBlW0EgPj4gMl0sIGkgPSBGW2YgfCAwXSAtIDQ4IHwgMCwgaSA+Pj4gMCA+IDkpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICBmb3IgKDsgayA9IC0xLCByID4+PiAwIDw9IDIxNDc0ODM2NCAmJiAociA9IFoociwgMTApLCBrID0gKHIgXiAyMTQ3NDgzNjQ3KSA+Pj4gMCA8IGkgPj4+IDAgPyAtMSA6IHIgKyBpIHwgMCksIGkgPSBmICsgMSB8IDAsIGVbQSA+PiAyXSA9IGksIHQgPSBGW2YgKyAxIHwgMF0sIHIgPSBrLCBmID0gaSwgaSA9IHQgLSA0OCB8IDAsIGkgPj4+IDAgPCAxMDsgKQogICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEQ2KEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBpZiAoZzEoK0EpLCBmID0gVzAoMSkgfCAwLCBrID0gVzAoMCkgfCAwLCByID0gZiA+Pj4gMjAgJiAyMDQ3LCAociB8IDApICE9IDIwNDcpIHsKICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgcmV0dXJuIEEgPT0gMCA/IHIgPSAwIDogKEEgPSBENihBICogMTg0NDY3NDQwNzM3MDk1NTJlMywgaSksIHIgPSBlW2kgPj4gMl0gKyAtNjQgfCAwKSwgZVtpID4+IDJdID0gciwgQTsKICAgICAgICAgICAgICAgIGVbaSA+PiAyXSA9IHIgLSAxMDIyLCBBMCgwLCBrIHwgMCksIEEwKDEsIGYgJiAtMjE0NjQzNTA3MyB8IDEwNzE2NDQ2NzIpLCBBID0gK04wKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBBOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFU2KCkgewogICAgICAgICAgICAgIHZhciBBID0gMCwgaSA9IDA7CiAgICAgICAgICAgICAgZXIoMjk4MTYsIDExNjAsIDI5Nzk5LCAxNSwgMjk4MDEsIDE2KSwgQSA9IF8yKDQpLCBlW0EgPj4gMl0gPSAwLCBpID0gXzIoNCksIGVbaSA+PiAyXSA9IDAsIHoxKDI5ODE2LCAxMTI4LCA0OTAyMCwgMjk4MDQsIDE3LCBBIHwgMCwgNDkwMjAsIDI5ODA4LCAxOCwgaSB8IDApLCBBID0gXzIoNCksIGVbQSA+PiAyXSA9IDQsIGkgPSBfMig0KSwgZVtpID4+IDJdID0gNCwgejEoMjk4MTYsIDEwOTksIDQ5MDIwLCAyOTgwNCwgMTcsIEEgfCAwLCA0OTAyMCwgMjk4MDgsIDE4LCBpIHwgMCksIHFpKDI5ODE2KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBNNigpIHsKICAgICAgICAgICAgICB2YXIgQSA9IDAsIGkgPSAwOwogICAgICAgICAgICAgIGVyKDI5ODMyLCAyMDQ5LCAyOTc5OSwgMTksIDI5ODAxLCAyMCksIEEgPSBfMig0KSwgZVtBID4+IDJdID0gMCwgaSA9IF8yKDQpLCBlW2kgPj4gMl0gPSAwLCB6MSgyOTgzMiwgMTkzOCwgNDkwMjAsIDI5ODA0LCAyMSwgQSB8IDAsIDQ5MDIwLCAyOTgwOCwgMjIsIGkgfCAwKSwgQSA9IF8yKDQpLCBlW0EgPj4gMl0gPSA0LCBpID0gXzIoNCksIGVbaSA+PiAyXSA9IDQsIHoxKDI5ODMyLCAxMTc5LCA0OTAyMCwgMjk4MDQsIDIxLCBBIHwgMCwgNDkwMjAsIDI5ODA4LCAyMiwgaSB8IDApLCBxaSgyOTgzMik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gWTMoQSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMDsKICAgICAgICAgICAgICB2YXIgaSA9IDAsIHIgPSAwLCBmID0gMDsKICAgICAgICAgICAgICBpZiAoaSA9IHVlKDMyMzMpLCBpID4+PiAwIDwgMjE0NzQ4MzY0MCkgewogICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICBpOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj4+IDAgPj0gMTEpIHsKICAgICAgICAgICAgICAgICAgICAgIHIgPSAoaSB8IDcpICsgMSB8IDAsIGYgPSBfMihyKSwgZVtBICsgOCA+PiAyXSA9IHIgfCAtMjE0NzQ4MzY0OCwgZVtBID4+IDJdID0gZiwgZVtBICsgNCA+PiAyXSA9IGksIEEgPSBmOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKEZbQSArIDExIHwgMF0gPSBpLCAhaSkKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgdTYoQSwgMzIzMywgaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBGW0EgKyBpIHwgMF0gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBUNigxOTcxKSwgVTAoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBIMyhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMCwgbiA9IDA7CiAgICAgICAgICAgICAgaWYgKGYgPSBYIC0gMTYgfCAwLCBYID0gZiwgcikKICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICBiNihBLCBmICsgOCB8IDApLCBrID0gUTJbZiArIDggPj4gM107CiAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICBpZiAoUjIoaykgPCAyMTQ3NDgzNjQ4KSB7CiAgICAgICAgICAgICAgICAgICAgICB0ID0gfn5rOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChlW2kgPj4gMl0gPSB0LCBpID0gaSArIDQgfCAwLCBBID0gQSArIDggfCAwLCBuID0gbiArIDEgfCAwLCAobiB8IDApID09IChyIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgWCA9IGYgKyAxNiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gWDMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IFggLSAxNiB8IDAsIFggPSBmLCByKQogICAgICAgICAgICAgICAgZm9yICg7IEZbZiArIDE1IHwgMF0gPSBJW0EgfCAwXSwgRltmICsgMTQgfCAwXSA9IElbQSArIDEgfCAwXSwgRltmICsgMTMgfCAwXSA9IElbQSArIDIgfCAwXSwgRltmICsgMTIgfCAwXSA9IElbQSArIDMgfCAwXSwgR1tpID4+IDJdID0gR1tmICsgMTIgPj4gMl0sIGkgPSBpICsgNCB8IDAsIEEgPSBBICsgNCB8IDAsIGsgPSBrICsgMSB8IDAsIChrIHwgMCkgIT0gKHIgfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgWCA9IGYgKyAxNiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24geTEoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDAsIGYgPSAwOwogICAgICAgICAgICAgIGlmIChBKSB7CiAgICAgICAgICAgICAgICBpZiAoaSA9IGVbQSArIDI0ID4+IDJdLCBpKSB7CiAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtBICsgMTYgPj4gMl0sIHIpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBmID0gZVsoZVtBICsgMjQgPj4gMl0gKyBaKGksIDUyKSB8IDApICsgNDQgPj4gMl0sIGYgJiYgKFIoZiksIHIgPSBlW0EgKyAxNiA+PiAyXSksIGkgPSBpICsgMSB8IDAsIHIgPj4+IDAgPiBpID4+PiAwOyApCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgaSA9IGVbQSArIDI0ID4+IDJdOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIFIoaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpID0gZVtBICsgMjggPj4gMl0sIGkgJiYgUihpKSwgUihBKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gRjMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGkgPSBlW2VbZVtBICsgMTU2ID4+IDJdICsgNTU4NCA+PiAyXSArIDQgPj4gMl0sIGkgLSAzMyA+Pj4gMCA8IDQyOTQ5NjcyNjQgfHwgKGkgPSAxIDw8IGkgLSAxLCBpID4+PiAwID4gZFtBICsgOTIgPj4gMl0gfCBpID4+PiAwID4gZFtBICsgOTYgPj4gMl0pKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgcmV0dXJuICFlW0EgKyA4ID4+IDJdICYgKGVbQSArIDE5MiA+PiAyXSAhPSAwICYgZVtBICsgMTk2ID4+IDJdICE9IDApOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gUShyLCAxLCA1OTY3LCAwKSwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBTNihBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwOwogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwOwogICAgICAgICAgICAgIGsgPSBYIC0gMTYgfCAwLCBYID0gaywgdCA9IGksIGkgPSBlW0EgKyA0ID4+IDJdLCB0ID0gdCArIChpID4+IDEpIHwgMCwgQSA9IGVbQSA+PiAyXSwgQSA9IGkgJiAxID8gZVtlW3QgPj4gMl0gKyBBID4+IDJdIDogQSwgbiA9IGVbZiArIDQgPj4gMl0sIGkgPSBlW2YgPj4gMl0sIGVbayA+PiAyXSA9IGksIGVbayArIDQgPj4gMl0gPSBuLCBlW2sgKyA4ID4+IDJdID0gaSwgZVtrICsgMTIgPj4gMl0gPSBuLCBvMltBIHwgMF0odCwgciwgayksIFggPSBrICsgMTYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEozKCkgewogICAgICAgICAgICAgIHZhciBBID0gMDsKICAgICAgICAgICAgICByZXR1cm4gQSA9IF8yKDg4KSwgZVtBID4+IDJdID0gMCwgZVtBICsgNCA+PiAyXSA9IDAsIGVbQSArIDQ0ID4+IDJdID0gMCwgZVtBICsgNDggPj4gMl0gPSAwLCBlW0EgKyA4NCA+PiAyXSA9IDEsIGVbQSArIDE2ID4+IDJdID0gMCwgZVtBICsgMjAgPj4gMl0gPSAwLCBlW0EgKyA4ID4+IDJdID0gMCwgZVtBICsgMTIgPj4gMl0gPSAwLCBlW0EgKyA1MiA+PiAyXSA9IDAsIGVbQSArIDU2ID4+IDJdID0gMCwgZVtBICsgNjAgPj4gMl0gPSAwLCBlW0EgKyA2NCA+PiAyXSA9IDAsIGVbQSArIDY4ID4+IDJdID0gMCwgZVtBICsgNzIgPj4gMl0gPSAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBSMyhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwOwogICAgICAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgICAgZm9yICg7IGYgPSBlW0EgPj4gMl0sIGYgPSBmIDw8IDI0IHwgKGYgJiA2NTI4MCkgPDwgOCB8IChmID4+PiA4ICYgNjUyODAgfCBmID4+PiAyNCksIEZbaSB8IDBdID0gZiwgRltpICsgMSB8IDBdID0gZiA+Pj4gOCwgRltpICsgMiB8IDBdID0gZiA+Pj4gMTYsIEZbaSArIDMgfCAwXSA9IGYgPj4+IDI0LCBpID0gaSArIDQgfCAwLCBBID0gQSArIDQgfCAwLCBrID0gayArIDEgfCAwLCAoayB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEUzKEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDA7CiAgICAgICAgICAgICAgdmFyIGkgPSAwOwogICAgICAgICAgICAgIEEgJiYgKGkgPSBlW0EgKyAxMDAgPj4gMl0sIGkgJiYgKGVbQSArIDEwNCA+PiAyXSA9IGksIFIoaSkpLCBpID0gZVtBICsgNTYgPj4gMl0sIGkgJiYgKGVbQSArIDYwID4+IDJdID0gaSwgUihpKSksIGkgPSBlW0EgKyA0MCA+PiAyXSwgaSAmJiAoZVtBICsgNDQgPj4gMl0gPSBpLCBSKGkpKSwgaSA9IGVbQSArIDEyID4+IDJdLCBpICYmIChlW0EgKyAxNiA+PiAyXSA9IGksIFIoaSkpLCBpID0gZVtBID4+IDJdLCBpICYmIChlW0EgKyA0ID4+IDJdID0gaSwgUihpKSksIFIoQSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHowKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICB2YXIgayA9IDAsIHQgPSAwLCBuID0gMCwgbCA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIHQgPSBpIF4gZiwgbiA9IHQgPj4gMzEsIGsgPSBpID4+IDMxLCBBID0gQSBeIGssIGwgPSBBIC0gayB8IDAsIGsgPSAoaSBeIGspIC0gKChBID4+PiAwIDwgayA+Pj4gMCkgKyBrIHwgMCkgfCAwLCBBID0gZiA+PiAzMSwgaSA9IHIgXiBBLCB0ID0gdCA+PiAzMSwgQSA9IG4wKGwsIGssIGkgLSBBIHwgMCwgKEEgXiBmKSAtICgoQSA+Pj4gMCA+IGkgPj4+IDApICsgQSB8IDApIHwgMCkgXiB0LCBpID0gQSAtIHQgfCAwLCBxMiA9IChuIF4gcTIpIC0gKChBID4+PiAwIDwgdCA+Pj4gMCkgKyBuIHwgMCkgfCAwLCBpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEQzKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwOwogICAgICAgICAgICAgIHJldHVybiBmID0gWCAtIDE2IHwgMCwgWCA9IGYsIGsgPSBlW0EgPj4gMl0sIHQgPSBmICsgOCB8IDAsIEEgPSBlW0EgKyA0ID4+IDJdLCBpID0gKEEgPj4gMSkgKyBpIHwgMCwgQSAmIDEgJiYgKGsgPSBlW2sgKyBlW2kgPj4gMl0gPj4gMl0pLCBvMltrIHwgMF0odCwgaSwgciksIEEgPSBfMig4KSwgaSA9IGVbZiArIDEyID4+IDJdLCBlW0EgPj4gMl0gPSBlW2YgKyA4ID4+IDJdLCBlW0EgKyA0ID4+IDJdID0gaSwgWCA9IGYgKyAxNiB8IDAsIEEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIE42KEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDAsIHQgPSAwOwogICAgICAgICAgICAgIGYgPSBYIC0gMTYgfCAwLCBYID0gZiwgayA9IGksIGkgPSBlW0EgKyA0ID4+IDJdLCBrID0gayArIChpID4+IDEpIHwgMCwgQSA9IGVbQSA+PiAyXSwgQSA9IGkgJiAxID8gZVtlW2sgPj4gMl0gKyBBID4+IDJdIDogQSwgdCA9IGVbciArIDQgPj4gMl0sIGkgPSBlW3IgPj4gMl0sIGVbZiA+PiAyXSA9IGksIGVbZiArIDQgPj4gMl0gPSB0LCBlW2YgKyA4ID4+IDJdID0gaSwgZVtmICsgMTIgPj4gMl0gPSB0LCBvMltBIHwgMF0oaywgZiksIFggPSBmICsgMTYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGNyKEEsIGksIHIsIGYsIGspIHsKICAgICAgICAgICAgICByZXR1cm4gciA+Pj4gMCA8PSAxMSA/IChRKGssIDEsIDY2MjIsIDApLCAwKSA6IChrMihpLCA2NTQyNCwgMiksIGsyKGkgKyAyIHwgMCwgMTAsIDIpLCBrMihpICsgNCB8IDAsIGVbQSArIDIwNCA+PiAyXSwgMiksIGsyKGkgKyAxMCB8IDAsIGVbQSArIDEyID4+IDJdLCAxKSwgazIoaSArIDExIHwgMCwgZVsoZVtBICsgMTU2ID4+IDJdICsgWihlW0EgKyAyMDQgPj4gMl0sIDU2NDQpIHwgMCkgKyA1NTkyID4+IDJdLCAxKSwgZVtmID4+IDJdID0gMTIsIDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uICQxKEEpIHsKICAgICAgICAgICAgICB2YXIgaSA9IDAsIHIgPSAwLCBmID0gMCwgayA9IDA7CiAgICAgICAgICAgICAgaWYgKEEpIHsKICAgICAgICAgICAgICAgIGlmIChpID0gZVtBICsgMjAgPj4gMl0sIHIgPSBlW0EgKyAxNiA+PiAyXSwgWihpLCByKSkKICAgICAgICAgICAgICAgICAgZm9yICg7IGsgPSBlW2VbQSArIDI0ID4+IDJdICsgKGYgPDwgMikgPj4gMl0sIGsgJiYgKFIoayksIHIgPSBlW0EgKyAxNiA+PiAyXSwgaSA9IGVbQSArIDIwID4+IDJdKSwgZiA9IGYgKyAxIHwgMCwgZiA+Pj4gMCA8IFooaSwgcikgPj4+IDA7ICkKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBSKGVbQSArIDI0ID4+IDJdKSwgUihBKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZDAoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwOwogICAgICAgICAgICAgIHJldHVybiBrID0gciA+Pj4gMTYgfCAwLCB0ID0gQSA+Pj4gMTYgfCAwLCB1ID0gWihrLCB0KSwgbiA9IHIgJiA2NTUzNSwgbCA9IEEgJiA2NTUzNSwgYSA9IFoobiwgbCksIHQgPSAoYSA+Pj4gMTYgfCAwKSArIFoodCwgbikgfCAwLCBrID0gKHQgJiA2NTUzNSkgKyBaKGssIGwpIHwgMCwgcTIgPSAoWihpLCByKSArIHUgfCAwKSArIFooQSwgZikgKyAodCA+Pj4gMTYpICsgKGsgPj4+IDE2KSB8IDAsIGEgJiA2NTUzNSB8IGsgPDwgMTY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUDYoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHZhciBrID0gMCwgdCA9IDAsIG4gPSAwLCBsID0gMCwgYSA9IDAsIHUgPSAwLCBvID0gMDsKICAgICAgICAgICAgICBpZiAoZikKICAgICAgICAgICAgICAgIGZvciAoOyBrID0gdCA8PCAyLCBuID0gayArIEEgfCAwLCBsID0gciArIGsgfCAwLCBhID0gZVtsID4+IDJdLCB1ID0gaSArIGsgfCAwLCBvID0gZVt1ID4+IDJdLCBrID0gZVtuID4+IDJdIC0gKGEgKyBvID4+IDIpIHwgMCwgZVtuID4+IDJdID0gayArIGEsIGVbdSA+PiAyXSA9IGssIGVbbCA+PiAyXSA9IGsgKyBvLCB0ID0gdCArIDEgfCAwLCAodCB8IDApICE9IChmIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFUzKEEsIGkpIHsKICAgICAgICAgICAgICBpZiAoQSA9IEEgfCAwLCBpID0gaSB8IDAsIGkgPSBlW0EgKyAyOCA+PiAyXSwgaSA+Pj4gMCA8IGRbQSArIDMyID4+IDJdKQogICAgICAgICAgICAgICAgZm9yICg7IG8yW2VbQSArIDM2ID4+IDJdXShlW0EgKyAyNCA+PiAyXSArIChaKGVbQSArIDIwID4+IDJdLCBpKSA8PCAyKSB8IDAsIGVbQSA+PiAyXSwgZVtBICsgMTYgPj4gMl0sICFlW0EgKyAxMiA+PiAyXSksIGkgPSBpICsgMSB8IDAsIGkgPj4+IDAgPCBkW0EgKyAzMiA+PiAyXTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgUihlW0EgPj4gMl0pLCBSKEEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEdpKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDA7CiAgICAgICAgICAgICAgdmFyIGsgPSAwOwogICAgICAgICAgICAgIHJldHVybiBlW0EgKyA0OCA+PiAyXSA9IDAsIGVbQSArIDM2ID4+IDJdID0gZVtBICsgMzIgPj4gMl0sIGsgPSBvMltlW0EgKyAyOCA+PiAyXV0oaSwgciwgZVtBID4+IDJdKSB8IDAsIGYgPSBlW0EgKyA2OCA+PiAyXSwgayA/IChlW0EgKyA1NiA+PiAyXSA9IGksIGVbQSArIDYwID4+IDJdID0gciwgZVtBICsgNjggPj4gMl0gPSBmICYgLTUsIDEpIDogKGVbQSArIDY4ID4+IDJdID0gZiB8IDQsIDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFdpKEEsIGksIHIpIHsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwOwogICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIGlmIChmID0gSVtBIHwgMF0sIGYpCiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICAgIGlmIChrID0gSVtpIHwgMF0sIChrIHwgMCkgIT0gKGYgfCAwKSB8ICFrIHx8IChyID0gciAtIDEgfCAwLCAhcikpCiAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgIGlmIChpID0gaSArIDEgfCAwLCBmID0gSVtBICsgMSB8IDBdLCBBID0gQSArIDEgfCAwLCAhZikKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgIHJldHVybiBmIC0gSVtpIHwgMF0gfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHg2KEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMDsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICByZXR1cm4gciA9IFggLSAxNiB8IDAsIFggPSByLCBmID0gZVtBID4+IDJdLCBrID0gciArIDggfCAwLCBBID0gZVtBICsgNCA+PiAyXSwgaSA9IChBID4+IDEpICsgaSB8IDAsIEEgJiAxICYmIChmID0gZVtmICsgZVtpID4+IDJdID4+IDJdKSwgbzJbZiB8IDBdKGssIGkpLCBBID0gXzIoOCksIGkgPSBlW3IgKyAxMiA+PiAyXSwgZVtBID4+IDJdID0gZVtyICsgOCA+PiAyXSwgZVtBICsgNCA+PiAyXSA9IGksIFggPSByICsgMTYgfCAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBNMyhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IFcoMCksIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICBpZiAocikKICAgICAgICAgICAgICAgIGZvciAoOyA7ICkgewogICAgICAgICAgICAgICAgICBmID0gR1tBID4+IDJdOwogICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYgPCBXKDQyOTQ5NjcyOTYpICYgZiA+PSBXKDApKSB7CiAgICAgICAgICAgICAgICAgICAgICBrID0gfn5mID4+PiAwOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGsyKGksIGssIDIpLCBpID0gaSArIDIgfCAwLCBBID0gQSArIDQgfCAwLCB0ID0gdCArIDEgfCAwLCAodCB8IDApID09IChyIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUzMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSBXKDApLCBrID0gMCwgdCA9IDA7CiAgICAgICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgZiA9IEdbQSA+PiAyXTsKICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgIGlmIChmIDwgVyg0Mjk0OTY3Mjk2KSAmIGYgPj0gVygwKSkgewogICAgICAgICAgICAgICAgICAgICAgayA9IH5+ZiA+Pj4gMDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChrMihpLCBrLCA0KSwgaSA9IGkgKyA0IHwgMCwgQSA9IEEgKyA0IHwgMCwgdCA9IHQgKyAxIHwgMCwgKHQgfCAwKSA9PSAociB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIE4zKEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDA7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICByZXR1cm4gaSA9IFggLSAxNiB8IDAsIFggPSBpLCBrID0gaSArIDQgfCAwLCBvMltBIHwgMF0oayksIHIgPSBGW2kgKyAxNSB8IDBdLCBBID0gKHIgfCAwKSA8IDAsIHIgPSBBID8gZVtpICsgOCA+PiAyXSA6IHIsIGYgPSB2MShyICsgNCB8IDApLCBlW2YgPj4gMl0gPSByLCB0ID0gZVtpICsgNCA+PiAyXSwgRjIoZiArIDQgfCAwLCBBID8gdCA6IGssIHIpLCBBICYmIFIodCksIFggPSBpICsgMTYgfCAwLCBmIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBUNihBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICBpID0gY2YoOCksIGVbaSA+PiAyXSA9IDQ5MzEyLCBlW2kgPj4gMl0gPSA0OTQyNCwgciA9IHVlKEEpLCBmID0gXzIociArIDEzIHwgMCksIGVbZiArIDggPj4gMl0gPSAwLCBlW2YgKyA0ID4+IDJdID0gciwgZVtmID4+IDJdID0gciwgayA9IGksIHQgPSBGMihmICsgMTIgfCAwLCBBLCByICsgMSB8IDApLCBlW2sgKyA0ID4+IDJdID0gdCwgZVtpID4+IDJdID0gNDk0NzIsIHc0KGkgfCAwLCA0OTQ4NCwgNSksIFUwKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUDMoQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMDsKICAgICAgICAgICAgICByZXR1cm4gciA9IGVbQSA+PiAyXSwgQSA9IGVbQSArIDQgPj4gMl0sIGkgPSAoQSA+PiAxKSArIGkgfCAwLCBBICYgMSAmJiAociA9IGVbciArIGVbaSA+PiAyXSA+PiAyXSksIEEgPSBvMltyIHwgMF0oaSkgfCAwLCBpID0gXzIoOCksIHIgPSBHMltBICsgNCA+PiAxXSB8IEcyW0EgKyA2ID4+IDFdIDw8IDE2LCBlW2kgPj4gMl0gPSBHMltBID4+IDFdIHwgRzJbQSArIDIgPj4gMV0gPDwgMTYsIGVbaSArIDQgPj4gMl0gPSByLCBpIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBuMShBLCBpLCByLCBmLCBrKSB7CiAgICAgICAgICAgICAgdmFyIHQgPSAwOwogICAgICAgICAgICAgIGlmICh0ID0gWCAtIDI1NiB8IDAsIFggPSB0LCAhKGsgJiA3MzcyOCB8IChyIHwgMCkgPD0gKGYgfCAwKSkpIHsKICAgICAgICAgICAgICAgIGlmIChmID0gciAtIGYgfCAwLCByID0gZiA+Pj4gMCA8IDI1NiwgZDIodCwgaSwgciA/IGYgOiAyNTYpLCAhcikKICAgICAgICAgICAgICAgICAgZm9yICg7IHIxKEEsIHQsIDI1NiksIGYgPSBmIC0gMjU2IHwgMCwgZiA+Pj4gMCA+IDI1NTsgKQogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHIxKEEsIHQsIGYpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBYID0gdCArIDI1NiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gejYoQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDAsIGsgPSAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChlW0EgKyAyMDggPj4gMl0gfHwgKGdyKGVbQSArIDIxMiA+PiAyXSksIGVbQSArIDIxMiA+PiAyXSA9IDAsIChpIHwgMCkgPj0gMCAmJiAoaSA9IFdlKGkpLCBlW0EgKyAyMTIgPj4gMl0gPSBpLCByID0gMSwgaSkpKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZiA9IEEsIGsgPSBXZSgwKSwgZVtmICsgMjEyID4+IDJdID0gaywgciA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiByIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBkNihBLCBpLCByKSB7CiAgICAgICAgICAgICAgdmFyIGYgPSAwOwogICAgICAgICAgICAgIHJldHVybiBmID0gWCAtIDMyIHwgMCwgWCA9IGYsIHRyKEEsIGksIHIsIGYgKyAyMCB8IDAsIGYgKyAxNiB8IDAsIGYgKyAxMiB8IDAsIGYgKyA4IHwgMCwgZiArIDQgfCAwLCBmLCBmICsgMjQgfCAwLCBmICsgMjggfCAwLCAwKSwgWCA9IGYgKyAzMiB8IDAsIFooZVtmICsgMjggPj4gMl0sIFooZVtBICsgMTYgPj4gMl0sIFooZVsoZVtpICsgNzYgPj4gMl0gKyBaKHIsIDU2NDQpIHwgMCkgKyA4ID4+IDJdLCBlW2YgKyAyNCA+PiAyXSkpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBLNihBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMCwgZiA9IDA7CiAgICAgICAgICAgICAgaWYgKGkgPSBlW0EgKyA0ID4+IDJdLCAoaSB8IDApIDw9IDApCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICBmID0gZVtBID4+IDJdLCBBID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBmb3IgKDsgOyApIHsKICAgICAgICAgICAgICAgICAgaWYgKHIgPSBaKEEsIDEyKSArIGYgfCAwLCAhZVtyID4+IDJdKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIGlmIChBID0gQSArIDEgfCAwLCAoaSB8IDApID09IChBIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGVbciArIDQgPj4gMl07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24geDMoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIGsgPSBYIC0gMTYgfCAwLCBYID0gaywgQSA9IHlBKGVbQSArIDYwID4+IDJdLCBpIHwgMCwgciB8IDAsIGYgJiAyNTUsIGsgKyA4IHwgMCkgfCAwLCBBID8gKGVbMTI0ODVdID0gQSwgQSA9IC0xKSA6IEEgPSAwLCBYID0gayArIDE2IHwgMCwgcTIgPSBBID8gLTEgOiBlW2sgKyAxMiA+PiAyXSwgKEEgPyAtMSA6IGVbayArIDggPj4gMl0pIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB2cihBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwOwogICAgICAgICAgICAgIHJldHVybiBpID0gZVtBICsgNzIgPj4gMl0sIGVbQSArIDcyID4+IDJdID0gaSAtIDEgfCBpLCBpID0gZVtBID4+IDJdLCBpICYgOCA/IChlW0EgPj4gMl0gPSBpIHwgMzIsIC0xKSA6IChlW0EgKyA0ID4+IDJdID0gMCwgZVtBICsgOCA+PiAyXSA9IDAsIGkgPSBlW0EgKyA0NCA+PiAyXSwgZVtBICsgMjggPj4gMl0gPSBpLCBlW0EgKyAyMCA+PiAyXSA9IGksIGVbQSArIDE2ID4+IDJdID0gaSArIGVbQSArIDQ4ID4+IDJdLCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBqNihBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMDsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoSVtBICsgMTIgfCAwXSA9PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDEyID4+IDJdID0gNjUyODAsIGVbQSArIDE2ID4+IDJdID0gNywgaSA9IGVbQSArIDggPj4gMl0sIHIgPSAwLCBpID4+PiAwID49IGRbQSArIDQgPj4gMl0pCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgZVtBICsgOCA+PiAyXSA9IGkgKyAxLCBlW0EgKyAxMiA+PiAyXSA9IElbaSB8IDBdIHwgNjUyODA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlW0EgKyAxNiA+PiAyXSA9IDAsIHIgPSAxOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBUMyhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICByZXR1cm4gZiA9IGVbciArIDQgPj4gMl0sIGsgPSBlW3IgPj4gMl0gKyBlW3IgKyA4ID4+IDJdIHwgMCwgKGYgfCAwKSA9PSAoayB8IDApID8gLTEgOiAodCA9IEEsIEEgPSBrIC0gZiB8IDAsIEEgPSBBID4+PiAwIDwgaSA+Pj4gMCA/IEEgOiBpLCBGMih0LCBmLCBBKSwgZVtyICsgNCA+PiAyXSA9IEEgKyBlW3IgKyA0ID4+IDJdLCBBIHwgMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZ2UoQSwgaSkgewogICAgICAgICAgICAgIHZhciByID0gMCwgZiA9IDA7CiAgICAgICAgICAgICAgciA9IElbQSB8IDBdLCBmID0gSVtpIHwgMF07CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFyIHwgKHIgfCAwKSAhPSAoZiB8IDApKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgZm9yICg7IDsgKSB7CiAgICAgICAgICAgICAgICAgIGlmIChmID0gSVtpICsgMSB8IDBdLCByID0gSVtBICsgMSB8IDBdLCAhcikKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBpZiAoaSA9IGkgKyAxIHwgMCwgQSA9IEEgKyAxIHwgMCwgKHIgfCAwKSAhPSAoZiB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gciAtIGYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIElyKEEpIHsKICAgICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKGkgPSBBLCBBID0gdWUoQSksIChfMChpLCAxLCBBLCA0OTY5NikgfCAwKSAhPSAoQSB8IDApKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgaTogewogICAgICAgICAgICAgICAgICBpZiAoZVsxMjQ0NF0gPT0gMTAgfHwgKEEgPSBlWzEyNDI5XSwgKEEgfCAwKSA9PSBlWzEyNDI4XSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaTsKICAgICAgICAgICAgICAgICAgZVsxMjQyOV0gPSBBICsgMSwgRltBIHwgMF0gPSAxMDsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEJyKDQ5Njk2KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gejMoQSwgaSwgcikgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBpID0gcTYoMCksIGVbQSArIDIwOCA+PiAyXSA9IGksIGkgPyAoUjYoaSwgZVtBICsgNzIgPj4gMl0sIEEgKyA4MCB8IDAsIGVbQSArIDIxMiA+PiAyXSkgPyBBID0gMSA6ICh3aShlW0EgKyAyMDggPj4gMl0pLCBlW0EgKyAyMDggPj4gMl0gPSAwLCBBID0gMCksIEEgfCAwKSA6IChRKHIsIDEsIDgyNDYsIDApLCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBMNihBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwLCB0ID0gMDsKICAgICAgICAgICAgICByZXR1cm4gZiA9IFggLSAxNiB8IDAsIFggPSBmLCBrID0gZVtBID4+IDJdLCB0ID0gZiArIDggfCAwLCBBID0gZVtBICsgNCA+PiAyXSwgaSA9IChBID4+IDEpICsgaSB8IDAsIEEgJiAxICYmIChrID0gZVtrICsgZVtpID4+IDJdID4+IDJdKSwgbzJbayB8IDBdKHQsIGksIHIpLCBYID0gZiArIDE2IHwgMCwgZVtmICsgMTIgPj4gMl07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZDMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IFggLSAxNiB8IDAsIFggPSBmLCByKQogICAgICAgICAgICAgICAgZm9yICg7IGgyKEEsIGYgKyAxMiB8IDAsIDIpLCBHW2kgPj4gMl0gPSBkW2YgKyAxMiA+PiAyXSwgaSA9IGkgKyA0IHwgMCwgQSA9IEEgKyAyIHwgMCwgayA9IGsgKyAxIHwgMCwgKGsgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICBYID0gZiArIDE2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBLMyhBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDAsIGsgPSAwOwogICAgICAgICAgICAgIGlmIChmID0gWCAtIDE2IHwgMCwgWCA9IGYsIHIpCiAgICAgICAgICAgICAgICBmb3IgKDsgaDIoQSwgZiArIDEyIHwgMCwgNCksIEdbaSA+PiAyXSA9IGRbZiArIDEyID4+IDJdLCBpID0gaSArIDQgfCAwLCBBID0gQSArIDQgfCAwLCBrID0gayArIDEgfCAwLCAoayB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIFggPSBmICsgMTYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGozKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDA7CiAgICAgICAgICAgICAgaWYgKGYgPSBYIC0gMTYgfCAwLCBYID0gZiwgcikKICAgICAgICAgICAgICAgIGZvciAoOyBoMihBLCBmICsgMTIgfCAwLCAyKSwgZVtpID4+IDJdID0gZVtmICsgMTIgPj4gMl0sIGkgPSBpICsgNCB8IDAsIEEgPSBBICsgMiB8IDAsIGsgPSBrICsgMSB8IDAsIChrIHwgMCkgIT0gKHIgfCAwKTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgWCA9IGYgKyAxNiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gTDMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IFggLSAxNiB8IDAsIFggPSBmLCByKQogICAgICAgICAgICAgICAgZm9yICg7IGgyKEEsIGYgKyAxMiB8IDAsIDQpLCBlW2kgPj4gMl0gPSBlW2YgKyAxMiA+PiAyXSwgaSA9IGkgKyA0IHwgMCwgQSA9IEEgKyA0IHwgMCwgayA9IGsgKyAxIHwgMCwgKGsgfCAwKSAhPSAociB8IDApOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICBYID0gZiArIDE2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB5ZShBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwLCByID0gMDsKICAgICAgICAgICAgICBpID0gZVsxMjQ2MF0sIHIgPSBBICsgNyAmIC04LCBBID0gaSArIHIgfCAwOwogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmICghKEEgPj4+IDAgPD0gaSA+Pj4gMCAmJiByKSAmJiAoQSA+Pj4gMCA8PSBDZigpIDw8IDE2ID4+PiAwIHx8IFZBKEEgfCAwKSB8IDApKQogICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgcmV0dXJuIGVbMTI0ODVdID0gNDgsIC0xOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gZVsxMjQ2MF0gPSBBLCBpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIE8zKEEsIGksIHIpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBpID0gaSB8IDAsIHdpKGVbQSArIDIwOCA+PiAyXSksIGVbQSArIDIwOCA+PiAyXSA9IDAsIGkgPSBlW0EgKyAzMiA+PiAyXSwgaSAmJiAoUihpKSwgZVtBICsgMzIgPj4gMl0gPSAwLCBlW0EgKyAzNiA+PiAyXSA9IDApLCBpID0gZVtBICsgNDQgPj4gMl0sIGkgJiYgKFIoaSksIGVbQSArIDQ0ID4+IDJdID0gMCksIGVbQSArIDQ4ID4+IDJdID0gMCwgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBfMyhBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDA7CiAgICAgICAgICAgICAgdmFyIHIgPSAwLCBmID0gMCwgayA9IDAsIHQgPSAwOwogICAgICAgICAgICAgIHIgPSBYIC0gMTYgfCAwLCBYID0gciwgZiA9IGVbaSArIDE2ID4+IDJdLCBpID0gZVtpICsgMTIgPj4gMl0sIGVbciArIDEyID4+IDJdID0gaSwgZVtyICsgOCA+PiAyXSA9IGYgLSBpLCBrID0gQSwgdCA9IHJyKDI5OTg4LCByICsgOCB8IDApIHwgMCwgZVtrICsgNCA+PiAyXSA9IHQsIGVbQSA+PiAyXSA9IDUwNjU2LCBYID0gciArIDE2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBFMihBLCBpKSB7CiAgICAgICAgICAgICAgdmFyIHIgPSAwLCBmID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9ICFBLCBmIHwgIWkpCiAgICAgICAgICAgICAgICBBID0gcjsKICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgaWYgKGYgfHwgKHIgPSBkMChBLCAwLCBpLCAwKSwgZiA9IHEyLCAoQSB8IGkpID4+PiAwIDwgNjU1MzYpKQogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgIHIgPSBmID8gLTEgOiByOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQSA9IHYxKHIpLCAhQSB8ICEoSVtBIC0gNCB8IDBdICYgMykgfHwgZDIoQSwgMCwgcik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBBOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIE82KEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDA7CiAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgaWYgKCFpIHx8IChpID0gbTEoaSwgNDg3NzIpLCAhaSB8IGVbaSArIDggPj4gMl0gJiAoZVtBICsgOCA+PiAyXSBeIC0xKSkgfHwgIXQxKGVbQSArIDEyID4+IDJdLCBlW2kgKyAxMiA+PiAyXSwgMCkpCiAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICByID0gdDEoZVtBICsgMTYgPj4gMl0sIGVbaSArIDE2ID4+IDJdLCAwKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gYjMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICBpZiAoZiA9IFggLSAxNiB8IDAsIFggPSBmLCByKQogICAgICAgICAgICAgICAgZm9yICg7IGI2KEEsIGYgKyA4IHwgMCksIEdbaSA+PiAyXSA9IFEyW2YgKyA4ID4+IDNdLCBpID0gaSArIDQgfCAwLCBBID0gQSArIDggfCAwLCBrID0gayArIDEgfCAwLCAoayB8IDApICE9IChyIHwgMCk7ICkKICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgIFggPSBmICsgMTYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uICQzKEEsIGkpIHsKICAgICAgICAgICAgICBpZiAoQSA9IEEgfCAwLCBpID0gaSB8IDAsIGkgPSBlW0EgKyAyOCA+PiAyXSwgaSA+Pj4gMCA8IGRbQSArIDMyID4+IDJdKQogICAgICAgICAgICAgICAgZm9yICg7ICQ0KEEsIGVbQSArIDI0ID4+IDJdICsgKFooZVtBICsgMjAgPj4gMl0sIGkpIDw8IDIpIHwgMCksIGkgPSBpICsgMSB8IDAsIGkgPj4+IDAgPCBkW0EgKyAzMiA+PiAyXTsgKQogICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgUihlW0EgPj4gMl0pLCBSKEEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIF82KEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMDsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwLCBrID0gMDsKICAgICAgICAgICAgICByZXR1cm4gciA9IFggLSAxNiB8IDAsIFggPSByLCBmID0gZVtBID4+IDJdLCBrID0gciArIDggfCAwLCBBID0gZVtBICsgNCA+PiAyXSwgaSA9IChBID4+IDEpICsgaSB8IDAsIEEgJiAxICYmIChmID0gZVtmICsgZVtpID4+IDJdID4+IDJdKSwgbzJbZiB8IDBdKGssIGkpLCBYID0gciArIDE2IHwgMCwgZVtyICsgMTIgPj4gMl07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcTMoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwOwogICAgICAgICAgICAgIHJldHVybiBBID0gZVtBICsgMjAwID4+IDJdLCBBICYmIChyID0gZVtpICsgNTYgPj4gMl0sIGYgPSBlW0EgPj4gMl0sIGkgPSBlW2kgKyA2MCA+PiAyXSAtIChlW0EgKyA0ID4+IDJdICsgKHIgPj4+IDAgPCBmID4+PiAwKSB8IDApIHwgMCwgZVtBICsgMTYgPj4gMl0gPSByIC0gZiwgZVtBICsgMjAgPj4gMl0gPSBpKSwgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBlbihBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMDsKICAgICAgICAgICAgICB2YXIgZiA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBYIC0gMTYgfCAwLCBYID0gQSwgZiA9IEEgKyA0IHwgMCwgazIoZiwgMTIsIDQpLCBrMihBICsgOCB8IDAsIDE3ODM2MzZlMywgNCksIGsyKEEgKyAxMiB8IDAsIDIxODc5MzczOCwgNCksIGkgPSBMMChpLCBmLCAxMiwgciksIFggPSBBICsgMTYgfCAwLCAoaSB8IDApID09IDEyIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBiNihBLCBpKSB7CiAgICAgICAgICAgICAgRltpICsgNyB8IDBdID0gSVtBIHwgMF0sIEZbaSArIDYgfCAwXSA9IElbQSArIDEgfCAwXSwgRltpICsgNSB8IDBdID0gSVtBICsgMiB8IDBdLCBGW2kgKyA0IHwgMF0gPSBJW0EgKyAzIHwgMF0sIEZbaSArIDMgfCAwXSA9IElbQSArIDQgfCAwXSwgRltpICsgMiB8IDBdID0gSVtBICsgNSB8IDBdLCBGW2kgKyAxIHwgMF0gPSBJW0EgKyA2IHwgMF0sIEZbaSB8IDBdID0gSVtBICsgNyB8IDBdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHJuKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMDsKICAgICAgICAgICAgICB2YXIgciA9IDAsIGYgPSAwOwogICAgICAgICAgICAgIGlmIChmID0gZVtBICsgMTAwID4+IDJdLCByID0gZVtBICsgMTA0ID4+IDJdIC0gZiA+PiAzLCByID4+PiAwIDwgaSA+Pj4gMCkgewogICAgICAgICAgICAgICAgdjYoQSArIDEwMCB8IDAsIGkgLSByIHwgMCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGkgPj4+IDAgPCByID4+PiAwICYmIChlW0EgKyAxMDQgPj4gMl0gPSAoaSA8PCAzKSArIGYpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIF8yKEEpIHsKICAgICAgICAgICAgICB2YXIgaSA9IDAsIHIgPSAwOwogICAgICAgICAgICAgIGZvciAociA9IEEgPj4+IDAgPD0gMSA/IDEgOiBBOyA7ICkgewogICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICBpZiAoQSA9IHYxKHIpLCBBIHx8IChpID0gZVsxMzA4Ml0sICFpKSkKICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICBvMltpIHwgMF0oKTsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIEEgfHwgKFpmKCksIFUwKCkpLCBBOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHExKEEpIHsKICAgICAgICAgICAgICB2YXIgaSA9IFcoMCksIHIgPSBXKDApOwogICAgICAgICAgICAgIGlmIChpID0gVyhOZShBKSksIHIgPSBXKEEgLSBpKSwgIShyIDwgVygwLjUpKSkgewogICAgICAgICAgICAgICAgaWYgKEEgPSBXKCRpKEEpKSwgciA+IFcoMC41KSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIEE7CiAgICAgICAgICAgICAgICByID0gQSwgQSA9IFcoaSAqIFcoMC41KSksIGkgPSBXKEEgLSBXKE5lKEEpKSkgPT0gVygwKSA/IGkgOiByOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBmbihBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDA7CiAgICAgICAgICAgICAgdmFyIHIgPSAwLCBmID0gMDsKICAgICAgICAgICAgICByZXR1cm4gciA9IGVbaSArIDQgPj4gMl0sIGYgPSBlW2kgPj4gMl0gKyBlW2kgKyA4ID4+IDJdIHwgMCwgKHIgfCAwKSA9PSAoZiB8IDApID8gLTEgOiAoZVtpICsgNCA+PiAyXSA9IEEgKyByLCBpID0gZiAtIHIgfCAwLCAoQSA+Pj4gMCA+IGkgPj4+IDAgPyBpIDogQSkgfCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBBbihBLCBpLCByLCBmLCBrLCB0KSB7CiAgICAgICAgICAgICAgaWYgKEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMCwgayA9IGsgfCAwLCB0ID0gdCB8IDAsIHQxKEEsIGVbaSArIDggPj4gMl0sIHQpKSB7CiAgICAgICAgICAgICAgICBZNihpLCByLCBmLCBrKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgQSA9IGVbQSArIDggPj4gMl0sIG8yW2VbZVtBID4+IDJdICsgMjAgPj4gMl1dKEEsIGksIHIsIGYsIGssIHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uICQ2KEEsIGksIHIpIHsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoQSA9IGVbQSArIDEyID4+IDJdLCAhQSkKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIGZvciAoQSA9IEEgKyAoaSA8PCA0KSB8IDA7IDsgKSB7CiAgICAgICAgICAgICAgICAgIGlmIChlW0EgKyA0ID4+IDJdIDw9IChyIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgaWYgKGVbQSArIDQgPj4gMl0gPSByLCBBID0gZVtBID4+IDJdLCAhQSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gXzAoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHZhciBrID0gMDsKICAgICAgICAgICAgICBrID0gWihpLCByKTsKICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICBpZiAoZVtmICsgNzYgPj4gMl0gPCAwKSB7CiAgICAgICAgICAgICAgICAgIEEgPSBocihBLCBrLCBmKTsKICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEEgPSBocihBLCBrLCBmKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIChrIHwgMCkgPT0gKEEgfCAwKSA/IGkgPyByIDogMCA6IChBID4+PiAwKSAvIChpID4+PiAwKSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24ga24oQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDA7CiAgICAgICAgICAgICAgdmFyIGYgPSAwOwogICAgICAgICAgICAgIHJldHVybiBmID0gZVtpICsgNjAgPj4gMl0sIGVbQSArIDg4ID4+IDJdID0gZVtpICsgNTYgPj4gMl0sIGVbQSArIDkyID4+IDJdID0gZiwgQSA9IG8yW2VbaSArIDQwID4+IDJdXShpLCAyNCwgMCwgcikgfCAwLCAhcTIgJiAoQSB8IDApID09IDI0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG5uKEEsIGksIHIsIGYsIGssIHQsIG4sIGwsIGEsIHUsIG8pIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBrID0gayB8IDAsIHQgPSB0IHwgMCwgbiA9IG4gfCAwLCBsID0gbCB8IDAsIGEgPSBhIHwgMCwgdSA9IHUgfCAwLCBvID0gbyB8IDAsIENlKGVbQSA+PiAyXSwgaSwgciwgZiwgaywgdCwgbiwgbCwgYSwgdSwgbykgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHRuKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMDsKICAgICAgICAgICAgICByZXR1cm4gZiA9IGVbaSArIDYwID4+IDJdLCBlW0EgKyA4MCA+PiAyXSA9IGVbaSArIDU2ID4+IDJdLCBlW0EgKyA4NCA+PiAyXSA9IGYsIEEgPSBvMltlW2kgKyA0MCA+PiAyXV0oaSwgOCwgMCwgcikgfCAwLCAhcTIgJiAoQSB8IDApID09IDg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gbG4oQSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMDsKICAgICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgICAgQSAmJiAoaSA9IGVbQSArIDExNiA+PiAyXSwgaSAmJiAoUihpKSwgZVtBICsgMTE2ID4+IDJdID0gMCksIGkgPSBlW0EgKyAxMjAgPj4gMl0sIGkgJiYgKFIoaSksIGVbQSArIDEyMCA+PiAyXSA9IDApLCBSKGVbQSArIDE0OCA+PiAyXSksIFIoQSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHE2KEEpIHsKICAgICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIGkgPSBFMigxLCA3MiksIGkgPyAoRltpICsgNDAgfCAwXSA9IElbaSArIDQwIHwgMF0gJiAyNTQgfCAoQSB8IDApICE9IDAsIEEgPSBFMigxLCA0KSwgZVtpICsgMjAgPj4gMl0gPSBBLCBBID8gaSA6IChSKGkpLCAwKSkgOiAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGFuKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMCwgayA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIGYgPSByLCBrID0gZVtyID4+IDJdLCByID0gZVtyICsgOCA+PiAyXSwgZVtmICsgNCA+PiAyXSA9IGsgKyAoQSA+Pj4gMCA8IHIgPj4+IDAgJiAoaSB8IDApIDw9IDAgfCAoaSB8IDApIDwgMCA/IEEgOiByKSwgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB1bihBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IFcoZik7CiAgICAgICAgICAgICAgdmFyIGsgPSAwOwogICAgICAgICAgICAgIGsgPSBlW0EgPj4gMl0sIEEgPSBlW0EgKyA0ID4+IDJdLCBpID0gKEEgPj4gMSkgKyBpIHwgMCwgQSAmIDEgJiYgKGsgPSBlW2sgKyBlW2kgPj4gMl0gPj4gMl0pLCBvMltrIHwgMF0oaSwgciwgZik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZWYoQSwgaSwgciwgZikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMDsKICAgICAgICAgICAgICB2YXIgayA9IDA7CiAgICAgICAgICAgICAgayA9IGVbQSA+PiAyXSwgQSA9IGVbQSArIDQgPj4gMl0sIGkgPSAoQSA+PiAxKSArIGkgfCAwLCBBICYgMSAmJiAoayA9IGVbayArIGVbaSA+PiAyXSA+PiAyXSksIG8yW2sgfCAwXShpLCByLCBmKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBvbihBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgaWYgKEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMCwgdDEoQSwgZVtpICsgOCA+PiAyXSwgMCkpIHsKICAgICAgICAgICAgICAgIEo2KGksIHIsIGYpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBBID0gZVtBICsgOCA+PiAyXSwgbzJbZVtlW0EgPj4gMl0gKyAyOCA+PiAyXV0oQSwgaSwgciwgZik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcmYoQSkgewogICAgICAgICAgICAgIGZvciAoQSA9IEEgfCAwOyA7ICkgewogICAgICAgICAgICAgICAgaWYgKEEgPSBlWzEzMDg1XSwgQSkgewogICAgICAgICAgICAgICAgICBlWzEzMDg1XSA9IGVbQSArIDggPj4gMl0sIG8yW2VbQSA+PiAyXV0oZVtBICsgNCA+PiAyXSksIFIoQSk7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIEZbNTIzMzNdID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBmZihBKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwOwogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIGVbQSA+PiAyXSA9IDQ5NDI0LCBpID0gZVtBICsgNCA+PiAyXSAtIDEyIHwgMCwgciA9IGVbaSArIDggPj4gMl0gLSAxIHwgMCwgZVtpICsgOCA+PiAyXSA9IHIsIChyIHwgMCkgPCAwICYmIFIoaSksIEEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGduKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwOwogICAgICAgICAgICAgIHZhciBmID0gMDsKICAgICAgICAgICAgICBmID0gZVtBID4+IDJdLCBBID0gZVtBICsgNCA+PiAyXSwgaSA9IChBID4+IDEpICsgaSB8IDAsIEEgJiAxICYmIChmID0gZVtmICsgZVtpID4+IDJdID4+IDJdKSwgbzJbZiB8IDBdKGksIHIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGhuKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMCwgZVtlW0EgKyA3MiA+PiAyXSArIDE2ID4+IDJdIDw8IDIgIT0gKHIgfCAwKSA/IChRKGYsIDEsIDczMDAsIDApLCBBID0gMCkgOiBBID0gMSwgQSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZGUoQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMDsKICAgICAgICAgICAgICByZXR1cm4gciA9IGVbQSA+PiAyXSwgQSA9IGVbQSArIDQgPj4gMl0sIGkgPSAoQSA+PiAxKSArIGkgfCAwLCBBICYgMSAmJiAociA9IGVbciArIGVbaSA+PiAyXSA+PiAyXSksIG8yW3IgfCAwXShpKSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gc24oQSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMDsKICAgICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgICAgQSAmJiAoaSA9IGVbQSArIDEyID4+IDJdLCBpICYmIChlW0EgKyAxNiA+PiAyXSA9IGksIFIoaSkpLCBpID0gZVtBID4+IDJdLCBpICYmIChlW0EgKyA0ID4+IDJdID0gaSwgUihpKSksIFIoQSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEFmKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgIUEgfCAhaSB8fCAoZVtBICsgMTY0ID4+IDJdID0gZVtpICsgNCA+PiAyXSwgZVtBICsgMTYwID4+IDJdID0gZVtpID4+IDJdLCBlW0EgKyAyMjQgPj4gMl0gPSBlW2kgKyA4MjQ4ID4+IDJdICYgMik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdDEoQSwgaSwgcikgewogICAgICAgICAgICAgIHJldHVybiByID8gKEEgfCAwKSA9PSAoaSB8IDApID8gMSA6ICFnZShlW0EgKyA0ID4+IDJdLCBlW2kgKyA0ID4+IDJdKSA6IGVbQSArIDQgPj4gMl0gPT0gZVtpICsgNCA+PiAyXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBrZihBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDA7CiAgICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICAgIHIgPSBlW0EgPj4gMl0sIEEgPSBlW0EgKyA0ID4+IDJdLCBpID0gKEEgPj4gMSkgKyBpIHwgMCwgQSAmIDEgJiYgKHIgPSBlW3IgKyBlW2kgPj4gMl0gPj4gMl0pLCBvMltyIHwgMF0oaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcGUoKSB7CiAgICAgICAgICAgICAgdmFyIEEgPSAwLCBpID0gMDsKICAgICAgICAgICAgICBpZiAoQSA9IEUyKDEsIDEyKSwgQSkgewogICAgICAgICAgICAgICAgaWYgKGVbQSArIDQgPj4gMl0gPSAxMCwgaSA9IEUyKDEwLCA0KSwgZVtBICsgOCA+PiAyXSA9IGksIGkpCiAgICAgICAgICAgICAgICAgIHJldHVybiBBOwogICAgICAgICAgICAgICAgUihBKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gaGUoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMDsKICAgICAgICAgICAgICByZXR1cm4gaSA9IFggLSAxNiB8IDAsIFggPSBpLCBBID8gKEEgPSBrNihpICsgMTIgfCAwLCAzMiwgQSksIEEgPSBBID8gMCA6IGVbaSArIDEyID4+IDJdKSA6IEEgPSAwLCBYID0gaSArIDE2IHwgMCwgQTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB3bihBLCBpLCByKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIHIgPSBlW2kgKyA2MCA+PiAyXSwgQSA9IGVbQSArIDIwMCA+PiAyXSwgZVtBICsgOCA+PiAyXSA9IGVbaSArIDU2ID4+IDJdLCBlW0EgKyAxMiA+PiAyXSA9IHIsIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUDAoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMDsKICAgICAgICAgICAgICByZXR1cm4gaSA9IFggLSAxNiB8IDAsIFggPSBpLCBBID8gKEEgPSBrNihpICsgMTIgfCAwLCAxNiwgQSksIEEgPSBBID8gMCA6IGVbaSArIDEyID4+IDJdKSA6IEEgPSAwLCBYID0gaSArIDE2IHwgMCwgQTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBsMShBKSB7CiAgICAgICAgICAgICAgaWYgKGVbQSArIDEyID4+IDJdICYmIChlW0EgKyA0MCA+PiAyXSA9IDAsIGVbQSArIDI0ID4+IDJdID4gMCkpCiAgICAgICAgICAgICAgICBmb3IgKDsgZVtBICsgMjQgPj4gMl0gPiAwOyApCiAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBCbihBKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwOwogICAgICAgICAgICAgIHZhciBpID0gMCwgciA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBlW0EgKyA0ID4+IDJdLCBpID0gdWUoQSkgKyAxIHwgMCwgciA9IHYxKGkpLCByID8gQSA9IEYyKHIsIEEsIGkpIDogQSA9IDAsIEEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGNuKEEsIGksIHIsIGYsIGssIHQsIG4pIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBrID0gayB8IDAsIHQgPSB0IHwgMCwgbiA9IG4gfCAwLCBZNChlW0EgPj4gMl0sIGksIHIsIGYsIGssIHQsIG4pIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB2bihBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgQSA9IGVbQSArIDEwMCA+PiAyXSArIChpIDw8IDMpIHwgMCwgaSA9IGVbciArIDQgPj4gMl0sIGVbQSA+PiAyXSA9IGVbciA+PiAyXSwgZVtBICsgNCA+PiAyXSA9IGk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gSW4oQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIEEgPSBlW0EgKyA1NiA+PiAyXSArIChpIDw8IDMpIHwgMCwgaSA9IGVbciArIDQgPj4gMl0sIGVbQSA+PiAyXSA9IGVbciA+PiAyXSwgZVtBICsgNCA+PiAyXSA9IGk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gbWkoQSkgewogICAgICAgICAgICAgIHZhciBpID0gMDsKICAgICAgICAgICAgICBBICYmIChpID0gZVtBICsgNCA+PiAyXSwgaSAmJiBvMltpIHwgMF0oZVtBID4+IDJdKSwgUihlW0EgKyAzMiA+PiAyXSksIGVbQSArIDMyID4+IDJdID0gMCwgUihBKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gWm4oQSwgaSwgcikgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIGkgPSBpIHwgMCwgaSA9IGVbQSArIDUyID4+IDJdLCBpICYmIChSKGkpLCBlW0EgKyA1MiA+PiAyXSA9IDApLCBlW0EgKyA1NiA+PiAyXSA9IDAsIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gQ24oQSwgaSwgciwgZiwgaywgdCkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMCwgayA9IGsgfCAwLCB0ID0gdCB8IDAsIHQxKEEsIGVbaSArIDggPj4gMl0sIHQpICYmIFk2KGksIHIsIGYsIGspOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEduKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgZVtBICsgMzIgPj4gMl0gPSBpLCBpID0gZVtBICsgMTAwID4+IDJdLCAoaSB8IDApICE9IGVbQSArIDEwNCA+PiAyXSAmJiAoZVtBICsgMTA0ID4+IDJdID0gaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gV24oQSwgaSwgciwgZiwgaywgdCkgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDAsIGsgPSBrIHwgMCwgdCA9IHQgfCAwLCBQZShlW0EgPj4gMl0sIGksIHIsIGYsIGssIHQpIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBacigpIHsKICAgICAgICAgICAgICB2YXIgQSA9IDA7CiAgICAgICAgICAgICAgQSA9IGNmKDQpLCBlW0EgPj4gMl0gPSA0OTMxMiwgZVtBID4+IDJdID0gNDkyNzIsIGVbQSA+PiAyXSA9IDQ5MjkyLCB3NChBIHwgMCwgNDkzNzYsIDYpLCBVMCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG1uKEEsIGksIHIsIGYsIGssIHQpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBrID0gayB8IDAsIHQgPSB0IHwgMCwgYTYoZVtBID4+IDJdLCBpLCByLCBmLCBrLCB0KSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24geW4oQSwgaSwgcikgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBBID0gZVtBICsgNTIgPj4gMl0sIGsyKEEsIDY1MzU5LCAyKSwgKEwwKGksIEEsIDIsIHIpIHwgMCkgPT0gMiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcG4oQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCByID8gQSA9IDEgOiAoUShmLCAxLCA3MjExLCAwKSwgQSA9IDApLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBRbihBLCBpLCByKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIEYyKGVbciArIDQgPj4gMl0sIEEsIGkpLCBlW3IgKyA0ID4+IDJdID0gZVtyICsgNCA+PiAyXSArIGksIGkgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFZuKEEsIGksIHIpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCAhZVtBICsgOCA+PiAyXSAmIChlW0EgKyAxOTIgPj4gMl0gIT0gMCAmIGVbQSArIDE5NiA+PiAyXSAhPSAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBLZShBKSB7CiAgICAgICAgICAgICAgQSAmJiAobzJbZVsoZVtBICsgNzYgPj4gMl0gPyAyMCA6IDE2KSArIEEgPj4gMl1dKGVbQSArIDQ4ID4+IDJdKSwgZVtBICsgNDggPj4gMl0gPSAwLCBSKEEpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBZbihBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIGkgPSBYIC0gMTYgfCAwLCBYID0gaSwgZVtpID4+IDJdID0gQSwgSTAoZVsxMTg0N10sIDE0MDMsIGkpLCBYID0gaSArIDE2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBIbihBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIGkgPSBYIC0gMTYgfCAwLCBYID0gaSwgZVtpID4+IDJdID0gQSwgSTAoZVsxMTg0N10sIDEzODIsIGkpLCBYID0gaSArIDE2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBYbihBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIEFmKGVbQSA+PiAyXSwgaSksIEZbQSArIDEyNCB8IDBdID0gMCwgZVtBICsgMTI4ID4+IDJdID0gZVtpICsgODI0OCA+PiAyXSAmIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gRm4oQSkgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIEEgPSBGQShlW0EgKyA2MCA+PiAyXSkgfCAwLCBBID8gKGVbMTI0ODVdID0gQSwgQSA9IC0xKSA6IEEgPSAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBKbihBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDA7CiAgICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICAgIHIgPSBlW2kgKyA0OCA+PiAyXSwgZVtBID4+IDJdID0gZVtpICsgNDQgPj4gMl0sIGVbQSArIDQgPj4gMl0gPSByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFJuKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMDsKICAgICAgICAgICAgICB2YXIgciA9IDA7CiAgICAgICAgICAgICAgciA9IGVbaSArIDU2ID4+IDJdLCBlW0EgPj4gMl0gPSBlW2kgKyA1MiA+PiAyXSwgZVtBICsgNCA+PiAyXSA9IHI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gRW4oQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMDsKICAgICAgICAgICAgICByID0gZVtpICsgNjQgPj4gMl0sIGVbQSA+PiAyXSA9IGVbaSArIDYwID4+IDJdLCBlW0EgKyA0ID4+IDJdID0gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBEbihBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDA7CiAgICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICAgIHIgPSBlW2kgKyA3MiA+PiAyXSwgZVtBID4+IDJdID0gZVtpICsgNjggPj4gMl0sIGVbQSArIDQgPj4gMl0gPSByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIENyKEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDA7CiAgICAgICAgICAgICAgciA9IFggLSAxNiB8IDAsIFggPSByLCBlW3IgKyAxMiA+PiAyXSA9IGksIElpKDQ5Njk2LCBBLCBpLCAwLCAwKSwgWCA9IHIgKyAxNiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gVW4oQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMDsKICAgICAgICAgICAgICByID0gZVtpICsgNCA+PiAyXSwgZVtBICsgNjggPj4gMl0gPSBlW2kgPj4gMl0sIGVbQSArIDcyID4+IDJdID0gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBNbihBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDA7CiAgICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICAgIHIgPSBlW2kgKyA0ID4+IDJdLCBlW0EgKyA3NiA+PiAyXSA9IGVbaSA+PiAyXSwgZVtBICsgODAgPj4gMl0gPSByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFNuKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMDsKICAgICAgICAgICAgICB2YXIgciA9IDA7CiAgICAgICAgICAgICAgciA9IGVbaSArIDQgPj4gMl0sIGVbQSArIDg0ID4+IDJdID0gZVtpID4+IDJdLCBlW0EgKyA4OCA+PiAyXSA9IHI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gTm4oQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwOwogICAgICAgICAgICAgIHZhciByID0gMDsKICAgICAgICAgICAgICByID0gZVtpICsgNCA+PiAyXSwgZVtBICsgOTIgPj4gMl0gPSBlW2kgPj4gMl0sIGVbQSArIDk2ID4+IDJdID0gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBuZihBLCBpLCByLCBmLCBrKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIGYgPSBmIHwgMCwgayA9IGsgfCAwLCBvMltBIHwgMF0oaSwgciwgZiwgaykgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEkwKEEsIGksIHIpIHsKICAgICAgICAgICAgICB2YXIgZiA9IDA7CiAgICAgICAgICAgICAgZiA9IFggLSAxNiB8IDAsIFggPSBmLCBlW2YgKyAxMiA+PiAyXSA9IHIsIElpKEEsIGksIHIsIDAsIDApLCBYID0gZiArIDE2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB0ZihBKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IDsgKSB7CiAgICAgICAgICAgICAgICBpZiAoQSkgewogICAgICAgICAgICAgICAgICBBID0gQSAtIDEgJiBBLCBpID0gaSArIDEgfCAwOwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBQbihBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCB0MShBLCBlW2kgKyA4ID4+IDJdLCAwKSAmJiBKNihpLCByLCBmKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBoMShBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwOwogICAgICAgICAgICAgIHJldHVybiBpID0gQSAmIDMxLCBBID0gMCAtIEEgJiAzMSwgKC0xID4+PiBpICYgLTIpIDw8IGkgfCAoLTEgPDwgQSAmIC0yKSA+Pj4gQTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB4bihBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIGkgPSBYIC0gMTYgfCAwLCBYID0gaSwgZVtpID4+IDJdID0gQSwgQ3IoMTM5MywgaSksIFggPSBpICsgMTYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIFRuKEEsIGkpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgaSA9IFggLSAxNiB8IDAsIFggPSBpLCBlW2kgPj4gMl0gPSBBLCBDcigxNDAzLCBpKSwgWCA9IGkgKyAxNiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gem4oQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCBpID0gWCAtIDE2IHwgMCwgWCA9IGksIGVbaSA+PiAyXSA9IEEsIENyKDEzODIsIGkpLCBYID0gaSArIDE2IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBRZShBKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSAwOwogICAgICAgICAgICAgIEEgJiYgKGkgPSBlW0EgKyAxMiA+PiAyXSwgaSAmJiAoUihpKSwgZVtBICsgMTIgPj4gMl0gPSAwKSwgUihBKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZG4oQSwgaSwgciwgZikgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBmID0gZiB8IDAsIGM2KGVbQSA+PiAyXSwgaSwgciwgZikgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEdyKEEsIGkpIHsKICAgICAgICAgICAgICB2YXIgciA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIHIgPSBFMigxLCA4KSwgciAmJiAoZVtyICsgNCA+PiAyXSA9IGksIGVbciA+PiAyXSA9IEEpLCByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGxmKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZiA9IGYgfCAwLCBvMltBIHwgMF0oaSwgciwgZikgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEtuKEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIEEgPSBlWzEyNDY4XSwgQSA+Pj4gMCA+PSA5ICYmIChQQShBIHwgMCksIGVbMTI0NjhdID0gMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gam4oQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gVyhyKSwgR1tlW0EgKyA0MCA+PiAyXSArIChpIDw8IDIpID4+IDJdID0gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBXcigpIHsKICAgICAgICAgICAgICB2YXIgQSA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBfMig4KSwgZVtBID4+IDJdID0gMCwgZVtBICsgNCA+PiAyXSA9IDAsIEEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIExuKEEsIGksIHIpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgcDYoZVtBID4+IDJdLCBpLCByKSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gT24oQSwgaSwgcikgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCByNihlW0EgPj4gMl0sIGksIHIpIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBfbihBLCBpLCByKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIG00KGVbQSA+PiAyXSwgaSwgcikgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGJuKEEpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBXKFcoWihlW0EgKyA1NTkyID4+IDJdLCAxNCkgLSAxNCA+Pj4gMCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHlpKEEpIHsKICAgICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgICAgQSAmJiAoaSA9IGVbQSArIDggPj4gMl0sIGkgJiYgUihpKSwgUihBKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gJG4oQSwgaSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCBBID0gZVtBID4+IDJdLCBBICYmIChlW0EgKyAxODQgPj4gMl0gPSBpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBxbihBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHEyID0gMCwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBhZigpIHsKICAgICAgICAgICAgICB2YXIgQSA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBFMigxLCAyNCksIEEgfHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBldChBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgZVtBICsgODQgPj4gMl0gPSByLCBDNChBLCBpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBpdChBLCBpLCByKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCB0MShBLCBpLCAwKSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcnQoQSwgaSwgcikgewogICAgICAgICAgICAgIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCByID0gciB8IDAsIHUyW2VbQSA+PiAyXSArIGkgPj4gMV0gPSByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHVmKEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBlW2VbQSA+PiAyXSArIGkgPj4gMl0gPSByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG1yKEEsIGksIHIsIGYpIHsKICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBvZihBLCBpLCByKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIHIgPSByIHwgMCwgRltlW0EgPj4gMl0gKyBpIHwgMF0gPSByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGZ0KEEsIGksIHIpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGkgPSBpIHwgMCwgciA9IHIgfCAwLCBwNChlW0EgPj4gMl0sIGksIHIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEF0KEEpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBvMltlW0EgPj4gMl1dKGVbQSArIDQgPj4gMl0pLCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGplKEEpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA/IDMxIC0gTzAoQSAtIDEgXiBBKSB8IDAgOiAzMjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBrdChBLCBpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCBHMltlW0EgPj4gMl0gKyBpID4+IDFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIG50KEEsIGkpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBpID0gaSB8IDAsIHo2KGVbQSA+PiAyXSwgaSkgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGdmKEEsIGkpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBpID0gaSB8IDAsIGVbZVtBID4+IDJdICsgaSA+PiAyXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB0dChBLCBpLCByKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHEyID0gLTEsIC0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEcxKEEsIGksIHIsIGYsIGssIHQsIG4sIGwpIHsKICAgICAgICAgICAgICBhZShBLCBpLCByLCBmLCBrLCB0LCBuLCBsLCAxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBoZihBLCBpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgaSA9IGkgfCAwLCBJW2VbQSA+PiAyXSArIGkgfCAwXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBsdChBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIEEgJiYgKGVbQSArIDE4NCA+PiAyXSA9IGkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGF0KEEpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBBID0gWCAtIEEgJiAtMTYsIFggPSBBLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBzZihBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgcEEoQSB8IDAsIGkgfCAwLCA4LCAwLCByIHwgMCwgLTEsIGYgfCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBWZShBLCBpLCByKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGU2KEEsIDAsIGksIHIpLCBxMiA9IHRlLCBuZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiByMShBLCBpLCByKSB7CiAgICAgICAgICAgICAgSVtBIHwgMF0gJiAzMiB8fCBocihpLCByLCBBKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB5cihBLCBpLCByKSB7CiAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdXQoQSwgaSwgcikgewogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHdmKEEsIGksIHIpIHsKICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gb3QoKSB7CiAgICAgICAgICAgICAgYzQoMTc2MiwgMSwgMjk3MDAsIDI5Nzc1LCAzLCA0LCAwLCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBuMChBLCBpLCByLCBmKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBlNihBLCBpLCByLCBmKSwgQTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBVMihBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPyB2MShBKSA6IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gZ3QoQSkgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIHo0KGVbQSA+PiAyXSkgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGh0KEEpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBPNChlW0EgPj4gMl0pIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBzdChBLCBpKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBpID0gaSB8IDAsIGVbQSArIDUyID4+IDJdID0gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB3dChBKSB7CiAgICAgICAgICAgICAgQSA9IEEgfCAwLCBlW0EgKyA4NCA+PiAyXSA9IDAsIEM0KEEsIDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIExlKEEpIHsKICAgICAgICAgICAgICBBICYmIChSKGVbQSArIDggPj4gMl0pLCBSKEEpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBCZihBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgbzJbQSB8IDBdKCkgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEJ0KEEpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBlW0EgKyAzMiA+PiAyXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBjdChBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgZVtBICsgNDAgPj4gMl07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdnQoQSkgewogICAgICAgICAgICAgIHJldHVybiBBID0gQSB8IDAsIGVbQSArIDc2ID4+IDJdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEl0KEEpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBlW0EgKyA4MCA+PiAyXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBadChBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgZVtBICsgNCA+PiAyXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBDdChBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgSVtBICsgMzYgfCAwXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBjZihBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHYxKEEgKyA4MCB8IDApICsgODAgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEd0KEEpIHsKICAgICAgICAgICAgICByZXR1cm4gVyhXKDApKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBXdChBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIEEgPSBBIHwgMCwgQSArIDI0IHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBtdChBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIDI5ODQ4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEkxKEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIEEgJiYgUihBKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiB5dChBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIDMwMTcyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHB0KEEpIHsKICAgICAgICAgICAgICByZXR1cm4gMTc0NzsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBRdChBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIDIzNTk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gVnQoQSkgewogICAgICAgICAgICAgIHJldHVybiAxODE2OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHZmKEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIGZmKEEpLCBSKEEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIElmKEEpIHsKICAgICAgICAgICAgICByZXR1cm4gQSA9IEEgfCAwLCBBIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBZdChBKSB7CiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gSHQoQSwgaSkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHNlKEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIFIoQSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gcGkoKSB7CiAgICAgICAgICAgICAgVDYoMTQxNiksIFUwKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gWHQoQSkgewogICAgICAgICAgICAgIHJmKDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEZ0KEEpIHsKICAgICAgICAgICAgICBBID0gQSB8IDAsIFggPSBBOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIEp0KCkgewogICAgICAgICAgICAgIHJldHVybiBYIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBaZigpIHsKICAgICAgICAgICAgICBRQSgpLCBVMCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIHByKEEpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICBNID0gSSwgTjIoKTsKICAgICAgICAgICAgdmFyIG8yID0gcjIoW251bGwsIHQ2LCBLbiwgTjMsIFkzLCBmZiwgSWYsIFdyLCBJMSwga3QsIHJ0LCBoZiwgb2YsIGhmLCBvZiwgV3IsIEkxLCBnZiwgdWYsIFdyLCBJMSwgZ2YsIHVmLCBtdCwgc24sIEJmLCBKMywgQzMsIEw2LCBWaywgXzYsIHByLCBrZiwgbDMsIEQzLCB3dCwgZXQsIGVmLCBXdCwgUDMsIEJ0LCBkZSwgQ3QsIGRlLCBjdCwgZGUsIEpuLCB4NiwgUm4sIHg2LCBFbiwgRG4sIHZ0LCBkZSwgSXQsIGRlLCB4biwgVG4sIHpuLCBUMywgZm4sIGFuLCB5dCwgRTMsIEJmLCBuMywgV2ssIEw2LCBfMywgXzYsIGpBLCBrZiwgR24sIGduLCBVaywgZWYsIHN0LCBJbiwgUzYsIFVuLCBONiwgTW4sIE42LCBTbiwgTm4sIHJuLCB2biwgUzYsIGpuLCB1biwgWW4sIEhuLCBRbiwgb3QsIFo2LCBVNiwgTTYsIGI0LCBBNiwgdXQsIHR0LCB3Ziwgd2YsIEdpLCAkaywgZ2ssIG1rLCBIdCwgUGssIEF0LCBkQSwgdWssIGczLCBVMywgJDMsIHkzLCBfQSwgS0EsIERrLCBraywgeXIsIFZuLCAkQSwgc2ssIGFrLCB0aywgdDMsIEkzLCBxMywgTzMsIFpuLCB5ciwgRjMsIHhrLCBxQSwgeW4sIFhrLCBTaywgVGssIHZrLCBjaywgX2ssIHUzLCBxaywgdjMsIEFrLCB3biwgejMsIGJBLCBibiwgR3QsIE0zLCBTMywgUjMsIGJrLCByaywgb2ssIEtrLCBBMywgcjMsIE9rLCBRaywgT0EsIFYzLCBwbiwgYzMsIEprLCBwaywgaG4sIG1yLCB3aywgTGssIG1yLCBtciwgZmssIGxrLCBkMywgSzMsIFgzLCBiMywgajMsIEwzLCBaMywgSDMsIGlrLCBCMywgTWssIGVuLCBhMywgSWssIGtuLCB0biwgZGssIFEzLCBtMywgazMsIHAzLCBpMywgWmssIFlrLCBoaywgdzMsIEdrLCBqaywgTmssIHo0LCBPNCwgcDQsIHlyLCBpNiwgbHQsIEFmLCBzaSwgajQsIHo2LCBjNiwgcDYsIFY0LCBZNCwgUGUsIENlLCBndCwgaHQsIGZ0LCBmMywgRWssIG50LCBkbiwgTG4sIFJrLCBjbiwgJG4sIFhuLCBCNiwgV24sIG5uLCB5aywgdzYsIG00LCByNiwgSTQsIGE2LCBENCwgZTMsIF9uLCBPbiwgZWssIG1uLCBDaywgVEEsIGxuLCB6QSwgVzMsIEczLCBGbiwgSGssIHgzLCBZdCwgcW4sIExBLCBuaywgaDMsIFh0LCByZiwgSWYsIHNlLCBwciwgcHIsIGl0LCBzZSwgczMsIENuLCBvMywgUG4sIHNlLCBBbiwgemssIG9uLCBzZSwgQmssIHNlLCBRdCwgc2UsIFZ0LCBzZSwgcHQsIHZmLCBadCwgdmZdKTsKICAgICAgICAgICAgZnVuY3Rpb24gQ2YoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGowLmJ5dGVMZW5ndGggLyA2NTUzNiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gUnQoQSkgewogICAgICAgICAgICAgIEEgPSBBIHwgMDsKICAgICAgICAgICAgICB2YXIgaSA9IENmKCkgfCAwLCByID0gaSArIEEgfCAwOwogICAgICAgICAgICAgIGlmIChpIDwgciAmJiByIDwgNjU1MzYpIHsKICAgICAgICAgICAgICAgIHZhciBmID0gbmV3IEFycmF5QnVmZmVyKFoociwgNjU1MzYpKSwgayA9IG5ldyBJbnQ4QXJyYXkoZik7CiAgICAgICAgICAgICAgICBrLnNldChGKSwgRiA9IG5ldyBJbnQ4QXJyYXkoZiksIHUyID0gbmV3IEludDE2QXJyYXkoZiksIGUgPSBuZXcgSW50MzJBcnJheShmKSwgSSA9IG5ldyBVaW50OEFycmF5KGYpLCBHMiA9IG5ldyBVaW50MTZBcnJheShmKSwgZCA9IG5ldyBVaW50MzJBcnJheShmKSwgRyA9IG5ldyBGbG9hdDMyQXJyYXkoZiksIFEyID0gbmV3IEZsb2F0NjRBcnJheShmKSwgajAgPSBmLCBNID0gSTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgRzogT2JqZWN0LmNyZWF0ZShPYmplY3QucHJvdG90eXBlLCB7IGdyb3c6IHsgdmFsdWU6IFJ0IH0sIGJ1ZmZlcjogeyBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHJldHVybiBqMDsKICAgICAgICAgICAgfSB9IH0pLCBIOiBGaywgSTogQm4sIEo6IG8yLCBLOiB2MSwgTDogUiwgTTogRnQsIE46IGF0LCBPOiBKdCwgUDogbGYsIFE6IGxmLCBSOiBuZiwgUzogbmYgfTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBrZShLKTsKICAgICAgICB9KFkpOwogICAgICB9LCBpbnN0YW50aWF0ZTogZnVuY3Rpb24oViwgWSkgewogICAgICAgIHJldHVybiB7IHRoZW46IGZ1bmN0aW9uKFMpIHsKICAgICAgICAgIHZhciBLID0gbmV3IEQxLk1vZHVsZShWKTsKICAgICAgICAgIFMoeyBpbnN0YW5jZTogbmV3IEQxLkluc3RhbmNlKEssIFkpIH0pOwogICAgICAgIH0gfTsKICAgICAgfSwgUnVudGltZUVycm9yOiBFcnJvciwgaXNXYXNtMmpzOiAhMCB9OwogICAgICBEMS5pc1dhc20yanMgJiYgKHJlID0gW10pOwogICAgICB2YXIgVTEsIGlpID0gITEsIFcxLCB2MiwgYiwgSTIsIFQsIEwsIFoyLCBpMjsKICAgICAgZnVuY3Rpb24gJCgpIHsKICAgICAgICB2YXIgViA9IFUxLmJ1ZmZlcjsKICAgICAgICBDMi5IRUFQOCA9IFcxID0gbmV3IEludDhBcnJheShWKSwgQzIuSEVBUDE2ID0gYiA9IG5ldyBJbnQxNkFycmF5KFYpLCBDMi5IRUFQVTggPSB2MiA9IG5ldyBVaW50OEFycmF5KFYpLCBDMi5IRUFQVTE2ID0gSTIgPSBuZXcgVWludDE2QXJyYXkoViksIEMyLkhFQVAzMiA9IFQgPSBuZXcgSW50MzJBcnJheShWKSwgQzIuSEVBUFUzMiA9IEwgPSBuZXcgVWludDMyQXJyYXkoViksIEMyLkhFQVBGMzIgPSBaMiA9IG5ldyBGbG9hdDMyQXJyYXkoViksIEMyLkhFQVBGNjQgPSBpMiA9IG5ldyBGbG9hdDY0QXJyYXkoVik7CiAgICAgIH0KICAgICAgdmFyIGUyID0gW10sIF8gPSBbXSwgdDIgPSBbXTsKICAgICAgZnVuY3Rpb24gQjIoKSB7CiAgICAgICAgaWYgKEMyLnByZVJ1bikKICAgICAgICAgIGZvciAodHlwZW9mIEMyLnByZVJ1biA9PSAiZnVuY3Rpb24iICYmIChDMi5wcmVSdW4gPSBbQzIucHJlUnVuXSk7IEMyLnByZVJ1bi5sZW5ndGg7ICkKICAgICAgICAgICAgQTIoQzIucHJlUnVuLnNoaWZ0KCkpOwogICAgICAgIEMxKGUyKTsKICAgICAgfQogICAgICBmdW5jdGlvbiBWMigpIHsKICAgICAgICBDMShfKTsKICAgICAgfQogICAgICBmdW5jdGlvbiB5MigpIHsKICAgICAgICBpZiAoQzIucG9zdFJ1bikKICAgICAgICAgIGZvciAodHlwZW9mIEMyLnBvc3RSdW4gPT0gImZ1bmN0aW9uIiAmJiAoQzIucG9zdFJ1biA9IFtDMi5wb3N0UnVuXSk7IEMyLnBvc3RSdW4ubGVuZ3RoOyApCiAgICAgICAgICAgIGEyKEMyLnBvc3RSdW4uc2hpZnQoKSk7CiAgICAgICAgQzEodDIpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIEEyKFYpIHsKICAgICAgICBlMi51bnNoaWZ0KFYpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGwyKFYpIHsKICAgICAgICBfLnVuc2hpZnQoVik7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gYTIoVikgewogICAgICAgIHQyLnVuc2hpZnQoVik7CiAgICAgIH0KICAgICAgdmFyIEoyID0gMCwgajIgPSBudWxsOwogICAgICBmdW5jdGlvbiBLMihWKSB7CiAgICAgICAgdmFyIFk7CiAgICAgICAgSjIrKywgKFkgPSBDMi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKSA9PSBudWxsIHx8IFkuY2FsbChDMiwgSjIpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGIyKFYpIHsKICAgICAgICB2YXIgUzsKICAgICAgICBpZiAoSjItLSwgKFMgPSBDMi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKSA9PSBudWxsIHx8IFMuY2FsbChDMiwgSjIpLCBKMiA9PSAwICYmIGoyKSB7CiAgICAgICAgICB2YXIgWSA9IGoyOwogICAgICAgICAgajIgPSBudWxsLCBZKCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIFQyKFYpIHsKICAgICAgICB2YXIgUzsKICAgICAgICAoUyA9IEMyLm9uQWJvcnQpID09IG51bGwgfHwgUy5jYWxsKEMyLCBWKSwgViA9ICJBYm9ydGVkKCIgKyBWICsgIikiLCBMMShWKSwgaWkgPSAhMCwgViArPSAiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7CiAgICAgICAgdmFyIFkgPSBuZXcgRDEuUnVudGltZUVycm9yKFYpOwogICAgICAgIHRocm93IFYxKFkpLCBZOwogICAgICB9CiAgICAgIHZhciB3MCA9ICJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIiwgJDIgPSAoVikgPT4gVi5zdGFydHNXaXRoKHcwKSwgSDIgPSAoVikgPT4gVi5zdGFydHNXaXRoKCJmaWxlOi8vIik7CiAgICAgIGZ1bmN0aW9uIEYwKCkgewogICAgICAgIHZhciBWID0gIm9wZW5qcGVnanMud2FzbSI7CiAgICAgICAgcmV0dXJuICQyKFYpID8gViA6IFNpKFYpOwogICAgICB9CiAgICAgIHZhciBtMDsKICAgICAgZnVuY3Rpb24gUzAoVikgewogICAgICAgIGlmIChWID09IG0wICYmIHJlKQogICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlKTsKICAgICAgICBpZiAodmUpCiAgICAgICAgICByZXR1cm4gdmUoVik7CiAgICAgICAgdGhyb3cgImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIjsKICAgICAgfQogICAgICBhc3luYyBmdW5jdGlvbiB2MChWKSB7CiAgICAgICAgaWYgKCFyZSkKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHZhciBZID0gYXdhaXQgRWUoVik7CiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShZKTsKICAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgfQogICAgICAgIHJldHVybiBTMChWKTsKICAgICAgfQogICAgICBhc3luYyBmdW5jdGlvbiBEMChWLCBZKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBTID0gYXdhaXQgdjAoViksIEsgPSBhd2FpdCBEMS5pbnN0YW50aWF0ZShTLCBZKTsKICAgICAgICAgIHJldHVybiBLOwogICAgICAgIH0gY2F0Y2ggKHIyKSB7CiAgICAgICAgICBMMShgZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogJHtyMn1gKSwgVDIocjIpOwogICAgICAgIH0KICAgICAgfQogICAgICBhc3luYyBmdW5jdGlvbiAkMChWLCBZLCBTKSB7CiAgICAgICAgaWYgKCFWICYmIHR5cGVvZiBEMS5pbnN0YW50aWF0ZVN0cmVhbWluZyA9PSAiZnVuY3Rpb24iICYmICEkMihZKSAmJiAhSDIoWSkgJiYgIUswICYmIHR5cGVvZiBmZXRjaCA9PSAiZnVuY3Rpb24iKQogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdmFyIEsgPSBmZXRjaChZLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pLCByMiA9IGF3YWl0IEQxLmluc3RhbnRpYXRlU3RyZWFtaW5nKEssIFMpOwogICAgICAgICAgICByZXR1cm4gcjI7CiAgICAgICAgICB9IGNhdGNoIChNKSB7CiAgICAgICAgICAgIEwxKGB3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogJHtNfWApLCBMMSgiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb24iKTsKICAgICAgICAgIH0KICAgICAgICByZXR1cm4gRDAoWSwgUyk7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gRzAoKSB7CiAgICAgICAgcmV0dXJuIHsgYTogR0EgfTsKICAgICAgfQogICAgICBhc3luYyBmdW5jdGlvbiBvMSgpIHsKICAgICAgICBmdW5jdGlvbiBWKHIyLCBNKSB7CiAgICAgICAgICByZXR1cm4gQjEgPSByMi5leHBvcnRzLCBVMSA9IEIxLkcsICQoKSwgZHIgPSBCMS5KLCBsMihCMS5IKSwgYjIoKSwgQjE7CiAgICAgICAgfQogICAgICAgIEsyKCk7CiAgICAgICAgZnVuY3Rpb24gWShyMikgewogICAgICAgICAgVihyMi5pbnN0YW5jZSk7CiAgICAgICAgfQogICAgICAgIHZhciBTID0gRzAoKTsKICAgICAgICBpZiAoQzIuaW5zdGFudGlhdGVXYXNtKQogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIEMyLmluc3RhbnRpYXRlV2FzbShTLCBWKTsKICAgICAgICAgIH0gY2F0Y2ggKHIyKSB7CiAgICAgICAgICAgIEwxKGBNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAke3IyfWApLCBWMShyMik7CiAgICAgICAgICB9CiAgICAgICAgbTAgPz8gKG0wID0gRjAoKSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBLID0gYXdhaXQgJDAocmUsIG0wLCBTKTsKICAgICAgICAgIHJldHVybiBZKEspLCBLOwogICAgICAgIH0gY2F0Y2ggKHIyKSB7CiAgICAgICAgICBWMShyMik7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICB9CiAgICAgIHZhciBDMSA9IChWKSA9PiB7CiAgICAgICAgZm9yICg7IFYubGVuZ3RoID4gMDsgKQogICAgICAgICAgVi5zaGlmdCgpKEMyKTsKICAgICAgfTsKICAgICAgQzIubm9FeGl0UnVudGltZTsKICAgICAgdmFyIE0xID0gKFYpID0+IGE0KFYpLCBGMSA9ICgpID0+IG80KCk7CiAgICAgIGNsYXNzIFMxIHsKICAgICAgICBjb25zdHJ1Y3RvcihZKSB7CiAgICAgICAgICB0aGlzLmV4Y1B0ciA9IFksIHRoaXMucHRyID0gWSAtIDI0OwogICAgICAgIH0KICAgICAgICBzZXRfdHlwZShZKSB7CiAgICAgICAgICBMW3RoaXMucHRyICsgNCA+PiAyXSA9IFk7CiAgICAgICAgfQogICAgICAgIGdldF90eXBlKCkgewogICAgICAgICAgcmV0dXJuIExbdGhpcy5wdHIgKyA0ID4+IDJdOwogICAgICAgIH0KICAgICAgICBzZXRfZGVzdHJ1Y3RvcihZKSB7CiAgICAgICAgICBMW3RoaXMucHRyICsgOCA+PiAyXSA9IFk7CiAgICAgICAgfQogICAgICAgIGdldF9kZXN0cnVjdG9yKCkgewogICAgICAgICAgcmV0dXJuIExbdGhpcy5wdHIgKyA4ID4+IDJdOwogICAgICAgIH0KICAgICAgICBzZXRfY2F1Z2h0KFkpIHsKICAgICAgICAgIFkgPSBZID8gMSA6IDAsIFcxW3RoaXMucHRyICsgMTJdID0gWTsKICAgICAgICB9CiAgICAgICAgZ2V0X2NhdWdodCgpIHsKICAgICAgICAgIHJldHVybiBXMVt0aGlzLnB0ciArIDEyXSAhPSAwOwogICAgICAgIH0KICAgICAgICBzZXRfcmV0aHJvd24oWSkgewogICAgICAgICAgWSA9IFkgPyAxIDogMCwgVzFbdGhpcy5wdHIgKyAxM10gPSBZOwogICAgICAgIH0KICAgICAgICBnZXRfcmV0aHJvd24oKSB7CiAgICAgICAgICByZXR1cm4gVzFbdGhpcy5wdHIgKyAxM10gIT0gMDsKICAgICAgICB9CiAgICAgICAgaW5pdChZLCBTKSB7CiAgICAgICAgICB0aGlzLnNldF9hZGp1c3RlZF9wdHIoMCksIHRoaXMuc2V0X3R5cGUoWSksIHRoaXMuc2V0X2Rlc3RydWN0b3IoUyk7CiAgICAgICAgfQogICAgICAgIHNldF9hZGp1c3RlZF9wdHIoWSkgewogICAgICAgICAgTFt0aGlzLnB0ciArIDE2ID4+IDJdID0gWTsKICAgICAgICB9CiAgICAgICAgZ2V0X2FkanVzdGVkX3B0cigpIHsKICAgICAgICAgIHJldHVybiBMW3RoaXMucHRyICsgMTYgPj4gMl07CiAgICAgICAgfQogICAgICB9CiAgICAgIHZhciBzMSA9IDAsIEoxID0gKFYsIFksIFMpID0+IHsKICAgICAgICB2YXIgSyA9IG5ldyBTMShWKTsKICAgICAgICB0aHJvdyBLLmluaXQoWSwgUyksIHMxID0gViwgczE7CiAgICAgIH0sIHEwID0gKCkgPT4gVDIoIiIpLCBSMSA9IHt9LCBEZSA9IChWKSA9PiB7CiAgICAgICAgZm9yICg7IFYubGVuZ3RoOyApIHsKICAgICAgICAgIHZhciBZID0gVi5wb3AoKSwgUyA9IFYucG9wKCk7CiAgICAgICAgICBTKFkpOwogICAgICAgIH0KICAgICAgfTsKICAgICAgZnVuY3Rpb24gTzEoVikgewogICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShMW1YgPj4gMl0pOwogICAgICB9CiAgICAgIHZhciBJZSA9IHt9LCBmZSA9IHt9LCByaSA9IHt9LCBEciwgZmkgPSAoVikgPT4gewogICAgICAgIHRocm93IG5ldyBEcihWKTsKICAgICAgfSwgQWUgPSAoViwgWSwgUykgPT4gewogICAgICAgIFYuZm9yRWFjaCgoczIpID0+IHJpW3MyXSA9IFkpOwogICAgICAgIGZ1bmN0aW9uIEsoczIpIHsKICAgICAgICAgIHZhciBOID0gUyhzMik7CiAgICAgICAgICBOLmxlbmd0aCAhPT0gVi5sZW5ndGggJiYgZmkoIk1pc21hdGNoZWQgdHlwZSBjb252ZXJ0ZXIgY291bnQiKTsKICAgICAgICAgIGZvciAodmFyIE4yID0gMDsgTjIgPCBWLmxlbmd0aDsgKytOMikKICAgICAgICAgICAgTjEoVltOMl0sIE5bTjJdKTsKICAgICAgICB9CiAgICAgICAgdmFyIHIyID0gbmV3IEFycmF5KFkubGVuZ3RoKSwgTSA9IFtdLCBXMiA9IDA7CiAgICAgICAgWS5mb3JFYWNoKChzMiwgTikgPT4gewogICAgICAgICAgZmUuaGFzT3duUHJvcGVydHkoczIpID8gcjJbTl0gPSBmZVtzMl0gOiAoTS5wdXNoKHMyKSwgSWUuaGFzT3duUHJvcGVydHkoczIpIHx8IChJZVtzMl0gPSBbXSksIEllW3MyXS5wdXNoKCgpID0+IHsKICAgICAgICAgICAgcjJbTl0gPSBmZVtzMl0sICsrVzIsIFcyID09PSBNLmxlbmd0aCAmJiBLKHIyKTsKICAgICAgICAgIH0pKTsKICAgICAgICB9KSwgTS5sZW5ndGggPT09IDAgJiYgSyhyMik7CiAgICAgIH0sICRmID0gKFYpID0+IHsKICAgICAgICB2YXIgWSA9IFIxW1ZdOwogICAgICAgIGRlbGV0ZSBSMVtWXTsKICAgICAgICB2YXIgUyA9IFkucmF3Q29uc3RydWN0b3IsIEsgPSBZLnJhd0Rlc3RydWN0b3IsIHIyID0gWS5maWVsZHMsIE0gPSByMi5tYXAoKFcyKSA9PiBXMi5nZXR0ZXJSZXR1cm5UeXBlKS5jb25jYXQocjIubWFwKChXMikgPT4gVzIuc2V0dGVyQXJndW1lbnRUeXBlKSk7CiAgICAgICAgQWUoW1ZdLCBNLCAoVzIpID0+IHsKICAgICAgICAgIHZhciBzMiA9IHt9OwogICAgICAgICAgcmV0dXJuIHIyLmZvckVhY2goKE4sIE4yKSA9PiB7CiAgICAgICAgICAgIHZhciBNMiA9IE4uZmllbGROYW1lLCBhMCA9IFcyW04yXSwgSjAgPSBOLmdldHRlciwgVzAgPSBOLmdldHRlckNvbnRleHQsIEEwID0gVzJbTjIgKyByMi5sZW5ndGhdLCBOMCA9IE4uc2V0dGVyLCBnMSA9IE4uc2V0dGVyQ29udGV4dDsKICAgICAgICAgICAgczJbTTJdID0geyByZWFkOiAoVTApID0+IGEwLmZyb21XaXJlVHlwZShKMChXMCwgVTApKSwgd3JpdGU6IChVMCwga2UpID0+IHsKICAgICAgICAgICAgICB2YXIgVjAgPSBbXTsKICAgICAgICAgICAgICBOMChnMSwgVTAsIEEwLnRvV2lyZVR5cGUoVjAsIGtlKSksIERlKFYwKTsKICAgICAgICAgICAgfSB9OwogICAgICAgICAgfSksIFt7IG5hbWU6IFkubmFtZSwgZnJvbVdpcmVUeXBlOiAoTikgPT4gewogICAgICAgICAgICB2YXIgTjIgPSB7fTsKICAgICAgICAgICAgZm9yICh2YXIgTTIgaW4gczIpCiAgICAgICAgICAgICAgTjJbTTJdID0gczJbTTJdLnJlYWQoTik7CiAgICAgICAgICAgIHJldHVybiBLKE4pLCBOMjsKICAgICAgICAgIH0sIHRvV2lyZVR5cGU6IChOLCBOMikgPT4gewogICAgICAgICAgICBmb3IgKHZhciBNMiBpbiBzMikKICAgICAgICAgICAgICBpZiAoIShNMiBpbiBOMikpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBNaXNzaW5nIGZpZWxkOiAiJHtNMn0iYCk7CiAgICAgICAgICAgIHZhciBhMCA9IFMoKTsKICAgICAgICAgICAgZm9yIChNMiBpbiBzMikKICAgICAgICAgICAgICBzMltNMl0ud3JpdGUoYTAsIE4yW00yXSk7CiAgICAgICAgICAgIHJldHVybiBOICE9PSBudWxsICYmIE4ucHVzaChLLCBhMCksIGEwOwogICAgICAgICAgfSwgYXJnUGFja0FkdmFuY2U6IFAxLCByZWFkVmFsdWVGcm9tUG9pbnRlcjogTzEsIGRlc3RydWN0b3JGdW5jdGlvbjogSyB9XTsKICAgICAgICB9KTsKICAgICAgfSwgcWYgPSAoViwgWSwgUywgSywgcjIpID0+IHsKICAgICAgfSwgZTggPSAoKSA9PiB7CiAgICAgICAgZm9yICh2YXIgViA9IG5ldyBBcnJheSgyNTYpLCBZID0gMDsgWSA8IDI1NjsgKytZKQogICAgICAgICAgVltZXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoWSk7CiAgICAgICAgVXIgPSBWOwogICAgICB9LCBVciwgdzEgPSAoVikgPT4gewogICAgICAgIGZvciAodmFyIFkgPSAiIiwgUyA9IFY7IHYyW1NdOyApCiAgICAgICAgICBZICs9IFVyW3YyW1MrK11dOwogICAgICAgIHJldHVybiBZOwogICAgICB9LCBaZSwgeTAgPSAoVikgPT4gewogICAgICAgIHRocm93IG5ldyBaZShWKTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gaTgoViwgWSwgUyA9IHt9KSB7CiAgICAgICAgdmFyIEsgPSBZLm5hbWU7CiAgICAgICAgaWYgKFYgfHwgeTAoYHR5cGUgIiR7S30iIG11c3QgaGF2ZSBhIHBvc2l0aXZlIGludGVnZXIgdHlwZWlkIHBvaW50ZXJgKSwgZmUuaGFzT3duUHJvcGVydHkoVikpIHsKICAgICAgICAgIGlmIChTLmlnbm9yZUR1cGxpY2F0ZVJlZ2lzdHJhdGlvbnMpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIHkwKGBDYW5ub3QgcmVnaXN0ZXIgdHlwZSAnJHtLfScgdHdpY2VgKTsKICAgICAgICB9CiAgICAgICAgaWYgKGZlW1ZdID0gWSwgZGVsZXRlIHJpW1ZdLCBJZS5oYXNPd25Qcm9wZXJ0eShWKSkgewogICAgICAgICAgdmFyIHIyID0gSWVbVl07CiAgICAgICAgICBkZWxldGUgSWVbVl0sIHIyLmZvckVhY2goKE0pID0+IE0oKSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIE4xKFYsIFksIFMgPSB7fSkgewogICAgICAgIHJldHVybiBpOChWLCBZLCBTKTsKICAgICAgfQogICAgICB2YXIgUDEgPSA4LCByOCA9IChWLCBZLCBTLCBLKSA9PiB7CiAgICAgICAgWSA9IHcxKFkpLCBOMShWLCB7IG5hbWU6IFksIGZyb21XaXJlVHlwZTogZnVuY3Rpb24ocjIpIHsKICAgICAgICAgIHJldHVybiAhIXIyOwogICAgICAgIH0sIHRvV2lyZVR5cGU6IGZ1bmN0aW9uKHIyLCBNKSB7CiAgICAgICAgICByZXR1cm4gTSA/IFMgOiBLOwogICAgICAgIH0sIGFyZ1BhY2tBZHZhbmNlOiBQMSwgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IGZ1bmN0aW9uKHIyKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUodjJbcjJdKTsKICAgICAgICB9LCBkZXN0cnVjdG9yRnVuY3Rpb246IG51bGwgfSk7CiAgICAgIH0sIGY4ID0gKFYpID0+ICh7IGNvdW50OiBWLmNvdW50LCBkZWxldGVTY2hlZHVsZWQ6IFYuZGVsZXRlU2NoZWR1bGVkLCBwcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZTogVi5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSwgcHRyOiBWLnB0ciwgcHRyVHlwZTogVi5wdHJUeXBlLCBzbWFydFB0cjogVi5zbWFydFB0ciwgc21hcnRQdHJUeXBlOiBWLnNtYXJ0UHRyVHlwZSB9KSwgUGkgPSAoVikgPT4gewogICAgICAgIGZ1bmN0aW9uIFkoUykgewogICAgICAgICAgcmV0dXJuIFMuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MubmFtZTsKICAgICAgICB9CiAgICAgICAgeTAoWShWKSArICIgaW5zdGFuY2UgYWxyZWFkeSBkZWxldGVkIik7CiAgICAgIH0sIHhpID0gITEsIE1yID0gKFYpID0+IHsKICAgICAgfSwgQTggPSAoVikgPT4gewogICAgICAgIFYuc21hcnRQdHIgPyBWLnNtYXJ0UHRyVHlwZS5yYXdEZXN0cnVjdG9yKFYuc21hcnRQdHIpIDogVi5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5yYXdEZXN0cnVjdG9yKFYucHRyKTsKICAgICAgfSwgU3IgPSAoVikgPT4gewogICAgICAgIFYuY291bnQudmFsdWUgLT0gMTsKICAgICAgICB2YXIgWSA9IFYuY291bnQudmFsdWUgPT09IDA7CiAgICAgICAgWSAmJiBBOChWKTsKICAgICAgfSwgTnIgPSAoViwgWSwgUykgPT4gewogICAgICAgIGlmIChZID09PSBTKQogICAgICAgICAgcmV0dXJuIFY7CiAgICAgICAgaWYgKFMuYmFzZUNsYXNzID09PSB2b2lkIDApCiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB2YXIgSyA9IE5yKFYsIFksIFMuYmFzZUNsYXNzKTsKICAgICAgICByZXR1cm4gSyA9PT0gbnVsbCA/IG51bGwgOiBTLmRvd25jYXN0KEspOwogICAgICB9LCBQciA9IHt9LCBrOCA9IHt9LCBuOCA9IChWLCBZKSA9PiB7CiAgICAgICAgZm9yIChZID09PSB2b2lkIDAgJiYgeTAoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpOyBWLmJhc2VDbGFzczsgKQogICAgICAgICAgWSA9IFYudXBjYXN0KFkpLCBWID0gVi5iYXNlQ2xhc3M7CiAgICAgICAgcmV0dXJuIFk7CiAgICAgIH0sIHQ4ID0gKFYsIFkpID0+IChZID0gbjgoViwgWSksIGs4W1ldKSwgQWkgPSAoViwgWSkgPT4gewogICAgICAgICghWS5wdHJUeXBlIHx8ICFZLnB0cikgJiYgZmkoIm1ha2VDbGFzc0hhbmRsZSByZXF1aXJlcyBwdHIgYW5kIHB0clR5cGUiKTsKICAgICAgICB2YXIgUyA9ICEhWS5zbWFydFB0clR5cGUsIEsgPSAhIVkuc21hcnRQdHI7CiAgICAgICAgcmV0dXJuIFMgIT09IEsgJiYgZmkoIkJvdGggc21hcnRQdHJUeXBlIGFuZCBzbWFydFB0ciBtdXN0IGJlIHNwZWNpZmllZCIpLCBZLmNvdW50ID0geyB2YWx1ZTogMSB9LCBVZShPYmplY3QuY3JlYXRlKFYsIHsgJCQ6IHsgdmFsdWU6IFksIHdyaXRhYmxlOiAhMCB9IH0pKTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gbDgoVikgewogICAgICAgIHZhciBZID0gdGhpcy5nZXRQb2ludGVlKFYpOwogICAgICAgIGlmICghWSkKICAgICAgICAgIHJldHVybiB0aGlzLmRlc3RydWN0b3IoViksIG51bGw7CiAgICAgICAgdmFyIFMgPSB0OCh0aGlzLnJlZ2lzdGVyZWRDbGFzcywgWSk7CiAgICAgICAgaWYgKFMgIT09IHZvaWQgMCkgewogICAgICAgICAgaWYgKFMuJCQuY291bnQudmFsdWUgPT09IDApCiAgICAgICAgICAgIHJldHVybiBTLiQkLnB0ciA9IFksIFMuJCQuc21hcnRQdHIgPSBWLCBTLmNsb25lKCk7CiAgICAgICAgICB2YXIgSyA9IFMuY2xvbmUoKTsKICAgICAgICAgIHJldHVybiB0aGlzLmRlc3RydWN0b3IoViksIEs7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHIyKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNTbWFydFBvaW50ZXIgPyBBaSh0aGlzLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSwgeyBwdHJUeXBlOiB0aGlzLnBvaW50ZWVUeXBlLCBwdHI6IFksIHNtYXJ0UHRyVHlwZTogdGhpcywgc21hcnRQdHI6IFYgfSkgOiBBaSh0aGlzLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSwgeyBwdHJUeXBlOiB0aGlzLCBwdHI6IFYgfSk7CiAgICAgICAgfQogICAgICAgIHZhciBNID0gdGhpcy5yZWdpc3RlcmVkQ2xhc3MuZ2V0QWN0dWFsVHlwZShZKSwgVzIgPSBQcltNXTsKICAgICAgICBpZiAoIVcyKQogICAgICAgICAgcmV0dXJuIHIyLmNhbGwodGhpcyk7CiAgICAgICAgdmFyIHMyOwogICAgICAgIHRoaXMuaXNDb25zdCA/IHMyID0gVzIuY29uc3RQb2ludGVyVHlwZSA6IHMyID0gVzIucG9pbnRlclR5cGU7CiAgICAgICAgdmFyIE4gPSBOcihZLCB0aGlzLnJlZ2lzdGVyZWRDbGFzcywgczIucmVnaXN0ZXJlZENsYXNzKTsKICAgICAgICByZXR1cm4gTiA9PT0gbnVsbCA/IHIyLmNhbGwodGhpcykgOiB0aGlzLmlzU21hcnRQb2ludGVyID8gQWkoczIucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLCB7IHB0clR5cGU6IHMyLCBwdHI6IE4sIHNtYXJ0UHRyVHlwZTogdGhpcywgc21hcnRQdHI6IFYgfSkgOiBBaShzMi5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUsIHsgcHRyVHlwZTogczIsIHB0cjogTiB9KTsKICAgICAgfQogICAgICB2YXIgVWUgPSAoVikgPT4gdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5ID4gInUiID8gKFVlID0gKFkpID0+IFksIFYpIDogKHhpID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KChZKSA9PiB7CiAgICAgICAgU3IoWS4kJCk7CiAgICAgIH0pLCBVZSA9IChZKSA9PiB7CiAgICAgICAgdmFyIFMgPSBZLiQkLCBLID0gISFTLnNtYXJ0UHRyOwogICAgICAgIGlmIChLKSB7CiAgICAgICAgICB2YXIgcjIgPSB7ICQkOiBTIH07CiAgICAgICAgICB4aS5yZWdpc3RlcihZLCByMiwgWSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBZOwogICAgICB9LCBNciA9IChZKSA9PiB4aS51bnJlZ2lzdGVyKFkpLCBVZShWKSksIGE4ID0gKCkgPT4gewogICAgICAgIE9iamVjdC5hc3NpZ24oa2kucHJvdG90eXBlLCB7IGlzQWxpYXNPZihWKSB7CiAgICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2Yga2kpIHx8ICEoViBpbnN0YW5jZW9mIGtpKSkKICAgICAgICAgICAgcmV0dXJuICExOwogICAgICAgICAgdmFyIFkgPSB0aGlzLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLCBTID0gdGhpcy4kJC5wdHI7CiAgICAgICAgICBWLiQkID0gVi4kJDsKICAgICAgICAgIGZvciAodmFyIEsgPSBWLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLCByMiA9IFYuJCQucHRyOyBZLmJhc2VDbGFzczsgKQogICAgICAgICAgICBTID0gWS51cGNhc3QoUyksIFkgPSBZLmJhc2VDbGFzczsKICAgICAgICAgIGZvciAoOyBLLmJhc2VDbGFzczsgKQogICAgICAgICAgICByMiA9IEsudXBjYXN0KHIyKSwgSyA9IEsuYmFzZUNsYXNzOwogICAgICAgICAgcmV0dXJuIFkgPT09IEsgJiYgUyA9PT0gcjI7CiAgICAgICAgfSwgY2xvbmUoKSB7CiAgICAgICAgICBpZiAodGhpcy4kJC5wdHIgfHwgUGkodGhpcyksIHRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpCiAgICAgICAgICAgIHJldHVybiB0aGlzLiQkLmNvdW50LnZhbHVlICs9IDEsIHRoaXM7CiAgICAgICAgICB2YXIgViA9IFVlKE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLCB7ICQkOiB7IHZhbHVlOiBmOCh0aGlzLiQkKSB9IH0pKTsKICAgICAgICAgIHJldHVybiBWLiQkLmNvdW50LnZhbHVlICs9IDEsIFYuJCQuZGVsZXRlU2NoZWR1bGVkID0gITEsIFY7CiAgICAgICAgfSwgZGVsZXRlKCkgewogICAgICAgICAgdGhpcy4kJC5wdHIgfHwgUGkodGhpcyksIHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkICYmICF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlICYmIHkwKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIiksIE1yKHRoaXMpLCBTcih0aGlzLiQkKSwgdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSB8fCAodGhpcy4kJC5zbWFydFB0ciA9IHZvaWQgMCwgdGhpcy4kJC5wdHIgPSB2b2lkIDApOwogICAgICAgIH0sIGlzRGVsZXRlZCgpIHsKICAgICAgICAgIHJldHVybiAhdGhpcy4kJC5wdHI7CiAgICAgICAgfSwgZGVsZXRlTGF0ZXIoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy4kJC5wdHIgfHwgUGkodGhpcyksIHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkICYmICF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlICYmIHkwKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIiksIHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkID0gITAsIHRoaXM7CiAgICAgICAgfSB9KTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24ga2koKSB7CiAgICAgIH0KICAgICAgdmFyIE1lID0gKFYsIFkpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLCAibmFtZSIsIHsgdmFsdWU6IFYgfSksIHhyID0gKFYsIFksIFMpID0+IHsKICAgICAgICBpZiAoVltZXS5vdmVybG9hZFRhYmxlID09PSB2b2lkIDApIHsKICAgICAgICAgIHZhciBLID0gVltZXTsKICAgICAgICAgIFZbWV0gPSBmdW5jdGlvbiguLi5yMikgewogICAgICAgICAgICByZXR1cm4gVltZXS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KHIyLmxlbmd0aCkgfHwgeTAoYEZ1bmN0aW9uICcke1N9JyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgKCR7cjIubGVuZ3RofSkgLSBleHBlY3RzIG9uZSBvZiAoJHtWW1ldLm92ZXJsb2FkVGFibGV9KSFgKSwgVltZXS5vdmVybG9hZFRhYmxlW3IyLmxlbmd0aF0uYXBwbHkodGhpcywgcjIpOwogICAgICAgICAgfSwgVltZXS5vdmVybG9hZFRhYmxlID0gW10sIFZbWV0ub3ZlcmxvYWRUYWJsZVtLLmFyZ0NvdW50XSA9IEs7CiAgICAgICAgfQogICAgICB9LCBUciA9IChWLCBZLCBTKSA9PiB7CiAgICAgICAgQzIuaGFzT3duUHJvcGVydHkoVikgPyAoKFMgPT09IHZvaWQgMCB8fCBDMltWXS5vdmVybG9hZFRhYmxlICE9PSB2b2lkIDAgJiYgQzJbVl0ub3ZlcmxvYWRUYWJsZVtTXSAhPT0gdm9pZCAwKSAmJiB5MChgQ2Fubm90IHJlZ2lzdGVyIHB1YmxpYyBuYW1lICcke1Z9JyB0d2ljZWApLCB4cihDMiwgViwgViksIEMyW1ZdLm92ZXJsb2FkVGFibGUuaGFzT3duUHJvcGVydHkoUykgJiYgeTAoYENhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBvdmVybG9hZHMgb2YgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgKCR7U30pIWApLCBDMltWXS5vdmVybG9hZFRhYmxlW1NdID0gWSkgOiAoQzJbVl0gPSBZLCBDMltWXS5hcmdDb3VudCA9IFMpOwogICAgICB9LCB1OCA9IDQ4LCBvOCA9IDU3LCBnOCA9IChWKSA9PiB7CiAgICAgICAgViA9IFYucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCAiJCIpOwogICAgICAgIHZhciBZID0gVi5jaGFyQ29kZUF0KDApOwogICAgICAgIHJldHVybiBZID49IHU4ICYmIFkgPD0gbzggPyBgXyR7Vn1gIDogVjsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gaDgoViwgWSwgUywgSywgcjIsIE0sIFcyLCBzMikgewogICAgICAgIHRoaXMubmFtZSA9IFYsIHRoaXMuY29uc3RydWN0b3IgPSBZLCB0aGlzLmluc3RhbmNlUHJvdG90eXBlID0gUywgdGhpcy5yYXdEZXN0cnVjdG9yID0gSywgdGhpcy5iYXNlQ2xhc3MgPSByMiwgdGhpcy5nZXRBY3R1YWxUeXBlID0gTSwgdGhpcy51cGNhc3QgPSBXMiwgdGhpcy5kb3duY2FzdCA9IHMyLCB0aGlzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zID0gW107CiAgICAgIH0KICAgICAgdmFyIFRpID0gKFYsIFksIFMpID0+IHsKICAgICAgICBmb3IgKDsgWSAhPT0gUzsgKQogICAgICAgICAgWS51cGNhc3QgfHwgeTAoYEV4cGVjdGVkIG51bGwgb3IgaW5zdGFuY2Ugb2YgJHtTLm5hbWV9LCBnb3QgYW4gaW5zdGFuY2Ugb2YgJHtZLm5hbWV9YCksIFYgPSBZLnVwY2FzdChWKSwgWSA9IFkuYmFzZUNsYXNzOwogICAgICAgIHJldHVybiBWOwogICAgICB9OwogICAgICBmdW5jdGlvbiBzOChWLCBZKSB7CiAgICAgICAgaWYgKFkgPT09IG51bGwpCiAgICAgICAgICByZXR1cm4gdGhpcy5pc1JlZmVyZW5jZSAmJiB5MChgbnVsbCBpcyBub3QgYSB2YWxpZCAke3RoaXMubmFtZX1gKSwgMDsKICAgICAgICBZLiQkIHx8IHkwKGBDYW5ub3QgcGFzcyAiJHtMaShZKX0iIGFzIGEgJHt0aGlzLm5hbWV9YCksIFkuJCQucHRyIHx8IHkwKGBDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAke3RoaXMubmFtZX1gKTsKICAgICAgICB2YXIgUyA9IFkuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsIEsgPSBUaShZLiQkLnB0ciwgUywgdGhpcy5yZWdpc3RlcmVkQ2xhc3MpOwogICAgICAgIHJldHVybiBLOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIHc4KFYsIFkpIHsKICAgICAgICB2YXIgUzsKICAgICAgICBpZiAoWSA9PT0gbnVsbCkKICAgICAgICAgIHJldHVybiB0aGlzLmlzUmVmZXJlbmNlICYmIHkwKGBudWxsIGlzIG5vdCBhIHZhbGlkICR7dGhpcy5uYW1lfWApLCB0aGlzLmlzU21hcnRQb2ludGVyID8gKFMgPSB0aGlzLnJhd0NvbnN0cnVjdG9yKCksIFYgIT09IG51bGwgJiYgVi5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvciwgUyksIFMpIDogMDsKICAgICAgICAoIVkgfHwgIVkuJCQpICYmIHkwKGBDYW5ub3QgcGFzcyAiJHtMaShZKX0iIGFzIGEgJHt0aGlzLm5hbWV9YCksIFkuJCQucHRyIHx8IHkwKGBDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAke3RoaXMubmFtZX1gKSwgIXRoaXMuaXNDb25zdCAmJiBZLiQkLnB0clR5cGUuaXNDb25zdCAmJiB5MChgQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAke1kuJCQuc21hcnRQdHJUeXBlID8gWS4kJC5zbWFydFB0clR5cGUubmFtZSA6IFkuJCQucHRyVHlwZS5uYW1lfSB0byBwYXJhbWV0ZXIgdHlwZSAke3RoaXMubmFtZX1gKTsKICAgICAgICB2YXIgSyA9IFkuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7CiAgICAgICAgaWYgKFMgPSBUaShZLiQkLnB0ciwgSywgdGhpcy5yZWdpc3RlcmVkQ2xhc3MpLCB0aGlzLmlzU21hcnRQb2ludGVyKQogICAgICAgICAgc3dpdGNoIChZLiQkLnNtYXJ0UHRyID09PSB2b2lkIDAgJiYgeTAoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIiksIHRoaXMuc2hhcmluZ1BvbGljeSkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgWS4kJC5zbWFydFB0clR5cGUgPT09IHRoaXMgPyBTID0gWS4kJC5zbWFydFB0ciA6IHkwKGBDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICR7WS4kJC5zbWFydFB0clR5cGUgPyBZLiQkLnNtYXJ0UHRyVHlwZS5uYW1lIDogWS4kJC5wdHJUeXBlLm5hbWV9IHRvIHBhcmFtZXRlciB0eXBlICR7dGhpcy5uYW1lfWApOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgUyA9IFkuJCQuc21hcnRQdHI7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBpZiAoWS4kJC5zbWFydFB0clR5cGUgPT09IHRoaXMpCiAgICAgICAgICAgICAgICBTID0gWS4kJC5zbWFydFB0cjsKICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciByMiA9IFkuY2xvbmUoKTsKICAgICAgICAgICAgICAgIFMgPSB0aGlzLnJhd1NoYXJlKFMsIHgxLnRvSGFuZGxlKCgpID0+IHIyLmRlbGV0ZSgpKSksIFYgIT09IG51bGwgJiYgVi5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvciwgUyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHkwKCJVbnN1cHBvcnRpbmcgc2hhcmluZyBwb2xpY3kiKTsKICAgICAgICAgIH0KICAgICAgICByZXR1cm4gUzsKICAgICAgfQogICAgICBmdW5jdGlvbiBCOChWLCBZKSB7CiAgICAgICAgaWYgKFkgPT09IG51bGwpCiAgICAgICAgICByZXR1cm4gdGhpcy5pc1JlZmVyZW5jZSAmJiB5MChgbnVsbCBpcyBub3QgYSB2YWxpZCAke3RoaXMubmFtZX1gKSwgMDsKICAgICAgICBZLiQkIHx8IHkwKGBDYW5ub3QgcGFzcyAiJHtMaShZKX0iIGFzIGEgJHt0aGlzLm5hbWV9YCksIFkuJCQucHRyIHx8IHkwKGBDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAke3RoaXMubmFtZX1gKSwgWS4kJC5wdHJUeXBlLmlzQ29uc3QgJiYgeTAoYENhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgJHtZLiQkLnB0clR5cGUubmFtZX0gdG8gcGFyYW1ldGVyIHR5cGUgJHt0aGlzLm5hbWV9YCk7CiAgICAgICAgdmFyIFMgPSBZLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLCBLID0gVGkoWS4kJC5wdHIsIFMsIHRoaXMucmVnaXN0ZXJlZENsYXNzKTsKICAgICAgICByZXR1cm4gSzsKICAgICAgfQogICAgICB2YXIgYzggPSAoKSA9PiB7CiAgICAgICAgT2JqZWN0LmFzc2lnbihuaS5wcm90b3R5cGUsIHsgZ2V0UG9pbnRlZShWKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5yYXdHZXRQb2ludGVlICYmIChWID0gdGhpcy5yYXdHZXRQb2ludGVlKFYpKSwgVjsKICAgICAgICB9LCBkZXN0cnVjdG9yKFYpIHsKICAgICAgICAgIHZhciBZOwogICAgICAgICAgKFkgPSB0aGlzLnJhd0Rlc3RydWN0b3IpID09IG51bGwgfHwgWS5jYWxsKHRoaXMsIFYpOwogICAgICAgIH0sIGFyZ1BhY2tBZHZhbmNlOiBQMSwgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IE8xLCBmcm9tV2lyZVR5cGU6IGw4IH0pOwogICAgICB9OwogICAgICBmdW5jdGlvbiBuaShWLCBZLCBTLCBLLCByMiwgTSwgVzIsIHMyLCBOLCBOMiwgTTIpIHsKICAgICAgICB0aGlzLm5hbWUgPSBWLCB0aGlzLnJlZ2lzdGVyZWRDbGFzcyA9IFksIHRoaXMuaXNSZWZlcmVuY2UgPSBTLCB0aGlzLmlzQ29uc3QgPSBLLCB0aGlzLmlzU21hcnRQb2ludGVyID0gcjIsIHRoaXMucG9pbnRlZVR5cGUgPSBNLCB0aGlzLnNoYXJpbmdQb2xpY3kgPSBXMiwgdGhpcy5yYXdHZXRQb2ludGVlID0gczIsIHRoaXMucmF3Q29uc3RydWN0b3IgPSBOLCB0aGlzLnJhd1NoYXJlID0gTjIsIHRoaXMucmF3RGVzdHJ1Y3RvciA9IE0yLCAhcjIgJiYgWS5iYXNlQ2xhc3MgPT09IHZvaWQgMCA/IEsgPyAodGhpcy50b1dpcmVUeXBlID0gczgsIHRoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uID0gbnVsbCkgOiAodGhpcy50b1dpcmVUeXBlID0gQjgsIHRoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uID0gbnVsbCkgOiB0aGlzLnRvV2lyZVR5cGUgPSB3ODsKICAgICAgfQogICAgICB2YXIgenIgPSAoViwgWSwgUykgPT4gewogICAgICAgIEMyLmhhc093blByb3BlcnR5KFYpIHx8IGZpKCJSZXBsYWNpbmcgbm9uZXhpc3RlbnQgcHVibGljIHN5bWJvbCIpLCBDMltWXS5vdmVybG9hZFRhYmxlICE9PSB2b2lkIDAgJiYgUyAhPT0gdm9pZCAwID8gQzJbVl0ub3ZlcmxvYWRUYWJsZVtTXSA9IFkgOiAoQzJbVl0gPSBZLCBDMltWXS5hcmdDb3VudCA9IFMpOwogICAgICB9LCB2OCA9IChWLCBZLCBTKSA9PiB7CiAgICAgICAgViA9IFYucmVwbGFjZSgvcC9nLCAiaSIpOwogICAgICAgIHZhciBLID0gQzJbImR5bkNhbGxfIiArIFZdOwogICAgICAgIHJldHVybiBLKFksIC4uLlMpOwogICAgICB9LCB0aSA9IFtdLCBkciwgS3IgPSAoVikgPT4gewogICAgICAgIHZhciBZID0gdGlbVl07CiAgICAgICAgcmV0dXJuIFkgfHwgKFYgPj0gdGkubGVuZ3RoICYmICh0aS5sZW5ndGggPSBWICsgMSksIHRpW1ZdID0gWSA9IGRyLmdldChWKSksIFk7CiAgICAgIH0sIEk4ID0gKFYsIFksIFMgPSBbXSkgPT4gewogICAgICAgIGlmIChWLmluY2x1ZGVzKCJqIikpCiAgICAgICAgICByZXR1cm4gdjgoViwgWSwgUyk7CiAgICAgICAgdmFyIEsgPSBLcihZKSguLi5TKTsKICAgICAgICByZXR1cm4gSzsKICAgICAgfSwgWjggPSAoViwgWSkgPT4gKC4uLlMpID0+IEk4KFYsIFksIFMpLCBZMSA9IChWLCBZKSA9PiB7CiAgICAgICAgViA9IHcxKFYpOwogICAgICAgIGZ1bmN0aW9uIFMoKSB7CiAgICAgICAgICByZXR1cm4gVi5pbmNsdWRlcygiaiIpID8gWjgoViwgWSkgOiBLcihZKTsKICAgICAgICB9CiAgICAgICAgdmFyIEsgPSBTKCk7CiAgICAgICAgcmV0dXJuIHR5cGVvZiBLICE9ICJmdW5jdGlvbiIgJiYgeTAoYHVua25vd24gZnVuY3Rpb24gcG9pbnRlciB3aXRoIHNpZ25hdHVyZSAke1Z9OiAke1l9YCksIEs7CiAgICAgIH0sIEM4ID0gKFYsIFkpID0+IHsKICAgICAgICB2YXIgUyA9IE1lKFksIGZ1bmN0aW9uKEspIHsKICAgICAgICAgIHRoaXMubmFtZSA9IFksIHRoaXMubWVzc2FnZSA9IEs7CiAgICAgICAgICB2YXIgcjIgPSBuZXcgRXJyb3IoSykuc3RhY2s7CiAgICAgICAgICByMiAhPT0gdm9pZCAwICYmICh0aGlzLnN0YWNrID0gdGhpcy50b1N0cmluZygpICsgYApgICsgcjIucmVwbGFjZSgvXkVycm9yKDpbXlxuXSopP1xuLywgIiIpKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gUy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFYucHJvdG90eXBlKSwgUy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTLCBTLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZSA9PT0gdm9pZCAwID8gdGhpcy5uYW1lIDogYCR7dGhpcy5uYW1lfTogJHt0aGlzLm1lc3NhZ2V9YDsKICAgICAgICB9LCBTOwogICAgICB9LCBqciwgTHIgPSAoVikgPT4gewogICAgICAgIHZhciBZID0gbDQoViksIFMgPSB3MShZKTsKICAgICAgICByZXR1cm4gVDEoWSksIFM7CiAgICAgIH0sIGxpID0gKFYsIFkpID0+IHsKICAgICAgICB2YXIgUyA9IFtdLCBLID0ge307CiAgICAgICAgZnVuY3Rpb24gcjIoTSkgewogICAgICAgICAgaWYgKCFLW01dICYmICFmZVtNXSkgewogICAgICAgICAgICBpZiAocmlbTV0pIHsKICAgICAgICAgICAgICByaVtNXS5mb3JFYWNoKHIyKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgUy5wdXNoKE0pLCBLW01dID0gITA7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRocm93IFkuZm9yRWFjaChyMiksIG5ldyBqcihgJHtWfTogYCArIFMubWFwKExyKS5qb2luKFsiLCAiXSkpOwogICAgICB9LCBHOCA9IChWLCBZLCBTLCBLLCByMiwgTSwgVzIsIHMyLCBOLCBOMiwgTTIsIGEwLCBKMCkgPT4gewogICAgICAgIE0yID0gdzEoTTIpLCBNID0gWTEocjIsIE0pLCBzMiAmJiAoczIgPSBZMShXMiwgczIpKSwgTjIgJiYgKE4yID0gWTEoTiwgTjIpKSwgSjAgPSBZMShhMCwgSjApOwogICAgICAgIHZhciBXMCA9IGc4KE0yKTsKICAgICAgICBUcihXMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICBsaShgQ2Fubm90IGNvbnN0cnVjdCAke00yfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsIFtLXSk7CiAgICAgICAgfSksIEFlKFtWLCBZLCBTXSwgSyA/IFtLXSA6IFtdLCAoQTApID0+IHsKICAgICAgICAgIHZhciBlOwogICAgICAgICAgQTAgPSBBMFswXTsKICAgICAgICAgIHZhciBOMCwgZzE7CiAgICAgICAgICBLID8gKE4wID0gQTAucmVnaXN0ZXJlZENsYXNzLCBnMSA9IE4wLmluc3RhbmNlUHJvdG90eXBlKSA6IGcxID0ga2kucHJvdG90eXBlOwogICAgICAgICAgdmFyIFUwID0gTWUoTTIsIGZ1bmN0aW9uKC4uLkkpIHsKICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSAhPT0ga2UpCiAgICAgICAgICAgICAgdGhyb3cgbmV3IFplKCJVc2UgJ25ldycgdG8gY29uc3RydWN0ICIgKyBNMik7CiAgICAgICAgICAgIGlmIChWMC5jb25zdHJ1Y3Rvcl9ib2R5ID09PSB2b2lkIDApCiAgICAgICAgICAgICAgdGhyb3cgbmV3IFplKE0yICsgIiBoYXMgbm8gYWNjZXNzaWJsZSBjb25zdHJ1Y3RvciIpOwogICAgICAgICAgICB2YXIgRzIgPSBWMC5jb25zdHJ1Y3Rvcl9ib2R5W0kubGVuZ3RoXTsKICAgICAgICAgICAgaWYgKEcyID09PSB2b2lkIDApCiAgICAgICAgICAgICAgdGhyb3cgbmV3IFplKGBUcmllZCB0byBpbnZva2UgY3RvciBvZiAke00yfSB3aXRoIGludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCR7SS5sZW5ndGh9KSAtIGV4cGVjdGVkICgke09iamVjdC5rZXlzKFYwLmNvbnN0cnVjdG9yX2JvZHkpLnRvU3RyaW5nKCl9KSBwYXJhbWV0ZXJzIGluc3RlYWQhYCk7CiAgICAgICAgICAgIHJldHVybiBHMi5hcHBseSh0aGlzLCBJKTsKICAgICAgICAgIH0pLCBrZSA9IE9iamVjdC5jcmVhdGUoZzEsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IFUwIH0gfSk7CiAgICAgICAgICBVMC5wcm90b3R5cGUgPSBrZTsKICAgICAgICAgIHZhciBWMCA9IG5ldyBoOChNMiwgVTAsIGtlLCBKMCwgTjAsIE0sIHMyLCBOMik7CiAgICAgICAgICBWMC5iYXNlQ2xhc3MgJiYgKChlID0gVjAuYmFzZUNsYXNzKS5fX2Rlcml2ZWRDbGFzc2VzID8/IChlLl9fZGVyaXZlZENsYXNzZXMgPSBbXSksIFYwLmJhc2VDbGFzcy5fX2Rlcml2ZWRDbGFzc2VzLnB1c2goVjApKTsKICAgICAgICAgIHZhciBqMCA9IG5ldyBuaShNMiwgVjAsICEwLCAhMSwgITEpLCBGID0gbmV3IG5pKE0yICsgIioiLCBWMCwgITEsICExLCAhMSksIHUyID0gbmV3IG5pKE0yICsgIiBjb25zdCoiLCBWMCwgITEsICEwLCAhMSk7CiAgICAgICAgICByZXR1cm4gUHJbVl0gPSB7IHBvaW50ZXJUeXBlOiBGLCBjb25zdFBvaW50ZXJUeXBlOiB1MiB9LCB6cihXMCwgVTApLCBbajAsIEYsIHUyXTsKICAgICAgICB9KTsKICAgICAgfSwgemkgPSAoViwgWSkgPT4gewogICAgICAgIGZvciAodmFyIFMgPSBbXSwgSyA9IDA7IEsgPCBWOyBLKyspCiAgICAgICAgICBTLnB1c2goTFtZICsgSyAqIDQgPj4gMl0pOwogICAgICAgIHJldHVybiBTOwogICAgICB9OwogICAgICBmdW5jdGlvbiBPcihWKSB7CiAgICAgICAgZm9yICh2YXIgWSA9IDE7IFkgPCBWLmxlbmd0aDsgKytZKQogICAgICAgICAgaWYgKFZbWV0gIT09IG51bGwgJiYgVltZXS5kZXN0cnVjdG9yRnVuY3Rpb24gPT09IHZvaWQgMCkKICAgICAgICAgICAgcmV0dXJuICEwOwogICAgICAgIHJldHVybiAhMTsKICAgICAgfQogICAgICBmdW5jdGlvbiBfcihWLCBZKSB7CiAgICAgICAgaWYgKCEoViBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkKICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAke3R5cGVvZiBWfSB3aGljaCBpcyBub3QgYSBmdW5jdGlvbmApOwogICAgICAgIHZhciBTID0gTWUoVi5uYW1lIHx8ICJ1bmtub3duRnVuY3Rpb25OYW1lIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgfSk7CiAgICAgICAgUy5wcm90b3R5cGUgPSBWLnByb3RvdHlwZTsKICAgICAgICB2YXIgSyA9IG5ldyBTKCksIHIyID0gVi5hcHBseShLLCBZKTsKICAgICAgICByZXR1cm4gcjIgaW5zdGFuY2VvZiBPYmplY3QgPyByMiA6IEs7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gVzgoViwgWSwgUywgSykgewogICAgICAgIHZhciByMiA9IE9yKFYpLCBNID0gVi5sZW5ndGggLSAyLCBXMiA9IFtdLCBzMiA9IFsiZm4iXTsKICAgICAgICBZICYmIHMyLnB1c2goInRoaXNXaXJlZCIpOwogICAgICAgIGZvciAodmFyIE4gPSAwOyBOIDwgTTsgKytOKQogICAgICAgICAgVzIucHVzaChgYXJnJHtOfWApLCBzMi5wdXNoKGBhcmcke059V2lyZWRgKTsKICAgICAgICBXMiA9IFcyLmpvaW4oIiwiKSwgczIgPSBzMi5qb2luKCIsIik7CiAgICAgICAgdmFyIE4yID0gYHJldHVybiBmdW5jdGlvbiAoJHtXMn0pIHsKYDsKICAgICAgICByMiAmJiAoTjIgKz0gYHZhciBkZXN0cnVjdG9ycyA9IFtdOwpgKTsKICAgICAgICB2YXIgTTIgPSByMiA/ICJkZXN0cnVjdG9ycyIgOiAibnVsbCIsIGEwID0gWyJodW1hbk5hbWUiLCAidGhyb3dCaW5kaW5nRXJyb3IiLCAiaW52b2tlciIsICJmbiIsICJydW5EZXN0cnVjdG9ycyIsICJyZXRUeXBlIiwgImNsYXNzUGFyYW0iXTsKICAgICAgICBZICYmIChOMiArPSBgdmFyIHRoaXNXaXJlZCA9IGNsYXNzUGFyYW1bJ3RvV2lyZVR5cGUnXSgke00yfSwgdGhpcyk7CmApOwogICAgICAgIGZvciAodmFyIE4gPSAwOyBOIDwgTTsgKytOKQogICAgICAgICAgTjIgKz0gYHZhciBhcmcke059V2lyZWQgPSBhcmdUeXBlJHtOfVsndG9XaXJlVHlwZSddKCR7TTJ9LCBhcmcke059KTsKYCwgYTAucHVzaChgYXJnVHlwZSR7Tn1gKTsKICAgICAgICBpZiAoTjIgKz0gKFMgfHwgSyA/ICJ2YXIgcnYgPSAiIDogIiIpICsgYGludm9rZXIoJHtzMn0pOwpgLCByMikKICAgICAgICAgIE4yICs9IGBydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7CmA7CiAgICAgICAgZWxzZQogICAgICAgICAgZm9yICh2YXIgTiA9IFkgPyAxIDogMjsgTiA8IFYubGVuZ3RoOyArK04pIHsKICAgICAgICAgICAgdmFyIEowID0gTiA9PT0gMSA/ICJ0aGlzV2lyZWQiIDogImFyZyIgKyAoTiAtIDIpICsgIldpcmVkIjsKICAgICAgICAgICAgVltOXS5kZXN0cnVjdG9yRnVuY3Rpb24gIT09IG51bGwgJiYgKE4yICs9IGAke0owfV9kdG9yKCR7SjB9KTsKYCwgYTAucHVzaChgJHtKMH1fZHRvcmApKTsKICAgICAgICAgIH0KICAgICAgICByZXR1cm4gUyAmJiAoTjIgKz0gYHZhciByZXQgPSByZXRUeXBlWydmcm9tV2lyZVR5cGUnXShydik7CnJldHVybiByZXQ7CmApLCBOMiArPSBgfQpgLCBbYTAsIE4yXTsKICAgICAgfQogICAgICBmdW5jdGlvbiBkaShWLCBZLCBTLCBLLCByMiwgTSkgewogICAgICAgIHZhciBXMiA9IFkubGVuZ3RoOwogICAgICAgIFcyIDwgMiAmJiB5MCgiYXJnVHlwZXMgYXJyYXkgc2l6ZSBtaXNtYXRjaCEgTXVzdCBhdCBsZWFzdCBnZXQgcmV0dXJuIHZhbHVlIGFuZCAndGhpcycgdHlwZXMhIik7CiAgICAgICAgZm9yICh2YXIgczIgPSBZWzFdICE9PSBudWxsICYmIFMgIT09IG51bGwsIE4gPSBPcihZKSwgTjIgPSBZWzBdLm5hbWUgIT09ICJ2b2lkIiwgTTIgPSBbViwgeTAsIEssIHIyLCBEZSwgWVswXSwgWVsxXV0sIGEwID0gMDsgYTAgPCBXMiAtIDI7ICsrYTApCiAgICAgICAgICBNMi5wdXNoKFlbYTAgKyAyXSk7CiAgICAgICAgaWYgKCFOKQogICAgICAgICAgZm9yICh2YXIgYTAgPSBzMiA/IDEgOiAyOyBhMCA8IFkubGVuZ3RoOyArK2EwKQogICAgICAgICAgICBZW2EwXS5kZXN0cnVjdG9yRnVuY3Rpb24gIT09IG51bGwgJiYgTTIucHVzaChZW2EwXS5kZXN0cnVjdG9yRnVuY3Rpb24pOwogICAgICAgIGxldCBbSjAsIFcwXSA9IFc4KFksIHMyLCBOMiwgTSk7CiAgICAgICAgSjAucHVzaChXMCk7CiAgICAgICAgdmFyIEEwID0gX3IoRnVuY3Rpb24sIEowKSguLi5NMik7CiAgICAgICAgcmV0dXJuIE1lKFYsIEEwKTsKICAgICAgfQogICAgICB2YXIgbTggPSAoViwgWSwgUywgSywgcjIsIE0pID0+IHsKICAgICAgICB2YXIgVzIgPSB6aShZLCBTKTsKICAgICAgICByMiA9IFkxKEssIHIyKSwgQWUoW10sIFtWXSwgKHMyKSA9PiB7CiAgICAgICAgICBzMiA9IHMyWzBdOwogICAgICAgICAgdmFyIE4gPSBgY29uc3RydWN0b3IgJHtzMi5uYW1lfWA7CiAgICAgICAgICBpZiAoczIucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHkgPT09IHZvaWQgMCAmJiAoczIucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHkgPSBbXSksIHMyLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W1kgLSAxXSAhPT0gdm9pZCAwKQogICAgICAgICAgICB0aHJvdyBuZXcgWmUoYENhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBjb25zdHJ1Y3RvcnMgd2l0aCBpZGVudGljYWwgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCR7WSAtIDF9KSBmb3IgY2xhc3MgJyR7czIubmFtZX0nISBPdmVybG9hZCByZXNvbHV0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHBlcmZvcm1lZCB1c2luZyB0aGUgcGFyYW1ldGVyIGNvdW50LCBub3QgYWN0dWFsIHR5cGUgaW5mbyFgKTsKICAgICAgICAgIHJldHVybiBzMi5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVtZIC0gMV0gPSAoKSA9PiB7CiAgICAgICAgICAgIGxpKGBDYW5ub3QgY29uc3RydWN0ICR7czIubmFtZX0gZHVlIHRvIHVuYm91bmQgdHlwZXNgLCBXMik7CiAgICAgICAgICB9LCBBZShbXSwgVzIsIChOMikgPT4gKE4yLnNwbGljZSgxLCAwLCBudWxsKSwgczIucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHlbWSAtIDFdID0gZGkoTiwgTjIsIG51bGwsIHIyLCBNKSwgW10pKSwgW107CiAgICAgICAgfSk7CiAgICAgIH0sIGJyID0gKFYpID0+IHsKICAgICAgICBWID0gVi50cmltKCk7CiAgICAgICAgY29uc3QgWSA9IFYuaW5kZXhPZigiKCIpOwogICAgICAgIHJldHVybiBZICE9PSAtMSA/IFYuc3Vic3RyKDAsIFkpIDogVjsKICAgICAgfSwgeTggPSAoViwgWSwgUywgSywgcjIsIE0sIFcyLCBzMiwgTiwgTjIpID0+IHsKICAgICAgICB2YXIgTTIgPSB6aShTLCBLKTsKICAgICAgICBZID0gdzEoWSksIFkgPSBicihZKSwgTSA9IFkxKHIyLCBNKSwgQWUoW10sIFtWXSwgKGEwKSA9PiB7CiAgICAgICAgICBhMCA9IGEwWzBdOwogICAgICAgICAgdmFyIEowID0gYCR7YTAubmFtZX0uJHtZfWA7CiAgICAgICAgICBZLnN0YXJ0c1dpdGgoIkBAIikgJiYgKFkgPSBTeW1ib2xbWS5zdWJzdHJpbmcoMildKSwgczIgJiYgYTAucmVnaXN0ZXJlZENsYXNzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zLnB1c2goWSk7CiAgICAgICAgICBmdW5jdGlvbiBXMCgpIHsKICAgICAgICAgICAgbGkoYENhbm5vdCBjYWxsICR7SjB9IGR1ZSB0byB1bmJvdW5kIHR5cGVzYCwgTTIpOwogICAgICAgICAgfQogICAgICAgICAgdmFyIEEwID0gYTAucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLCBOMCA9IEEwW1ldOwogICAgICAgICAgcmV0dXJuIE4wID09PSB2b2lkIDAgfHwgTjAub3ZlcmxvYWRUYWJsZSA9PT0gdm9pZCAwICYmIE4wLmNsYXNzTmFtZSAhPT0gYTAubmFtZSAmJiBOMC5hcmdDb3VudCA9PT0gUyAtIDIgPyAoVzAuYXJnQ291bnQgPSBTIC0gMiwgVzAuY2xhc3NOYW1lID0gYTAubmFtZSwgQTBbWV0gPSBXMCkgOiAoeHIoQTAsIFksIEowKSwgQTBbWV0ub3ZlcmxvYWRUYWJsZVtTIC0gMl0gPSBXMCksIEFlKFtdLCBNMiwgKGcxKSA9PiB7CiAgICAgICAgICAgIHZhciBVMCA9IGRpKEowLCBnMSwgYTAsIE0sIFcyLCBOKTsKICAgICAgICAgICAgcmV0dXJuIEEwW1ldLm92ZXJsb2FkVGFibGUgPT09IHZvaWQgMCA/IChVMC5hcmdDb3VudCA9IFMgLSAyLCBBMFtZXSA9IFUwKSA6IEEwW1ldLm92ZXJsb2FkVGFibGVbUyAtIDJdID0gVTAsIFtdOwogICAgICAgICAgfSksIFtdOwogICAgICAgIH0pOwogICAgICB9LCBLaSA9IFtdLCBfMSA9IFtdLCBqaSA9IChWKSA9PiB7CiAgICAgICAgViA+IDkgJiYgLS1fMVtWICsgMV0gPT09IDAgJiYgKF8xW1ZdID0gdm9pZCAwLCBLaS5wdXNoKFYpKTsKICAgICAgfSwgcDggPSAoKSA9PiBfMS5sZW5ndGggLyAyIC0gNSAtIEtpLmxlbmd0aCwgUTggPSAoKSA9PiB7CiAgICAgICAgXzEucHVzaCgwLCAxLCB2b2lkIDAsIDEsIG51bGwsIDEsICEwLCAxLCAhMSwgMSksIEMyLmNvdW50X2VtdmFsX2hhbmRsZXMgPSBwODsKICAgICAgfSwgeDEgPSB7IHRvVmFsdWU6IChWKSA9PiAoViB8fCB5MCgiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIiArIFYpLCBfMVtWXSksIHRvSGFuZGxlOiAoVikgPT4gewogICAgICAgIHN3aXRjaCAoVikgewogICAgICAgICAgY2FzZSB2b2lkIDA6CiAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICAgY2FzZSBudWxsOgogICAgICAgICAgICByZXR1cm4gNDsKICAgICAgICAgIGNhc2UgITA6CiAgICAgICAgICAgIHJldHVybiA2OwogICAgICAgICAgY2FzZSAhMToKICAgICAgICAgICAgcmV0dXJuIDg7CiAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgIGNvbnN0IFkgPSBLaS5wb3AoKSB8fCBfMS5sZW5ndGg7CiAgICAgICAgICAgIHJldHVybiBfMVtZXSA9IFYsIF8xW1kgKyAxXSA9IDEsIFk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IH0sIFY4ID0geyBuYW1lOiAiZW1zY3JpcHRlbjo6dmFsIiwgZnJvbVdpcmVUeXBlOiAoVikgPT4gewogICAgICAgIHZhciBZID0geDEudG9WYWx1ZShWKTsKICAgICAgICByZXR1cm4gamkoViksIFk7CiAgICAgIH0sIHRvV2lyZVR5cGU6IChWLCBZKSA9PiB4MS50b0hhbmRsZShZKSwgYXJnUGFja0FkdmFuY2U6IFAxLCByZWFkVmFsdWVGcm9tUG9pbnRlcjogTzEsIGRlc3RydWN0b3JGdW5jdGlvbjogbnVsbCB9LCBZOCA9IChWKSA9PiBOMShWLCBWOCksIExpID0gKFYpID0+IHsKICAgICAgICBpZiAoViA9PT0gbnVsbCkKICAgICAgICAgIHJldHVybiAibnVsbCI7CiAgICAgICAgdmFyIFkgPSB0eXBlb2YgVjsKICAgICAgICByZXR1cm4gWSA9PT0gIm9iamVjdCIgfHwgWSA9PT0gImFycmF5IiB8fCBZID09PSAiZnVuY3Rpb24iID8gVi50b1N0cmluZygpIDogIiIgKyBWOwogICAgICB9LCBIOCA9IChWLCBZKSA9PiB7CiAgICAgICAgc3dpdGNoIChZKSB7CiAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihTKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKFoyW1MgPj4gMl0pOwogICAgICAgICAgICB9OwogICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oUykgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShpMltTID4+IDNdKTsKICAgICAgICAgICAgfTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgZmxvYXQgd2lkdGggKCR7WX0pOiAke1Z9YCk7CiAgICAgICAgfQogICAgICB9LCBYOCA9IChWLCBZLCBTKSA9PiB7CiAgICAgICAgWSA9IHcxKFkpLCBOMShWLCB7IG5hbWU6IFksIGZyb21XaXJlVHlwZTogKEspID0+IEssIHRvV2lyZVR5cGU6IChLLCByMikgPT4gcjIsIGFyZ1BhY2tBZHZhbmNlOiBQMSwgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IEg4KFksIFMpLCBkZXN0cnVjdG9yRnVuY3Rpb246IG51bGwgfSk7CiAgICAgIH0sIEY4ID0gKFYsIFksIFMsIEssIHIyLCBNLCBXMiwgczIpID0+IHsKICAgICAgICB2YXIgTiA9IHppKFksIFMpOwogICAgICAgIFYgPSB3MShWKSwgViA9IGJyKFYpLCByMiA9IFkxKEssIHIyKSwgVHIoViwgZnVuY3Rpb24oKSB7CiAgICAgICAgICBsaShgQ2Fubm90IGNhbGwgJHtWfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsIE4pOwogICAgICAgIH0sIFkgLSAxKSwgQWUoW10sIE4sIChOMikgPT4gewogICAgICAgICAgdmFyIE0yID0gW04yWzBdLCBudWxsXS5jb25jYXQoTjIuc2xpY2UoMSkpOwogICAgICAgICAgcmV0dXJuIHpyKFYsIGRpKFYsIE0yLCBudWxsLCByMiwgTSwgVzIpLCBZIC0gMSksIFtdOwogICAgICAgIH0pOwogICAgICB9LCBKOCA9IChWLCBZLCBTKSA9PiB7CiAgICAgICAgc3dpdGNoIChZKSB7CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHJldHVybiBTID8gKEspID0+IFcxW0tdIDogKEspID0+IHYyW0tdOwogICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICByZXR1cm4gUyA/IChLKSA9PiBiW0sgPj4gMV0gOiAoSykgPT4gSTJbSyA+PiAxXTsKICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgcmV0dXJuIFMgPyAoSykgPT4gVFtLID4+IDJdIDogKEspID0+IExbSyA+PiAyXTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgaW50ZWdlciB3aWR0aCAoJHtZfSk6ICR7Vn1gKTsKICAgICAgICB9CiAgICAgIH0sIFI4ID0gKFYsIFksIFMsIEssIHIyKSA9PiB7CiAgICAgICAgWSA9IHcxKFkpOwogICAgICAgIHZhciBNID0gKE0yKSA9PiBNMjsKICAgICAgICBpZiAoSyA9PT0gMCkgewogICAgICAgICAgdmFyIFcyID0gMzIgLSA4ICogUzsKICAgICAgICAgIE0gPSAoTTIpID0+IE0yIDw8IFcyID4+PiBXMjsKICAgICAgICB9CiAgICAgICAgdmFyIHMyID0gWS5pbmNsdWRlcygidW5zaWduZWQiKSwgTiA9IChNMiwgYTApID0+IHsKICAgICAgICB9LCBOMjsKICAgICAgICBzMiA/IE4yID0gZnVuY3Rpb24oTTIsIGEwKSB7CiAgICAgICAgICByZXR1cm4gTihhMCwgdGhpcy5uYW1lKSwgYTAgPj4+IDA7CiAgICAgICAgfSA6IE4yID0gZnVuY3Rpb24oTTIsIGEwKSB7CiAgICAgICAgICByZXR1cm4gTihhMCwgdGhpcy5uYW1lKSwgYTA7CiAgICAgICAgfSwgTjEoViwgeyBuYW1lOiBZLCBmcm9tV2lyZVR5cGU6IE0sIHRvV2lyZVR5cGU6IE4yLCBhcmdQYWNrQWR2YW5jZTogUDEsIHJlYWRWYWx1ZUZyb21Qb2ludGVyOiBKOChZLCBTLCBLICE9PSAwKSwgZGVzdHJ1Y3RvckZ1bmN0aW9uOiBudWxsIH0pOwogICAgICB9LCBFOCA9IChWLCBZLCBTKSA9PiB7CiAgICAgICAgdmFyIEsgPSBbSW50OEFycmF5LCBVaW50OEFycmF5LCBJbnQxNkFycmF5LCBVaW50MTZBcnJheSwgSW50MzJBcnJheSwgVWludDMyQXJyYXksIEZsb2F0MzJBcnJheSwgRmxvYXQ2NEFycmF5XSwgcjIgPSBLW1ldOwogICAgICAgIGZ1bmN0aW9uIE0oVzIpIHsKICAgICAgICAgIHZhciBzMiA9IExbVzIgPj4gMl0sIE4gPSBMW1cyICsgNCA+PiAyXTsKICAgICAgICAgIHJldHVybiBuZXcgcjIoVzEuYnVmZmVyLCBOLCBzMik7CiAgICAgICAgfQogICAgICAgIFMgPSB3MShTKSwgTjEoViwgeyBuYW1lOiBTLCBmcm9tV2lyZVR5cGU6IE0sIGFyZ1BhY2tBZHZhbmNlOiBQMSwgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IE0gfSwgeyBpZ25vcmVEdXBsaWNhdGVSZWdpc3RyYXRpb25zOiAhMCB9KTsKICAgICAgfSwgRDggPSAoViwgWSwgUywgSykgPT4gewogICAgICAgIGlmICghKEsgPiAwKSkgcmV0dXJuIDA7CiAgICAgICAgZm9yICh2YXIgcjIgPSBTLCBNID0gUyArIEsgLSAxLCBXMiA9IDA7IFcyIDwgVi5sZW5ndGg7ICsrVzIpIHsKICAgICAgICAgIHZhciBzMiA9IFYuY2hhckNvZGVBdChXMik7CiAgICAgICAgICBpZiAoczIgPj0gNTUyOTYgJiYgczIgPD0gNTczNDMpIHsKICAgICAgICAgICAgdmFyIE4gPSBWLmNoYXJDb2RlQXQoKytXMik7CiAgICAgICAgICAgIHMyID0gNjU1MzYgKyAoKHMyICYgMTAyMykgPDwgMTApIHwgTiAmIDEwMjM7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoczIgPD0gMTI3KSB7CiAgICAgICAgICAgIGlmIChTID49IE0pIGJyZWFrOwogICAgICAgICAgICBZW1MrK10gPSBzMjsKICAgICAgICAgIH0gZWxzZSBpZiAoczIgPD0gMjA0NykgewogICAgICAgICAgICBpZiAoUyArIDEgPj0gTSkgYnJlYWs7CiAgICAgICAgICAgIFlbUysrXSA9IDE5MiB8IHMyID4+IDYsIFlbUysrXSA9IDEyOCB8IHMyICYgNjM7CiAgICAgICAgICB9IGVsc2UgaWYgKHMyIDw9IDY1NTM1KSB7CiAgICAgICAgICAgIGlmIChTICsgMiA+PSBNKSBicmVhazsKICAgICAgICAgICAgWVtTKytdID0gMjI0IHwgczIgPj4gMTIsIFlbUysrXSA9IDEyOCB8IHMyID4+IDYgJiA2MywgWVtTKytdID0gMTI4IHwgczIgJiA2MzsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChTICsgMyA+PSBNKSBicmVhazsKICAgICAgICAgICAgWVtTKytdID0gMjQwIHwgczIgPj4gMTgsIFlbUysrXSA9IDEyOCB8IHMyID4+IDEyICYgNjMsIFlbUysrXSA9IDEyOCB8IHMyID4+IDYgJiA2MywgWVtTKytdID0gMTI4IHwgczIgJiA2MzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIFlbU10gPSAwLCBTIC0gcjI7CiAgICAgIH0sICRyID0gKFYsIFksIFMpID0+IEQ4KFYsIHYyLCBZLCBTKSwgcXIgPSAoVikgPT4gewogICAgICAgIGZvciAodmFyIFkgPSAwLCBTID0gMDsgUyA8IFYubGVuZ3RoOyArK1MpIHsKICAgICAgICAgIHZhciBLID0gVi5jaGFyQ29kZUF0KFMpOwogICAgICAgICAgSyA8PSAxMjcgPyBZKysgOiBLIDw9IDIwNDcgPyBZICs9IDIgOiBLID49IDU1Mjk2ICYmIEsgPD0gNTczNDMgPyAoWSArPSA0LCArK1MpIDogWSArPSAzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gWTsKICAgICAgfSwgZTQgPSB0eXBlb2YgVGV4dERlY29kZXIgPCAidSIgPyBuZXcgVGV4dERlY29kZXIoKSA6IHZvaWQgMCwgaTQgPSAoViwgWSA9IDAsIFMgPSBOYU4pID0+IHsKICAgICAgICBmb3IgKHZhciBLID0gWSArIFMsIHIyID0gWTsgVltyMl0gJiYgIShyMiA+PSBLKTsgKSArK3IyOwogICAgICAgIGlmIChyMiAtIFkgPiAxNiAmJiBWLmJ1ZmZlciAmJiBlNCkKICAgICAgICAgIHJldHVybiBlNC5kZWNvZGUoVi5zdWJhcnJheShZLCByMikpOwogICAgICAgIGZvciAodmFyIE0gPSAiIjsgWSA8IHIyOyApIHsKICAgICAgICAgIHZhciBXMiA9IFZbWSsrXTsKICAgICAgICAgIGlmICghKFcyICYgMTI4KSkgewogICAgICAgICAgICBNICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoVzIpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBzMiA9IFZbWSsrXSAmIDYzOwogICAgICAgICAgaWYgKChXMiAmIDIyNCkgPT0gMTkyKSB7CiAgICAgICAgICAgIE0gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoVzIgJiAzMSkgPDwgNiB8IHMyKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgTiA9IFZbWSsrXSAmIDYzOwogICAgICAgICAgaWYgKChXMiAmIDI0MCkgPT0gMjI0ID8gVzIgPSAoVzIgJiAxNSkgPDwgMTIgfCBzMiA8PCA2IHwgTiA6IFcyID0gKFcyICYgNykgPDwgMTggfCBzMiA8PCAxMiB8IE4gPDwgNiB8IFZbWSsrXSAmIDYzLCBXMiA8IDY1NTM2KQogICAgICAgICAgICBNICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoVzIpOwogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBOMiA9IFcyIC0gNjU1MzY7CiAgICAgICAgICAgIE0gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NiB8IE4yID4+IDEwLCA1NjMyMCB8IE4yICYgMTAyMyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBNOwogICAgICB9LCByNCA9IChWLCBZKSA9PiBWID8gaTQodjIsIFYsIFkpIDogIiIsIFU4ID0gKFYsIFkpID0+IHsKICAgICAgICBZID0gdzEoWSksIE4xKFYsIHsgbmFtZTogWSwgZnJvbVdpcmVUeXBlKFMpIHsKICAgICAgICAgIGZvciAodmFyIEsgPSBMW1MgPj4gMl0sIHIyID0gUyArIDQsIE0sIFcyLCBzMiA9IHIyLCBXMiA9IDA7IFcyIDw9IEs7ICsrVzIpIHsKICAgICAgICAgICAgdmFyIE4gPSByMiArIFcyOwogICAgICAgICAgICBpZiAoVzIgPT0gSyB8fCB2MltOXSA9PSAwKSB7CiAgICAgICAgICAgICAgdmFyIE4yID0gTiAtIHMyLCBNMiA9IHI0KHMyLCBOMik7CiAgICAgICAgICAgICAgTSA9PT0gdm9pZCAwID8gTSA9IE0yIDogKE0gKz0gIlwwIiwgTSArPSBNMiksIHMyID0gTiArIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBUMShTKSwgTTsKICAgICAgICB9LCB0b1dpcmVUeXBlKFMsIEspIHsKICAgICAgICAgIEsgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciAmJiAoSyA9IG5ldyBVaW50OEFycmF5KEspKTsKICAgICAgICAgIHZhciByMiwgTSA9IHR5cGVvZiBLID09ICJzdHJpbmciOwogICAgICAgICAgTSB8fCBLIGluc3RhbmNlb2YgVWludDhBcnJheSB8fCBLIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkgfHwgSyBpbnN0YW5jZW9mIEludDhBcnJheSB8fCB5MCgiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpLCBNID8gcjIgPSBxcihLKSA6IHIyID0gSy5sZW5ndGg7CiAgICAgICAgICB2YXIgVzIgPSBiaSg0ICsgcjIgKyAxKSwgczIgPSBXMiArIDQ7CiAgICAgICAgICBpZiAoTFtXMiA+PiAyXSA9IHIyLCBNKQogICAgICAgICAgICAkcihLLCBzMiwgcjIgKyAxKTsKICAgICAgICAgIGVsc2UgaWYgKE0pCiAgICAgICAgICAgIGZvciAodmFyIE4gPSAwOyBOIDwgcjI7ICsrTikgewogICAgICAgICAgICAgIHZhciBOMiA9IEsuY2hhckNvZGVBdChOKTsKICAgICAgICAgICAgICBOMiA+IDI1NSAmJiAoVDEoczIpLCB5MCgiU3RyaW5nIGhhcyBVVEYtMTYgY29kZSB1bml0cyB0aGF0IGRvIG5vdCBmaXQgaW4gOCBiaXRzIikpLCB2MltzMiArIE5dID0gTjI7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZm9yICh2YXIgTiA9IDA7IE4gPCByMjsgKytOKQogICAgICAgICAgICAgIHYyW3MyICsgTl0gPSBLW05dOwogICAgICAgICAgcmV0dXJuIFMgIT09IG51bGwgJiYgUy5wdXNoKFQxLCBXMiksIFcyOwogICAgICAgIH0sIGFyZ1BhY2tBZHZhbmNlOiBQMSwgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IE8xLCBkZXN0cnVjdG9yRnVuY3Rpb24oUykgewogICAgICAgICAgVDEoUyk7CiAgICAgICAgfSB9KTsKICAgICAgfSwgZjQgPSB0eXBlb2YgVGV4dERlY29kZXIgPCAidSIgPyBuZXcgVGV4dERlY29kZXIoInV0Zi0xNmxlIikgOiB2b2lkIDAsIE04ID0gKFYsIFkpID0+IHsKICAgICAgICBmb3IgKHZhciBTID0gViwgSyA9IFMgPj4gMSwgcjIgPSBLICsgWSAvIDI7ICEoSyA+PSByMikgJiYgSTJbS107ICkgKytLOwogICAgICAgIGlmIChTID0gSyA8PCAxLCBTIC0gViA+IDMyICYmIGY0KSByZXR1cm4gZjQuZGVjb2RlKHYyLnN1YmFycmF5KFYsIFMpKTsKICAgICAgICBmb3IgKHZhciBNID0gIiIsIFcyID0gMDsgIShXMiA+PSBZIC8gMik7ICsrVzIpIHsKICAgICAgICAgIHZhciBzMiA9IGJbViArIFcyICogMiA+PiAxXTsKICAgICAgICAgIGlmIChzMiA9PSAwKSBicmVhazsKICAgICAgICAgIE0gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShzMik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBNOwogICAgICB9LCBTOCA9IChWLCBZLCBTKSA9PiB7CiAgICAgICAgaWYgKFMgPz8gKFMgPSAyMTQ3NDgzNjQ3KSwgUyA8IDIpIHJldHVybiAwOwogICAgICAgIFMgLT0gMjsKICAgICAgICBmb3IgKHZhciBLID0gWSwgcjIgPSBTIDwgVi5sZW5ndGggKiAyID8gUyAvIDIgOiBWLmxlbmd0aCwgTSA9IDA7IE0gPCByMjsgKytNKSB7CiAgICAgICAgICB2YXIgVzIgPSBWLmNoYXJDb2RlQXQoTSk7CiAgICAgICAgICBiW1kgPj4gMV0gPSBXMiwgWSArPSAyOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYltZID4+IDFdID0gMCwgWSAtIEs7CiAgICAgIH0sIE44ID0gKFYpID0+IFYubGVuZ3RoICogMiwgUDggPSAoViwgWSkgPT4gewogICAgICAgIGZvciAodmFyIFMgPSAwLCBLID0gIiI7ICEoUyA+PSBZIC8gNCk7ICkgewogICAgICAgICAgdmFyIHIyID0gVFtWICsgUyAqIDQgPj4gMl07CiAgICAgICAgICBpZiAocjIgPT0gMCkgYnJlYWs7CiAgICAgICAgICBpZiAoKytTLCByMiA+PSA2NTUzNikgewogICAgICAgICAgICB2YXIgTSA9IHIyIC0gNjU1MzY7CiAgICAgICAgICAgIEsgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NiB8IE0gPj4gMTAsIDU2MzIwIHwgTSAmIDEwMjMpOwogICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIEsgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShyMik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBLOwogICAgICB9LCB4OCA9IChWLCBZLCBTKSA9PiB7CiAgICAgICAgaWYgKFMgPz8gKFMgPSAyMTQ3NDgzNjQ3KSwgUyA8IDQpIHJldHVybiAwOwogICAgICAgIGZvciAodmFyIEsgPSBZLCByMiA9IEsgKyBTIC0gNCwgTSA9IDA7IE0gPCBWLmxlbmd0aDsgKytNKSB7CiAgICAgICAgICB2YXIgVzIgPSBWLmNoYXJDb2RlQXQoTSk7CiAgICAgICAgICBpZiAoVzIgPj0gNTUyOTYgJiYgVzIgPD0gNTczNDMpIHsKICAgICAgICAgICAgdmFyIHMyID0gVi5jaGFyQ29kZUF0KCsrTSk7CiAgICAgICAgICAgIFcyID0gNjU1MzYgKyAoKFcyICYgMTAyMykgPDwgMTApIHwgczIgJiAxMDIzOwogICAgICAgICAgfQogICAgICAgICAgaWYgKFRbWSA+PiAyXSA9IFcyLCBZICs9IDQsIFkgKyA0ID4gcjIpIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gVFtZID4+IDJdID0gMCwgWSAtIEs7CiAgICAgIH0sIFQ4ID0gKFYpID0+IHsKICAgICAgICBmb3IgKHZhciBZID0gMCwgUyA9IDA7IFMgPCBWLmxlbmd0aDsgKytTKSB7CiAgICAgICAgICB2YXIgSyA9IFYuY2hhckNvZGVBdChTKTsKICAgICAgICAgIEsgPj0gNTUyOTYgJiYgSyA8PSA1NzM0MyAmJiArK1MsIFkgKz0gNDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFk7CiAgICAgIH0sIHo4ID0gKFYsIFksIFMpID0+IHsKICAgICAgICBTID0gdzEoUyk7CiAgICAgICAgdmFyIEssIHIyLCBNLCBXMjsKICAgICAgICBZID09PSAyID8gKEsgPSBNOCwgcjIgPSBTOCwgVzIgPSBOOCwgTSA9IChzMikgPT4gSTJbczIgPj4gMV0pIDogWSA9PT0gNCAmJiAoSyA9IFA4LCByMiA9IHg4LCBXMiA9IFQ4LCBNID0gKHMyKSA9PiBMW3MyID4+IDJdKSwgTjEoViwgeyBuYW1lOiBTLCBmcm9tV2lyZVR5cGU6IChzMikgPT4gewogICAgICAgICAgZm9yICh2YXIgTiA9IExbczIgPj4gMl0sIE4yLCBNMiA9IHMyICsgNCwgYTAgPSAwOyBhMCA8PSBOOyArK2EwKSB7CiAgICAgICAgICAgIHZhciBKMCA9IHMyICsgNCArIGEwICogWTsKICAgICAgICAgICAgaWYgKGEwID09IE4gfHwgTShKMCkgPT0gMCkgewogICAgICAgICAgICAgIHZhciBXMCA9IEowIC0gTTIsIEEwID0gSyhNMiwgVzApOwogICAgICAgICAgICAgIE4yID09PSB2b2lkIDAgPyBOMiA9IEEwIDogKE4yICs9ICJcMCIsIE4yICs9IEEwKSwgTTIgPSBKMCArIFk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBUMShzMiksIE4yOwogICAgICAgIH0sIHRvV2lyZVR5cGU6IChzMiwgTikgPT4gewogICAgICAgICAgdHlwZW9mIE4gIT0gInN0cmluZyIgJiYgeTAoYENhbm5vdCBwYXNzIG5vbi1zdHJpbmcgdG8gQysrIHN0cmluZyB0eXBlICR7U31gKTsKICAgICAgICAgIHZhciBOMiA9IFcyKE4pLCBNMiA9IGJpKDQgKyBOMiArIFkpOwogICAgICAgICAgcmV0dXJuIExbTTIgPj4gMl0gPSBOMiAvIFksIHIyKE4sIE0yICsgNCwgTjIgKyBZKSwgczIgIT09IG51bGwgJiYgczIucHVzaChUMSwgTTIpLCBNMjsKICAgICAgICB9LCBhcmdQYWNrQWR2YW5jZTogUDEsIHJlYWRWYWx1ZUZyb21Qb2ludGVyOiBPMSwgZGVzdHJ1Y3RvckZ1bmN0aW9uKHMyKSB7CiAgICAgICAgICBUMShzMik7CiAgICAgICAgfSB9KTsKICAgICAgfSwgZDggPSAoViwgWSwgUywgSywgcjIsIE0pID0+IHsKICAgICAgICBSMVtWXSA9IHsgbmFtZTogdzEoWSksIHJhd0NvbnN0cnVjdG9yOiBZMShTLCBLKSwgcmF3RGVzdHJ1Y3RvcjogWTEocjIsIE0pLCBmaWVsZHM6IFtdIH07CiAgICAgIH0sIEs4ID0gKFYsIFksIFMsIEssIHIyLCBNLCBXMiwgczIsIE4sIE4yKSA9PiB7CiAgICAgICAgUjFbVl0uZmllbGRzLnB1c2goeyBmaWVsZE5hbWU6IHcxKFkpLCBnZXR0ZXJSZXR1cm5UeXBlOiBTLCBnZXR0ZXI6IFkxKEssIHIyKSwgZ2V0dGVyQ29udGV4dDogTSwgc2V0dGVyQXJndW1lbnRUeXBlOiBXMiwgc2V0dGVyOiBZMShzMiwgTiksIHNldHRlckNvbnRleHQ6IE4yIH0pOwogICAgICB9LCBqOCA9IChWLCBZKSA9PiB7CiAgICAgICAgWSA9IHcxKFkpLCBOMShWLCB7IGlzVm9pZDogITAsIG5hbWU6IFksIGFyZ1BhY2tBZHZhbmNlOiAwLCBmcm9tV2lyZVR5cGU6ICgpID0+IHsKICAgICAgICB9LCB0b1dpcmVUeXBlOiAoUywgSykgPT4gewogICAgICAgIH0gfSk7CiAgICAgIH0sIEw4ID0gKFYsIFksIFMpID0+IHYyLmNvcHlXaXRoaW4oViwgWSwgWSArIFMpLCBPaSA9IFtdLCBPOCA9IChWLCBZLCBTLCBLKSA9PiAoViA9IE9pW1ZdLCBZID0geDEudG9WYWx1ZShZKSwgVihudWxsLCBZLCBTLCBLKSksIF84ID0ge30sIGI4ID0gKFYpID0+IHsKICAgICAgICB2YXIgWSA9IF84W1ZdOwogICAgICAgIHJldHVybiBZID09PSB2b2lkIDAgPyB3MShWKSA6IFk7CiAgICAgIH0sIEE0ID0gKCkgPT4gdHlwZW9mIGdsb2JhbFRoaXMgPT0gIm9iamVjdCIgPyBnbG9iYWxUaGlzIDogKC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gRnVuY3Rpb247CiAgICAgIH0oKSkoInJldHVybiB0aGlzIikoKSwgJDggPSAoVikgPT4gViA9PT0gMCA/IHgxLnRvSGFuZGxlKEE0KCkpIDogKFYgPSBiOChWKSwgeDEudG9IYW5kbGUoQTQoKVtWXSkpLCBxOCA9IChWKSA9PiB7CiAgICAgICAgdmFyIFkgPSBPaS5sZW5ndGg7CiAgICAgICAgcmV0dXJuIE9pLnB1c2goViksIFk7CiAgICAgIH0sIGs0ID0gKFYsIFkpID0+IHsKICAgICAgICB2YXIgUyA9IGZlW1ZdOwogICAgICAgIHJldHVybiBTID09PSB2b2lkIDAgJiYgeTAoYCR7WX0gaGFzIHVua25vd24gdHlwZSAke0xyKFYpfWApLCBTOwogICAgICB9LCBlQSA9IChWLCBZKSA9PiB7CiAgICAgICAgZm9yICh2YXIgUyA9IG5ldyBBcnJheShWKSwgSyA9IDA7IEsgPCBWOyArK0spCiAgICAgICAgICBTW0tdID0gazQoTFtZICsgSyAqIDQgPj4gMl0sICJwYXJhbWV0ZXIgIiArIEspOwogICAgICAgIHJldHVybiBTOwogICAgICB9LCBpQSA9IChWLCBZLCBTKSA9PiB7CiAgICAgICAgdmFyIEsgPSBbXSwgcjIgPSBWLnRvV2lyZVR5cGUoSywgUyk7CiAgICAgICAgcmV0dXJuIEsubGVuZ3RoICYmIChMW1kgPj4gMl0gPSB4MS50b0hhbmRsZShLKSksIHIyOwogICAgICB9LCByQSA9IChWLCBZLCBTKSA9PiB7CiAgICAgICAgdmFyIEsgPSBlQShWLCBZKSwgcjIgPSBLLnNoaWZ0KCk7CiAgICAgICAgVi0tOwogICAgICAgIHZhciBNID0gYHJldHVybiBmdW5jdGlvbiAob2JqLCBmdW5jLCBkZXN0cnVjdG9yc1JlZiwgYXJncykgewpgLCBXMiA9IDAsIHMyID0gW107CiAgICAgICAgUyA9PT0gMCAmJiBzMi5wdXNoKCJvYmoiKTsKICAgICAgICBmb3IgKHZhciBOID0gWyJyZXRUeXBlIl0sIE4yID0gW3IyXSwgTTIgPSAwOyBNMiA8IFY7ICsrTTIpCiAgICAgICAgICBzMi5wdXNoKCJhcmciICsgTTIpLCBOLnB1c2goImFyZ1R5cGUiICsgTTIpLCBOMi5wdXNoKEtbTTJdKSwgTSArPSBgICB2YXIgYXJnJHtNMn0gPSBhcmdUeXBlJHtNMn0ucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyR7VzIgPyAiKyIgKyBXMiA6ICIifSk7CmAsIFcyICs9IEtbTTJdLmFyZ1BhY2tBZHZhbmNlOwogICAgICAgIHZhciBhMCA9IFMgPT09IDEgPyAibmV3IGZ1bmMiIDogImZ1bmMuY2FsbCI7CiAgICAgICAgTSArPSBgICB2YXIgcnYgPSAke2EwfSgke3MyLmpvaW4oIiwgIil9KTsKYCwgcjIuaXNWb2lkIHx8IChOLnB1c2goImVtdmFsX3JldHVyblZhbHVlIiksIE4yLnB1c2goaUEpLCBNICs9IGAgIHJldHVybiBlbXZhbF9yZXR1cm5WYWx1ZShyZXRUeXBlLCBkZXN0cnVjdG9yc1JlZiwgcnYpOwpgKSwgTSArPSBgfTsKYCwgTi5wdXNoKE0pOwogICAgICAgIHZhciBKMCA9IF9yKEZ1bmN0aW9uLCBOKSguLi5OMiksIFcwID0gYG1ldGhvZENhbGxlcjwoJHtLLm1hcCgoQTApID0+IEEwLm5hbWUpLmpvaW4oIiwgIil9KSA9PiAke3IyLm5hbWV9PmA7CiAgICAgICAgcmV0dXJuIHE4KE1lKFcwLCBKMCkpOwogICAgICB9LCBmQSA9IChWKSA9PiB7CiAgICAgICAgdmFyIFkgPSB4MS50b1ZhbHVlKFYpOwogICAgICAgIERlKFkpLCBqaShWKTsKICAgICAgfSwgQUEgPSAoViwgWSkgPT4gewogICAgICAgIFYgPSBrNChWLCAiX2VtdmFsX3Rha2VfdmFsdWUiKTsKICAgICAgICB2YXIgUyA9IFYucmVhZFZhbHVlRnJvbVBvaW50ZXIoWSk7CiAgICAgICAgcmV0dXJuIHgxLnRvSGFuZGxlKFMpOwogICAgICB9LCBuNCA9ICgpID0+IDIxNDc0ODM2NDgsIGtBID0gKCkgPT4gbjQoKSwgbkEgPSAoViwgWSkgPT4gTWF0aC5jZWlsKFYgLyBZKSAqIFksIHRBID0gKFYpID0+IHsKICAgICAgICB2YXIgWSA9IFUxLmJ1ZmZlciwgUyA9IChWIC0gWS5ieXRlTGVuZ3RoICsgNjU1MzUpIC8gNjU1MzYgfCAwOwogICAgICAgIHRyeSB7CiAgICAgICAgICByZXR1cm4gVTEuZ3JvdyhTKSwgJCgpLCAxOwogICAgICAgIH0gY2F0Y2ggewogICAgICAgIH0KICAgICAgfSwgbEEgPSAoVikgPT4gewogICAgICAgIHZhciBZID0gdjIubGVuZ3RoOwogICAgICAgIFYgPj4+PSAwOwogICAgICAgIHZhciBTID0gbjQoKTsKICAgICAgICBpZiAoViA+IFMpCiAgICAgICAgICByZXR1cm4gITE7CiAgICAgICAgZm9yICh2YXIgSyA9IDE7IEsgPD0gNDsgSyAqPSAyKSB7CiAgICAgICAgICB2YXIgcjIgPSBZICogKDEgKyAwLjIgLyBLKTsKICAgICAgICAgIHIyID0gTWF0aC5taW4ocjIsIFYgKyAxMDA2NjMyOTYpOwogICAgICAgICAgdmFyIE0gPSBNYXRoLm1pbihTLCBuQShNYXRoLm1heChWLCByMiksIDY1NTM2KSksIFcyID0gdEEoTSk7CiAgICAgICAgICBpZiAoVzIpCiAgICAgICAgICAgIHJldHVybiAhMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICExOwogICAgICB9LCBfaSA9IHt9LCBhQSA9ICgpID0+IFIwIHx8ICIuL3RoaXMucHJvZ3JhbSIsIFNlID0gKCkgPT4gewogICAgICAgIGlmICghU2Uuc3RyaW5ncykgewogICAgICAgICAgdmFyIFYgPSAodHlwZW9mIG5hdmlnYXRvciA9PSAib2JqZWN0IiAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzICYmIG5hdmlnYXRvci5sYW5ndWFnZXNbMF0gfHwgIkMiKS5yZXBsYWNlKCItIiwgIl8iKSArICIuVVRGLTgiLCBZID0geyBVU0VSOiAid2ViX3VzZXIiLCBMT0dOQU1FOiAid2ViX3VzZXIiLCBQQVRIOiAiLyIsIFBXRDogIi8iLCBIT01FOiAiL2hvbWUvd2ViX3VzZXIiLCBMQU5HOiBWLCBfOiBhQSgpIH07CiAgICAgICAgICBmb3IgKHZhciBTIGluIF9pKQogICAgICAgICAgICBfaVtTXSA9PT0gdm9pZCAwID8gZGVsZXRlIFlbU10gOiBZW1NdID0gX2lbU107CiAgICAgICAgICB2YXIgSyA9IFtdOwogICAgICAgICAgZm9yICh2YXIgUyBpbiBZKQogICAgICAgICAgICBLLnB1c2goYCR7U309JHtZW1NdfWApOwogICAgICAgICAgU2Uuc3RyaW5ncyA9IEs7CiAgICAgICAgfQogICAgICAgIHJldHVybiBTZS5zdHJpbmdzOwogICAgICB9LCB1QSA9IChWLCBZKSA9PiB7CiAgICAgICAgZm9yICh2YXIgUyA9IDA7IFMgPCBWLmxlbmd0aDsgKytTKQogICAgICAgICAgVzFbWSsrXSA9IFYuY2hhckNvZGVBdChTKTsKICAgICAgICBXMVtZXSA9IDA7CiAgICAgIH0sIG9BID0gKFYsIFkpID0+IHsKICAgICAgICB2YXIgUyA9IDA7CiAgICAgICAgcmV0dXJuIFNlKCkuZm9yRWFjaCgoSywgcjIpID0+IHsKICAgICAgICAgIHZhciBNID0gWSArIFM7CiAgICAgICAgICBMW1YgKyByMiAqIDQgPj4gMl0gPSBNLCB1QShLLCBNKSwgUyArPSBLLmxlbmd0aCArIDE7CiAgICAgICAgfSksIDA7CiAgICAgIH0sIGdBID0gKFYsIFkpID0+IHsKICAgICAgICB2YXIgUyA9IFNlKCk7CiAgICAgICAgTFtWID4+IDJdID0gUy5sZW5ndGg7CiAgICAgICAgdmFyIEsgPSAwOwogICAgICAgIHJldHVybiBTLmZvckVhY2goKHIyKSA9PiBLICs9IHIyLmxlbmd0aCArIDEpLCBMW1kgPj4gMl0gPSBLLCAwOwogICAgICB9LCBoQSA9IChWKSA9PiA1MjsKICAgICAgZnVuY3Rpb24gc0EoViwgWSwgUywgSywgcjIpIHsKICAgICAgICByZXR1cm4gNzA7CiAgICAgIH0KICAgICAgdmFyIHdBID0gW251bGwsIFtdLCBbXV0sIEJBID0gKFYsIFkpID0+IHsKICAgICAgICB2YXIgUyA9IHdBW1ZdOwogICAgICAgIFkgPT09IDAgfHwgWSA9PT0gMTAgPyAoKFYgPT09IDEgPyBOaSA6IEwxKShpNChTKSksIFMubGVuZ3RoID0gMCkgOiBTLnB1c2goWSk7CiAgICAgIH0sIGNBID0gKFYsIFksIFMsIEspID0+IHsKICAgICAgICBmb3IgKHZhciByMiA9IDAsIE0gPSAwOyBNIDwgUzsgTSsrKSB7CiAgICAgICAgICB2YXIgVzIgPSBMW1kgPj4gMl0sIHMyID0gTFtZICsgNCA+PiAyXTsKICAgICAgICAgIFkgKz0gODsKICAgICAgICAgIGZvciAodmFyIE4gPSAwOyBOIDwgczI7IE4rKykKICAgICAgICAgICAgQkEoViwgdjJbVzIgKyBOXSk7CiAgICAgICAgICByMiArPSBzMjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIExbSyA+PiAyXSA9IHIyLCAwOwogICAgICB9LCB2QSA9IChWKSA9PiB7CiAgICAgICAgdmFyIFkgPSBDMlsiXyIgKyBWXTsKICAgICAgICByZXR1cm4gWTsKICAgICAgfSwgSUEgPSAoViwgWSkgPT4gewogICAgICAgIFcxLnNldChWLCBZKTsKICAgICAgfSwgdDQgPSAoVikgPT4gdTQoViksIFpBID0gKFYpID0+IHsKICAgICAgICB2YXIgWSA9IHFyKFYpICsgMSwgUyA9IHQ0KFkpOwogICAgICAgIHJldHVybiAkcihWLCBTLCBZKSwgUzsKICAgICAgfSwgQ0EgPSAoViwgWSwgUywgSywgcjIpID0+IHsKICAgICAgICB2YXIgTSA9IHsgc3RyaW5nOiAoQTApID0+IHsKICAgICAgICAgIHZhciBOMCA9IDA7CiAgICAgICAgICByZXR1cm4gQTAgIT0gbnVsbCAmJiBBMCAhPT0gMCAmJiAoTjAgPSBaQShBMCkpLCBOMDsKICAgICAgICB9LCBhcnJheTogKEEwKSA9PiB7CiAgICAgICAgICB2YXIgTjAgPSB0NChBMC5sZW5ndGgpOwogICAgICAgICAgcmV0dXJuIElBKEEwLCBOMCksIE4wOwogICAgICAgIH0gfTsKICAgICAgICBmdW5jdGlvbiBXMihBMCkgewogICAgICAgICAgcmV0dXJuIFkgPT09ICJzdHJpbmciID8gcjQoQTApIDogWSA9PT0gImJvb2xlYW4iID8gISFBMCA6IEEwOwogICAgICAgIH0KICAgICAgICB2YXIgczIgPSB2QShWKSwgTiA9IFtdLCBOMiA9IDA7CiAgICAgICAgaWYgKEspCiAgICAgICAgICBmb3IgKHZhciBNMiA9IDA7IE0yIDwgSy5sZW5ndGg7IE0yKyspIHsKICAgICAgICAgICAgdmFyIGEwID0gTVtTW00yXV07CiAgICAgICAgICAgIGEwID8gKE4yID09PSAwICYmIChOMiA9IEYxKCkpLCBOW00yXSA9IGEwKEtbTTJdKSkgOiBOW00yXSA9IEtbTTJdOwogICAgICAgICAgfQogICAgICAgIHZhciBKMCA9IHMyKC4uLk4pOwogICAgICAgIGZ1bmN0aW9uIFcwKEEwKSB7CiAgICAgICAgICByZXR1cm4gTjIgIT09IDAgJiYgTTEoTjIpLCBXMihBMCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBKMCA9IFcwKEowKSwgSjA7CiAgICAgIH07CiAgICAgIERyID0gQzIuSW50ZXJuYWxFcnJvciA9IGNsYXNzIGV4dGVuZHMgRXJyb3IgewogICAgICAgIGNvbnN0cnVjdG9yKFkpIHsKICAgICAgICAgIHN1cGVyKFkpLCB0aGlzLm5hbWUgPSAiSW50ZXJuYWxFcnJvciI7CiAgICAgICAgfQogICAgICB9LCBlOCgpLCBaZSA9IEMyLkJpbmRpbmdFcnJvciA9IGNsYXNzIGV4dGVuZHMgRXJyb3IgewogICAgICAgIGNvbnN0cnVjdG9yKFkpIHsKICAgICAgICAgIHN1cGVyKFkpLCB0aGlzLm5hbWUgPSAiQmluZGluZ0Vycm9yIjsKICAgICAgICB9CiAgICAgIH0sIGE4KCksIGM4KCksIGpyID0gQzIuVW5ib3VuZFR5cGVFcnJvciA9IEM4KEVycm9yLCAiVW5ib3VuZFR5cGVFcnJvciIpLCBROCgpOwogICAgICB2YXIgR0EgPSB7IGs6IEoxLCBxOiBxMCwgZTogJGYsIHA6IHFmLCB6OiByOCwgajogRzgsIGk6IG04LCBhOiB5OCwgeDogWTgsIG46IFg4LCBtOiBGOCwgZDogUjgsIGI6IEU4LCB5OiBVOCwgZzogejgsIGY6IGQ4LCBjOiBLOCwgQTogajgsIHc6IEw4LCBDOiBPOCwgRTogamksIEY6ICQ4LCBEOiByQSwgQjogZkEsIGg6IEFBLCBzOiBrQSwgcjogbEEsIHQ6IG9BLCB1OiBnQSwgdjogaEEsIG86IHNBLCBsOiBjQSB9LCBCMTsKICAgICAgbzEoKTsKICAgICAgdmFyIGw0ID0gKFYpID0+IChsNCA9IEIxLkkpKFYpLCBiaSA9IChWKSA9PiAoYmkgPSBCMS5LKShWKSwgVDEgPSAoVikgPT4gKFQxID0gQjEuTCkoViksIGE0ID0gKFYpID0+IChhNCA9IEIxLk0pKFYpLCB1NCA9IChWKSA9PiAodTQgPSBCMS5OKShWKSwgbzQgPSAoKSA9PiAobzQgPSBCMS5PKSgpOwogICAgICBDMi5keW5DYWxsX2lqaSA9IChWLCBZLCBTLCBLKSA9PiAoQzIuZHluQ2FsbF9pamkgPSBCMS5QKShWLCBZLCBTLCBLKSwgQzIuZHluQ2FsbF9qamkgPSAoViwgWSwgUywgSykgPT4gKEMyLmR5bkNhbGxfamppID0gQjEuUSkoViwgWSwgUywgSyksIEMyLmR5bkNhbGxfaWlqaSA9IChWLCBZLCBTLCBLLCByMikgPT4gKEMyLmR5bkNhbGxfaWlqaSA9IEIxLlIpKFYsIFksIFMsIEssIHIyKSwgQzIuZHluQ2FsbF9qaWppID0gKFYsIFksIFMsIEssIHIyKSA9PiAoQzIuZHluQ2FsbF9qaWppID0gQjEuUykoViwgWSwgUywgSywgcjIpLCBDMi5jY2FsbCA9IENBOwogICAgICB2YXIgYWk7CiAgICAgIGoyID0gZnVuY3Rpb24gVigpIHsKICAgICAgICBhaSB8fCBnNCgpLCBhaSB8fCAoajIgPSBWKTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gZzQoKSB7CiAgICAgICAgaWYgKEoyID4gMCB8fCAoQjIoKSwgSjIgPiAwKSkKICAgICAgICAgIHJldHVybjsKICAgICAgICBmdW5jdGlvbiBWKCkgewogICAgICAgICAgdmFyIFk7CiAgICAgICAgICBhaSB8fCAoYWkgPSAhMCwgQzIuY2FsbGVkUnVuID0gITAsICFpaSAmJiAoVjIoKSwgUTAoQzIpLCAoWSA9IEMyLm9uUnVudGltZUluaXRpYWxpemVkKSA9PSBudWxsIHx8IFkuY2FsbChDMiksIHkyKCkpKTsKICAgICAgICB9CiAgICAgICAgQzIuc2V0U3RhdHVzID8gKEMyLnNldFN0YXR1cygiUnVubmluZy4uLiIpLCBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gQzIuc2V0U3RhdHVzKCIiKSwgMSksIFYoKTsKICAgICAgICB9LCAxKSkgOiBWKCk7CiAgICAgIH0KICAgICAgaWYgKEMyLnByZUluaXQpCiAgICAgICAgZm9yICh0eXBlb2YgQzIucHJlSW5pdCA9PSAiZnVuY3Rpb24iICYmIChDMi5wcmVJbml0ID0gW0MyLnByZUluaXRdKTsgQzIucHJlSW5pdC5sZW5ndGggPiAwOyApCiAgICAgICAgICBDMi5wcmVJbml0LnBvcCgpKCk7CiAgICAgIHJldHVybiBnNCgpLCBzMCA9IGllLCBzMDsKICAgIH07CiAgfSkoKTsKICBPMi5leHBvcnRzID0gZjAsIE8yLmV4cG9ydHMuZGVmYXVsdCA9IGYwOwp9KShiZik7CnZhciBPdCA9IGJmLmV4cG9ydHMsIFJlID0gLyogQF9fUFVSRV9fICovIExmKE90KTsKZnVuY3Rpb24gX3QoTzIsIHUwLCBmMCwgbDApIHsKICBjb25zdCBCMCA9IG5ldyBVaW50OENsYW1wZWRBcnJheSh1MCAqIGYwICogNCk7CiAgZm9yIChjb25zdCBaMCBvZiBPMikgewogICAgY29uc3QgeyBpdGVtczogczAsIHdpZHRoOiBDMiwgaGVpZ2h0OiBRMCwgbGVmdDogVjEsIHRvcDogaWUgfSA9IFowOwogICAgZm9yIChsZXQgWDEgPSAwOyBYMSA8IFEwOyBYMSsrKQogICAgICBmb3IgKGxldCB1MSA9IDA7IHUxIDwgQzI7IHUxKyspIHsKICAgICAgICBjb25zdCBLMCA9IChYMSAqIEMyICsgdTEpICogbDAsIFgwID0gKChpZSArIFgxKSAqIHUwICsgKFYxICsgdTEpKSAqIDQ7CiAgICAgICAgaWYgKGwwID09PSAxKSB7CiAgICAgICAgICBjb25zdCBSMCA9IHMwW0swXTsKICAgICAgICAgIEIwW1gwXSA9IFIwLCBCMFtYMCArIDFdID0gUjAsIEIwW1gwICsgMl0gPSBSMCwgQjBbWDAgKyAzXSA9IDI1NTsKICAgICAgICB9IGVsc2UgbDAgPj0gMyAmJiAoQjBbWDBdID0gczBbSzBdLCBCMFtYMCArIDFdID0gczBbSzAgKyAxXSwgQjBbWDAgKyAyXSA9IHMwW0swICsgMl0sIEIwW1gwICsgM10gPSBsMCA+PSA0ID8gczBbSzAgKyAzXSA6IDI1NSk7CiAgICAgIH0KICB9CiAgcmV0dXJuIEIwOwp9CmZ1bmN0aW9uIGJ0KE8yKSB7CiAgdmFyIFowOwogIGNvbnN0IHUwID0gZHQsIGYwID0gdTAuSnB4SW1hZ2UgfHwgKChaMCA9IHUwLmRlZmF1bHQpID09IG51bGwgPyB2b2lkIDAgOiBaMC5KcHhJbWFnZSk7CiAgaWYgKHR5cGVvZiBmMCAhPSAiZnVuY3Rpb24iKQogICAgdGhyb3cgbmV3IEVycm9yKCJqcGVnMjAwMCDlupMgQVBJIOS4jeespuWQiOmihOacn++8muacquaJvuWIsCBKcHhJbWFnZSIpOwogIGNvbnN0IGwwID0gbmV3IGYwKCksIEIwID0gT2JqZWN0LmFzc2lnbihPMiwgewogICAgcmVhZFVJbnQ4KHMwKSB7CiAgICAgIHJldHVybiBPMltzMF07CiAgICB9LAogICAgcmVhZEludDgoczApIHsKICAgICAgcmV0dXJuIE8yW3MwXSA8PCAyNCA+PiAyNDsKICAgIH0sCiAgICByZWFkVUludDE2QkUoczApIHsKICAgICAgcmV0dXJuIE8yW3MwXSA8PCA4IHwgTzJbczAgKyAxXTsKICAgIH0sCiAgICByZWFkSW50MTZCRShzMCkgewogICAgICByZXR1cm4gKE8yW3MwXSA8PCA4IHwgTzJbczAgKyAxXSkgPDwgMTYgPj4gMTY7CiAgICB9LAogICAgcmVhZFVJbnQzMkJFKHMwKSB7CiAgICAgIHJldHVybiBPMltzMF0gKiAxNjc3NzIxNiArIChPMltzMCArIDFdIDw8IDE2IHwgTzJbczAgKyAyXSA8PCA4IHwgTzJbczAgKyAzXSk7CiAgICB9CiAgfSk7CiAgcmV0dXJuIGwwLnBhcnNlKEIwKSwgewogICAgcmdiYTogX3QobDAudGlsZXMsIGwwLndpZHRoLCBsMC5oZWlnaHQsIGwwLmNvbXBvbmVudHNDb3VudCksCiAgICB3aWR0aDogbDAud2lkdGgsCiAgICBoZWlnaHQ6IGwwLmhlaWdodAogIH07Cn0KbGV0IFJyID0gbnVsbDsKYXN5bmMgZnVuY3Rpb24gJHQoKSB7CiAgcmV0dXJuIFJyIHx8IChSciA9IChhc3luYyAoKSA9PiB7CiAgICBjb25zdCBPMiA9IHR5cGVvZiBSZSA9PSAiZnVuY3Rpb24iID8gUmUgOiAoUmUgPT0gbnVsbCA/IHZvaWQgMCA6IFJlLmRlZmF1bHQpIHx8IFJlOwogICAgaWYgKHR5cGVvZiBPMiAhPSAiZnVuY3Rpb24iKQogICAgICB0aHJvdyBuZXcgRXJyb3IoIkBjb3JuZXJzdG9uZWpzL2NvZGVjLW9wZW5qcGVnIOW6kyBBUEkg5LiN56ym5ZCI6aKE5pyf77ya5pyq5om+5Yiw5bel5Y6C5Ye95pWwIik7CiAgICByZXR1cm4gYXdhaXQgTzIoKTsKICB9KSgpKSwgUnI7Cn0KZnVuY3Rpb24gcXQoTzIsIHUwKSB7CiAgY29uc3QgeyB3aWR0aDogZjAsIGhlaWdodDogbDAsIGJpdHNQZXJTYW1wbGU6IEIwLCBjb21wb25lbnRDb3VudDogWjAsIGlzU2lnbmVkOiBzMCB9ID0gdTAsIEMyID0gQjAgPiA4ID8gMiA6IDEsIFEwID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGYwICogbDAgKiA0KSwgVjEgPSBmMCAqIGwwLCBpZSA9IE1hdGgubWF4KDAsIEIwIC0gOCksIFgxID0gczAgPyAxIDw8IEIwIC0gMSA6IDAsIHUxID0gKEswKSA9PiB7CiAgICBsZXQgWDA7CiAgICBDMiA9PT0gMiA/IChYMCA9IE8yW0swXSB8IE8yW0swICsgMV0gPDwgOCwgczAgJiYgKFgwID0gWDAgPDwgMTYgPj4gMTYpKSA6IFgwID0gczAgPyBPMltLMF0gPDwgMjQgPj4gMjQgOiBPMltLMF07CiAgICBsZXQgUjAgPSBYMCArIFgxOwogICAgcmV0dXJuIFIwID0gUjAgPj4gaWUsIFIwIDwgMCA/IFIwID0gMCA6IFIwID4gMjU1ICYmIChSMCA9IDI1NSksIFIwOwogIH07CiAgaWYgKFowID09PSAxKQogICAgZm9yIChsZXQgSzAgPSAwOyBLMCA8IFYxOyBLMCsrKSB7CiAgICAgIGNvbnN0IFgwID0gdTEoSzAgKiBDMiksIFIwID0gSzAgKiA0OwogICAgICBRMFtSMF0gPSBYMCwgUTBbUjAgKyAxXSA9IFgwLCBRMFtSMCArIDJdID0gWDAsIFEwW1IwICsgM10gPSAyNTU7CiAgICB9CiAgZWxzZSB7CiAgICBjb25zdCBLMCA9IFowICogQzI7CiAgICBmb3IgKGxldCBYMCA9IDA7IFgwIDwgVjE7IFgwKyspIHsKICAgICAgY29uc3QgUjAgPSBYMCAqIEswLCBBMSA9IFgwICogNDsKICAgICAgUTBbQTFdID0gdTEoUjApLCBRMFtBMSArIDFdID0gdTEoUjAgKyBDMiksIFEwW0ExICsgMl0gPSB1MShSMCArIDIgKiBDMiksIFEwW0ExICsgM10gPSBaMCA+PSA0ID8gdTEoUjAgKyAzICogQzIpIDogMjU1OwogICAgfQogIH0KICByZXR1cm4geyByZ2JhOiBRMCwgd2lkdGg6IGYwLCBoZWlnaHQ6IGwwIH07Cn0KYXN5bmMgZnVuY3Rpb24gZTUoTzIpIHsKICBjb25zdCB1MCA9IGF3YWl0ICR0KCk7CiAgaWYgKCF1MCB8fCB0eXBlb2YgdTAuSjJLRGVjb2RlciAhPSAiZnVuY3Rpb24iKQogICAgdGhyb3cgbmV3IEVycm9yKCJAY29ybmVyc3RvbmVqcy9jb2RlYy1vcGVuanBlZyDmnKrmmrTpnLIgSjJLRGVjb2RlciIpOwogIGNvbnN0IGYwID0gbmV3IHUwLkoyS0RlY29kZXIoKTsKICB0cnkgewogICAgZjAuZ2V0RW5jb2RlZEJ1ZmZlcihPMi5sZW5ndGgpLnNldChPMiksIGYwLmRlY29kZSgpOwogICAgY29uc3QgQjAgPSBmMC5nZXREZWNvZGVkQnVmZmVyKCksIFowID0gZjAuZ2V0RnJhbWVJbmZvKCk7CiAgICByZXR1cm4gcXQoQjAsIFowKTsKICB9IGZpbmFsbHkgewogICAgaWYgKHR5cGVvZiBmMC5kZWxldGUgPT0gImZ1bmN0aW9uIikKICAgICAgdHJ5IHsKICAgICAgICBmMC5kZWxldGUoKTsKICAgICAgfSBjYXRjaCB7CiAgICAgIH0KICB9Cn0Kc2VsZi5vbm1lc3NhZ2UgPSBhc3luYyAoTzIpID0+IHsKICBjb25zdCB7IGlkOiB1MCwgY29kZXN0cmVhbTogZjAgfSA9IE8yLmRhdGEsIGwwID0gW107CiAgdHJ5IHsKICAgIGNvbnN0IFowID0gYnQoZjApLCBzMCA9IHsgaWQ6IHUwLCBvazogITAsIC4uLlowIH07CiAgICBzZWxmLnBvc3RNZXNzYWdlKHMwLCBbWjAucmdiYS5idWZmZXJdKTsKICAgIHJldHVybjsKICB9IGNhdGNoIChaMCkgewogICAgbDAucHVzaChganBlZzIwMDA6ICR7KFowID09IG51bGwgPyB2b2lkIDAgOiBaMC5tZXNzYWdlKSB8fCAi5pyq55+l6ZSZ6K+vIn1gKTsKICB9CiAgdHJ5IHsKICAgIGNvbnN0IFowID0gYXdhaXQgZTUoZjApLCBzMCA9IHsgaWQ6IHUwLCBvazogITAsIC4uLlowIH07CiAgICBzZWxmLnBvc3RNZXNzYWdlKHMwLCBbWjAucmdiYS5idWZmZXJdKTsKICAgIHJldHVybjsKICB9IGNhdGNoIChaMCkgewogICAgbDAucHVzaChgb3BlbmpwZWc6ICR7KFowID09IG51bGwgPyB2b2lkIDAgOiBaMC5tZXNzYWdlKSB8fCAi5pyq55+l6ZSZ6K+vIn1gKTsKICB9CiAgY29uc3QgQjAgPSB7IGlkOiB1MCwgb2s6ICExLCBlcnJvcjogbDAuam9pbigi77ybIikgfTsKICBzZWxmLnBvc3RNZXNzYWdlKEIwKTsKfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9anAyV29ya2VyLUQ0WmJ1Ukd5LmpzLm1hcAo=\", l = (g) => Uint8Array.from(atob(g), (I) => I.charCodeAt(0)), K = typeof self < \"u\" && self.Blob && new Blob([\"URL.revokeObjectURL(import.meta.url);\", l(o)], { type: \"text/javascript;charset=utf-8\" });\nfunction Z(g) {\n  let I;\n  try {\n    if (I = K && (self.URL || self.webkitURL).createObjectURL(K), !I) throw \"\";\n    const A = new Worker(I, {\n      type: \"module\",\n      name: g == null ? void 0 : g.name\n    });\n    return A.addEventListener(\"error\", () => {\n      (self.URL || self.webkitURL).revokeObjectURL(I);\n    }), A;\n  } catch {\n    return new Worker(\n      \"data:text/javascript;base64,\" + o,\n      {\n        type: \"module\",\n        name: g == null ? void 0 : g.name\n      }\n    );\n  }\n}\nlet i = null;\nasync function G() {\n  return i !== null ? i : new Promise((g) => {\n    const I = new Image();\n    I.onload = () => {\n      i = I.width === 1 && I.height === 1, g(i);\n    }, I.onerror = () => {\n      i = !1, g(!1);\n    }, I.src = \"data:image/jp2;base64,AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAAAABZpaGRyAAAAAQAAAAEAAQcHAAAAAAAPY29scgEAAAAAABEAAACVanAyY/9P/1EALwAAAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAQcBAQcBAQcB/1IADAAAAAAEBP8AAQH/XAAEQEDoP2QAGgABAAAAAAQEBAEAAEhBRkY=\";\n  });\n}\nfunction H(g) {\n  if (g[0] === 255 && g[1] === 79 && g[2] === 255 && g[3] === 81)\n    return g;\n  let I = 0;\n  for (; I + 8 <= g.length; ) {\n    const A = (g[I] << 24 | g[I + 1] << 16 | g[I + 2] << 8 | g[I + 3]) >>> 0, C = String.fromCharCode(\n      g[I + 4],\n      g[I + 5],\n      g[I + 6],\n      g[I + 7]\n    );\n    let D = 8, B = A;\n    if (A === 1) {\n      if (I + 16 > g.length) break;\n      const S = (g[I + 8] << 24 | g[I + 9] << 16 | g[I + 10] << 8 | g[I + 11]) >>> 0, w = (g[I + 12] << 24 | g[I + 13] << 16 | g[I + 14] << 8 | g[I + 15]) >>> 0;\n      B = S === 0 ? w : S * 4294967296 + w, D = 16;\n    }\n    if (C === \"jp2c\") {\n      const S = A === 0 ? void 0 : I + B;\n      return g.slice(I + D, S);\n    }\n    if (A === 0 || B < D) break;\n    I += B;\n  }\n  return g;\n}\nlet P = null, V = 1;\nconst y = /* @__PURE__ */ new Map();\nfunction Y() {\n  if (!P) {\n    const g = new Z();\n    return g.addEventListener(\"message\", (I) => {\n      const A = I.data, C = y.get(A.id);\n      C && (y.delete(A.id), A.ok ? C.resolve({ rgba: A.rgba, width: A.width, height: A.height }) : C.reject(new Error(`JPEG 2000 解码失败：${A.error}`)));\n    }), g.addEventListener(\"error\", (I) => {\n      const A = new Error(`JPEG 2000 Worker 异常：${I.message || \"未知错误\"}`);\n      y.forEach(({ reject: C }) => C(A)), y.clear();\n    }), P = g, g;\n  }\n  return P;\n}\nfunction W(g) {\n  const I = Y(), A = V++;\n  return new Promise((C, D) => {\n    y.set(A, { resolve: C, reject: D });\n    const B = g.slice();\n    I.postMessage({ id: A, codestream: B }, [B.buffer]);\n  });\n}\nfunction j(g, I, A, C) {\n  const D = document.createElement(\"canvas\");\n  D.width = I, D.height = A;\n  const B = D.getContext(\"2d\");\n  if (!B) throw new Error(\"无法创建 Canvas 2D 上下文\");\n  const S = new ImageData(\n    g,\n    I,\n    A\n  );\n  return B.putImageData(S, 0, 0), new Promise((w, M) => {\n    D.toBlob(\n      (s) => {\n        s ? w(s) : M(new Error(\"JPEG 2000 Canvas 转 Blob 失败\"));\n      },\n      C\n    );\n  });\n}\nclass Q {\n  async needsDecode(I) {\n    return I !== \"image/jp2\" && I !== \"image/jpx\" ? !1 : !await G();\n  }\n  async decode(I, A) {\n    if (await G())\n      return I instanceof Blob ? I : new Blob([I], { type: \"image/jp2\" });\n    const C = I instanceof Blob ? await I.arrayBuffer() : I, D = H(new Uint8Array(C)), B = (A == null ? void 0 : A.outputFormat) || \"image/png\", { rgba: S, width: w, height: M } = await W(D);\n    return j(S, w, M, B);\n  }\n  async getMetadata(I) {\n    return {\n      format: \"jp2\"\n    };\n  }\n}\nconst d = new Q();\nexport {\n  d as default\n};\n//# sourceMappingURL=jp2Loader-Bn-qPMbD.js.map\n"],"names":[],"mappings":"AAAA,MAAM,IAAI,gjrjFAAgjrjF,IAAI,CAAC,MAAM,WAAW,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,gCAA+B,CAAE;AAChwrjF,SAAS,EAAE,GAAG;AACZ,MAAI;AACJ,MAAI;AACF,QAAI,IAAI,MAAM,KAAK,OAAO,KAAK,WAAW,gBAAgB,CAAC,GAAG,CAAC,EAAG,OAAM;AACxE,UAAM,IAAI,IAAI,OAAO,GAAG;AAAA,MACtB,MAAM;AAAA,MACN,MAAM,KAAK,OAAO,SAAS,EAAE;AAAA,IACnC,CAAK;AACD,WAAO,EAAE,iBAAiB,SAAS,MAAM;AACvC,OAAC,KAAK,OAAO,KAAK,WAAW,gBAAgB,CAAC;AAAA,IAChD,CAAC,GAAG;AAAA,EACN,QAAQ;AACN,WAAO,IAAI;AAAA,MACT,iCAAiC;AAAA,MACjC;AAAA,QACE,MAAM;AAAA,QACN,MAAM,KAAK,OAAO,SAAS,EAAE;AAAA,MACrC;AAAA,IACA;AAAA,EACE;AACF;AACA,IAAI,IAAI;AACR,eAAe,IAAI;AACjB,SAAO,MAAM,OAAO,IAAI,IAAI,QAAQ,CAAC,MAAM;AACzC,UAAM,IAAI,IAAI,MAAK;AACnB,MAAE,SAAS,MAAM;AACf,UAAI,EAAE,UAAU,KAAK,EAAE,WAAW,GAAG,EAAE,CAAC;AAAA,IAC1C,GAAG,EAAE,UAAU,MAAM;AACnB,UAAI,IAAI,EAAE,EAAE;AAAA,IACd,GAAG,EAAE,MAAM;AAAA,EACb,CAAC;AACH;AACA,SAAS,EAAE,GAAG;AACZ,MAAI,EAAE,CAAC,MAAM,OAAO,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,MAAM,OAAO,EAAE,CAAC,MAAM;AAC1D,WAAO;AACT,MAAI,IAAI;AACR,SAAO,IAAI,KAAK,EAAE,UAAU;AAC1B,UAAM,KAAK,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO;AAAA,MACnF,EAAE,IAAI,CAAC;AAAA,MACP,EAAE,IAAI,CAAC;AAAA,MACP,EAAE,IAAI,CAAC;AAAA,MACP,EAAE,IAAI,CAAC;AAAA,IACb;AACI,QAAI,IAAI,GAAG,IAAI;AACf,QAAI,MAAM,GAAG;AACX,UAAI,IAAI,KAAK,EAAE,OAAQ;AACvB,YAAM,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,OAAO;AACzJ,UAAI,MAAM,IAAI,IAAI,IAAI,aAAa,GAAG,IAAI;AAAA,IAC5C;AACA,QAAI,MAAM,QAAQ;AAChB,YAAM,IAAI,MAAM,IAAI,SAAS,IAAI;AACjC,aAAO,EAAE,MAAM,IAAI,GAAG,CAAC;AAAA,IACzB;AACA,QAAI,MAAM,KAAK,IAAI,EAAG;AACtB,SAAK;AAAA,EACP;AACA,SAAO;AACT;AACA,IAAI,IAAI,MAAM,IAAI;AAClB,MAAM,IAAoB,oBAAI,IAAG;AACjC,SAAS,IAAI;AACX,MAAI,CAAC,GAAG;AACN,UAAM,IAAI,IAAI,EAAC;AACf,WAAO,EAAE,iBAAiB,WAAW,CAAC,MAAM;AAC1C,YAAM,IAAI,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,EAAE;AAChC,YAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,EAAE,OAAO,QAAQ,EAAE,OAAM,CAAE,IAAI,EAAE,OAAO,IAAI,MAAM,kBAAkB,EAAE,KAAK,EAAE,CAAC;AAAA,IAC9I,CAAC,GAAG,EAAE,iBAAiB,SAAS,CAAC,MAAM;AACrC,YAAM,IAAI,IAAI,MAAM,uBAAuB,EAAE,WAAW,MAAM,EAAE;AAChE,QAAE,QAAQ,CAAC,EAAE,QAAQ,EAAC,MAAO,EAAE,CAAC,CAAC,GAAG,EAAE,MAAK;AAAA,IAC7C,CAAC,GAAG,IAAI,GAAG;AAAA,EACb;AACA,SAAO;AACT;AACA,SAAS,EAAE,GAAG;AACZ,QAAM,IAAI,KAAK,IAAI;AACnB,SAAO,IAAI,QAAQ,CAAC,GAAG,MAAM;AAC3B,MAAE,IAAI,GAAG,EAAE,SAAS,GAAG,QAAQ,GAAG;AAClC,UAAM,IAAI,EAAE,MAAK;AACjB,MAAE,YAAY,EAAE,IAAI,GAAG,YAAY,KAAK,CAAC,EAAE,MAAM,CAAC;AAAA,EACpD,CAAC;AACH;AACA,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG;AACrB,QAAM,IAAI,SAAS,cAAc,QAAQ;AACzC,IAAE,QAAQ,GAAG,EAAE,SAAS;AACxB,QAAM,IAAI,EAAE,WAAW,IAAI;AAC3B,MAAI,CAAC,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAC5C,QAAM,IAAI,IAAI;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACE,SAAO,EAAE,aAAa,GAAG,GAAG,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,MAAM;AACpD,MAAE;AAAA,MACA,CAAC,MAAM;AACL,YAAI,EAAE,CAAC,IAAI,EAAE,IAAI,MAAM,4BAA4B,CAAC;AAAA,MACtD;AAAA,MACA;AAAA,IACN;AAAA,EACE,CAAC;AACH;AACA,MAAM,EAAE;AAAA,EACN,MAAM,YAAY,GAAG;AACnB,WAAO,MAAM,eAAe,MAAM,cAAc,KAAK,CAAC,MAAM,EAAC;AAAA,EAC/D;AAAA,EACA,MAAM,OAAO,GAAG,GAAG;AACjB,QAAI,MAAM,EAAC;AACT,aAAO,aAAa,OAAO,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,aAAa;AACpE,UAAM,IAAI,aAAa,OAAO,MAAM,EAAE,YAAW,IAAK,GAAG,IAAI,EAAE,IAAI,WAAW,CAAC,CAAC,GAAG,KAAK,KAAK,OAAO,SAAS,EAAE,iBAAiB,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAC,IAAK,MAAM,EAAE,CAAC;AACzL,WAAO,EAAE,GAAG,GAAG,GAAG,CAAC;AAAA,EACrB;AAAA,EACA,MAAM,YAAY,GAAG;AACnB,WAAO;AAAA,MACL,QAAQ;AAAA,IACd;AAAA,EACE;AACF;AACK,MAAC,IAAI,IAAI,EAAC;"}