LS0gJElkOiBzb3J0Lmx1YSx2IDEuMzkgMjAxOC8wMy8xMiAxMzo1MTowMiByb2JlcnRvIEV4cCAkCi0tIFNlZSBDb3B5cmlnaHQgTm90aWNlIGluIGZpbGUgYWxsLmx1YQoKcHJpbnQgInRlc3RpbmcgKHBhcnRzIG9mKSB0YWJsZSBsaWJyYXJ5IgoKcHJpbnQgInRlc3RpbmcgdW5wYWNrIgoKbG9jYWwgdW5wYWNrID0gdGFibGUudW5wYWNrCgpsb2NhbCBtYXhJID0gbWF0aC5tYXhpbnRlZ2VyCmxvY2FsIG1pbkkgPSBtYXRoLm1pbmludGVnZXIKCgpsb2NhbCBmdW5jdGlvbiBjaGVja2Vycm9yIChtc2csIGYsIC4uLikKICBsb2NhbCBzLCBlcnIgPSBwY2FsbChmLCAuLi4pCiAgYXNzZXJ0KG5vdCBzIGFuZCBzdHJpbmcuZmluZChlcnIsIG1zZykpCmVuZAoKCmNoZWNrZXJyb3IoIndyb25nIG51bWJlciBvZiBhcmd1bWVudHMiLCB0YWJsZS5pbnNlcnQsIHt9LCAyLCAzLCA0KQoKbG9jYWwgeCx5LHosYSxuCmEgPSB7fTsgbGltID0gX3NvZnQgYW5kIDIwMCBvciAyMDAwCmZvciBpPTEsIGxpbSBkbyBhW2ldPWkgZW5kCmFzc2VydChzZWxlY3QobGltLCB1bnBhY2soYSkpID09IGxpbSBhbmQgc2VsZWN0KCcjJywgdW5wYWNrKGEpKSA9PSBsaW0pCnggPSB1bnBhY2soYSkKYXNzZXJ0KHggPT0gMSkKeCA9IHt1bnBhY2soYSl9CmFzc2VydCgjeCA9PSBsaW0gYW5kIHhbMV0gPT0gMSBhbmQgeFtsaW1dID09IGxpbSkKeCA9IHt1bnBhY2soYSwgbGltLTIpfQphc3NlcnQoI3ggPT0gMyBhbmQgeFsxXSA9PSBsaW0tMiBhbmQgeFszXSA9PSBsaW0pCnggPSB7dW5wYWNrKGEsIDEwLCA2KX0KYXNzZXJ0KG5leHQoeCkgPT0gbmlsKSAgIC0tIG5vIGVsZW1lbnRzCnggPSB7dW5wYWNrKGEsIDExLCAxMCl9CmFzc2VydChuZXh0KHgpID09IG5pbCkgICAtLSBubyBlbGVtZW50cwp4LHkgPSB1bnBhY2soYSwgMTAsIDEwKQphc3NlcnQoeCA9PSAxMCBhbmQgeSA9PSBuaWwpCngseSx6ID0gdW5wYWNrKGEsIDEwLCAxMSkKYXNzZXJ0KHggPT0gMTAgYW5kIHkgPT0gMTEgYW5kIHogPT0gbmlsKQphLHggPSB1bnBhY2t7MX0KYXNzZXJ0KGE9PTEgYW5kIHg9PW5pbCkKYSx4ID0gdW5wYWNrKHsxLDJ9LCAxLCAxKQphc3NlcnQoYT09MSBhbmQgeD09bmlsKQoKZG8KICBsb2NhbCBtYXhpID0gKDEgPDwgMzEpIC0gMSAgICAgICAgICAtLSBtYXhpbXVtIHZhbHVlIGZvciBhbiBpbnQgKHVzdWFsbHkpCiAgbG9jYWwgbWluaSA9IC0oMSA8PCAzMSkgICAgICAgICAgICAgLS0gbWluaW11bSB2YWx1ZSBmb3IgYW4gaW50ICh1c3VhbGx5KQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAwLCBtYXhpKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAxLCBtYXhpKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAwLCBtYXhJKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAxLCBtYXhJKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCBtaW5pLCBtYXhpKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAtbWF4aSwgbWF4aSkKICBjaGVja2Vycm9yKCJ0b28gbWFueSByZXN1bHRzIiwgdW5wYWNrLCB7fSwgbWluSSwgbWF4SSkKICB1bnBhY2soe30sIG1heGksIDApCiAgdW5wYWNrKHt9LCBtYXhpLCAxKQogIHVucGFjayh7fSwgbWF4SSwgbWluSSkKICBwY2FsbCh1bnBhY2ssIHt9LCAxLCBtYXhpICsgMSkKICBsb2NhbCBhLCBiID0gdW5wYWNrKHtbbWF4aV0gPSAyMH0sIG1heGksIG1heGkpCiAgYXNzZXJ0KGEgPT0gMjAgYW5kIGIgPT0gbmlsKQogIGEsIGIgPSB1bnBhY2soe1ttYXhpXSA9IDIwfSwgbWF4aSAtIDEsIG1heGkpCiAgYXNzZXJ0KGEgPT0gbmlsIGFuZCBiID09IDIwKQogIGxvY2FsIHQgPSB7W21heEkgLSAxXSA9IDEyLCBbbWF4SV0gPSAyM30KICBhLCBiID0gdW5wYWNrKHQsIG1heEkgLSAxLCBtYXhJKTsgYXNzZXJ0KGEgPT0gMTIgYW5kIGIgPT0gMjMpCiAgYSwgYiA9IHVucGFjayh0LCBtYXhJLCBtYXhJKTsgYXNzZXJ0KGEgPT0gMjMgYW5kIGIgPT0gbmlsKQogIGEsIGIgPSB1bnBhY2sodCwgbWF4SSwgbWF4SSAtIDEpOyBhc3NlcnQoYSA9PSBuaWwgYW5kIGIgPT0gbmlsKQogIHQgPSB7W21pbkldID0gMTIuMywgW21pbkkgKyAxXSA9IDIzLjV9CiAgYSwgYiA9IHVucGFjayh0LCBtaW5JLCBtaW5JICsgMSk7IGFzc2VydChhID09IDEyLjMgYW5kIGIgPT0gMjMuNSkKICBhLCBiID0gdW5wYWNrKHQsIG1pbkksIG1pbkkpOyBhc3NlcnQoYSA9PSAxMi4zIGFuZCBiID09IG5pbCkKICBhLCBiID0gdW5wYWNrKHQsIG1pbkkgKyAxLCBtaW5JKTsgYXNzZXJ0KGEgPT0gbmlsIGFuZCBiID09IG5pbCkKZW5kCgpkbyAgIC0tIGxlbmd0aCBpcyBub3QgYW4gaW50ZWdlcgogIGxvY2FsIHQgPSBzZXRtZXRhdGFibGUoe30sIHtfX2xlbiA9IGZ1bmN0aW9uICgpIHJldHVybiAnYWJjJyBlbmR9KQogIGFzc2VydCgjdCA9PSAnYWJjJykKICBjaGVja2Vycm9yKCJvYmplY3QgbGVuZ3RoIGlzIG5vdCBhbiBpbnRlZ2VyIiwgdGFibGUuaW5zZXJ0LCB0LCAxKQplbmQKCnByaW50ICJ0ZXN0aW5nIHBhY2siCgphID0gdGFibGUucGFjaygpCmFzc2VydChhWzFdID09IHVuZGVmIGFuZCBhLm4gPT0gMCkgCgphID0gdGFibGUucGFjayh0YWJsZSkKYXNzZXJ0KGFbMV0gPT0gdGFibGUgYW5kIGEubiA9PSAxKQoKYSA9IHRhYmxlLnBhY2sobmlsLCBuaWwsIG5pbCwgbmlsKQphc3NlcnQoYVsxXSA9PSBuaWwgYW5kIGEubiA9PSA0KQoKCi0tIHRlc3RpbmcgbW92ZQpkbwoKICBjaGVja2Vycm9yKCJ0YWJsZSBleHBlY3RlZCIsIHRhYmxlLm1vdmUsIDEsIDIsIDMsIDQpCgogIGxvY2FsIGZ1bmN0aW9uIGVxVCAoYSwgYikKICAgIGZvciBrLCB2IGluIHBhaXJzKGEpIGRvIGFzc2VydChiW2tdID09IHYpIGVuZCAKICAgIGZvciBrLCB2IGluIHBhaXJzKGIpIGRvIGFzc2VydChhW2tdID09IHYpIGVuZCAKICBlbmQKCiAgbG9jYWwgYSA9IHRhYmxlLm1vdmUoezEwLDIwLDMwfSwgMSwgMywgMikgIC0tIG1vdmUgZm9yd2FyZAogIGVxVChhLCB7MTAsMTAsMjAsMzB9KQoKICAtLSBtb3ZlIGZvcndhcmQgd2l0aCBvdmVybGFwIG9mIDEKICBhID0gdGFibGUubW92ZSh7MTAsIDIwLCAzMH0sIDEsIDMsIDMpCiAgZXFUKGEsIHsxMCwgMjAsIDEwLCAyMCwgMzB9KQoKICAtLSBtb3ZpbmcgdG8gdGhlIHNhbWUgdGFibGUgKG5vdCBiZWluZyBleHBsaWNpdCBhYm91dCBpdCkKICBhID0gezEwLCAyMCwgMzAsIDQwfQogIHRhYmxlLm1vdmUoYSwgMSwgNCwgMiwgYSkKICBlcVQoYSwgezEwLCAxMCwgMjAsIDMwLCA0MH0pCgogIGEgPSB0YWJsZS5tb3ZlKHsxMCwyMCwzMH0sIDIsIDMsIDEpICAgLS0gbW92ZSBiYWNrd2FyZAogIGVxVChhLCB7MjAsMzAsMzB9KQoKICBhID0ge30gICAtLSBtb3ZlIHRvIG5ldyB0YWJsZQogIGFzc2VydCh0YWJsZS5tb3ZlKHsxMCwyMCwzMH0sIDEsIDMsIDEsIGEpID09IGEpCiAgZXFUKGEsIHsxMCwyMCwzMH0pCgogIGEgPSB7fQogIGFzc2VydCh0YWJsZS5tb3ZlKHsxMCwyMCwzMH0sIDEsIDAsIDMsIGEpID09IGEpICAtLSBlbXB0eSBtb3ZlIChubyBtb3ZlKQogIGVxVChhLCB7fSkKCiAgYSA9IHRhYmxlLm1vdmUoezEwLDIwLDMwfSwgMSwgMTAsIDEpICAgLS0gbW92ZSB0byB0aGUgc2FtZSBwbGFjZQogIGVxVChhLCB7MTAsMjAsMzB9KQoKICAtLSBtb3Zpbmcgb24gdGhlIGZyaW5nZXMKICBhID0gdGFibGUubW92ZSh7W21heEkgLSAyXSA9IDEsIFttYXhJIC0gMV0gPSAyLCBbbWF4SV0gPSAzfSwKICAgICAgICAgICAgICAgICBtYXhJIC0gMiwgbWF4SSwgLTEwLCB7fSkKICBlcVQoYSwge1stMTBdID0gMSwgWy05XSA9IDIsIFstOF0gPSAzfSkKCiAgYSA9IHRhYmxlLm1vdmUoe1ttaW5JXSA9IDEsIFttaW5JICsgMV0gPSAyLCBbbWluSSArIDJdID0gM30sCiAgICAgICAgICAgICAgICAgbWluSSwgbWluSSArIDIsIC0xMCwge30pCiAgZXFUKGEsIHtbLTEwXSA9IDEsIFstOV0gPSAyLCBbLThdID0gM30pCgogIGEgPSB0YWJsZS5tb3ZlKHs0NX0sIDEsIDEsIG1heEkpCiAgZXFUKGEsIHs0NSwgW21heEldID0gNDV9KQoKICBhID0gdGFibGUubW92ZSh7W21heEldID0gMTAwfSwgbWF4SSwgbWF4SSwgbWluSSkKICBlcVQoYSwge1ttaW5JXSA9IDEwMCwgW21heEldID0gMTAwfSkKCiAgYSA9IHRhYmxlLm1vdmUoe1ttaW5JXSA9IDEwMH0sIG1pbkksIG1pbkksIG1heEkpCiAgZXFUKGEsIHtbbWluSV0gPSAxMDAsIFttYXhJXSA9IDEwMH0pCgogIGEgPSBzZXRtZXRhdGFibGUoe30sIHsKICAgICAgICBfX2luZGV4ID0gZnVuY3Rpb24gKF8saykgcmV0dXJuIGsgKiAxMCBlbmQsCiAgICAgICAgX19uZXdpbmRleCA9IGVycm9yfSkKICBsb2NhbCBiID0gdGFibGUubW92ZShhLCAxLCAxMCwgMywge30pCiAgZXFUKGEsIHt9KQogIGVxVChiLCB7bmlsLG5pbCwxMCwyMCwzMCw0MCw1MCw2MCw3MCw4MCw5MCwxMDB9KQoKICBiID0gc2V0bWV0YXRhYmxlKHsiIn0sIHsKICAgICAgICBfX2luZGV4ID0gZXJyb3IsCiAgICAgICAgX19uZXdpbmRleCA9IGZ1bmN0aW9uICh0LGssdikKICAgICAgICAgIHRbMV0gPSBzdHJpbmcuZm9ybWF0KCIlcyglZCwlZCkiLCB0WzFdLCBrLCB2KQogICAgICBlbmR9KQogIHRhYmxlLm1vdmUoYSwgMTAsIDEzLCAzLCBiKQogIGFzc2VydChiWzFdID09ICIoMywxMDApKDQsMTEwKSg1LDEyMCkoNiwxMzApIikKICBsb2NhbCBzdGF0LCBtc2cgPSBwY2FsbCh0YWJsZS5tb3ZlLCBiLCAxMCwgMTMsIDMsIGIpCiAgYXNzZXJ0KG5vdCBzdGF0IGFuZCBtc2cgPT0gYikKZW5kCgpkbwogIC0tIGZvciB2ZXJ5IGxvbmcgbW92ZXMsIGp1c3QgY2hlY2sgaW5pdGlhbCBhY2Nlc3NlcyBhbmQgaW50ZXJydXB0CiAgLS0gbW92ZSB3aXRoIGFuIGVycm9yCiAgbG9jYWwgZnVuY3Rpb24gY2hlY2ttb3ZlIChmLCBlLCB0LCB4LCB5KQogICAgbG9jYWwgcG9zMSwgcG9zMgogICAgbG9jYWwgYSA9IHNldG1ldGF0YWJsZSh7fSwgewogICAgICAgICAgICAgICAgX19pbmRleCA9IGZ1bmN0aW9uIChfLGspIHBvczEgPSBrIGVuZCwKICAgICAgICAgICAgICAgIF9fbmV3aW5kZXggPSBmdW5jdGlvbiAoXyxrKSBwb3MyID0gazsgZXJyb3IoKSBlbmQsIH0pCiAgICBsb2NhbCBzdCwgbXNnID0gcGNhbGwodGFibGUubW92ZSwgYSwgZiwgZSwgdCkKICAgIGFzc2VydChub3Qgc3QgYW5kIG5vdCBtc2cgYW5kIHBvczEgPT0geCBhbmQgcG9zMiA9PSB5KQogIGVuZAogIGNoZWNrbW92ZSgxLCBtYXhJLCAwLCAxLCAwKQogIGNoZWNrbW92ZSgwLCBtYXhJIC0gMSwgMSwgbWF4SSAtIDEsIG1heEkpCiAgY2hlY2ttb3ZlKG1pbkksIC0yLCAtNSwgLTIsIG1heEkgLSA2KQogIGNoZWNrbW92ZShtaW5JICsgMSwgLTEsIC0yLCAtMSwgbWF4SSAtIDMpCiAgY2hlY2ttb3ZlKG1pbkksIC0yLCAwLCBtaW5JLCAwKSAgLS0gbm9uIG92ZXJsYXBwaW5nCiAgY2hlY2ttb3ZlKG1pbkkgKyAxLCAtMSwgMSwgbWluSSArIDEsIDEpICAtLSBub24gb3ZlcmxhcHBpbmcKZW5kCgpjaGVja2Vycm9yKCJ0b28gbWFueSIsIHRhYmxlLm1vdmUsIHt9LCAwLCBtYXhJLCAxKQpjaGVja2Vycm9yKCJ0b28gbWFueSIsIHRhYmxlLm1vdmUsIHt9LCAtMSwgbWF4SSAtIDEsIDEpCmNoZWNrZXJyb3IoInRvbyBtYW55IiwgdGFibGUubW92ZSwge30sIG1pbkksIC0xLCAxKQpjaGVja2Vycm9yKCJ0b28gbWFueSIsIHRhYmxlLm1vdmUsIHt9LCBtaW5JLCBtYXhJLCAxKQpjaGVja2Vycm9yKCJ3cmFwIGFyb3VuZCIsIHRhYmxlLm1vdmUsIHt9LCAxLCBtYXhJLCAyKQpjaGVja2Vycm9yKCJ3cmFwIGFyb3VuZCIsIHRhYmxlLm1vdmUsIHt9LCAxLCAyLCBtYXhJKQpjaGVja2Vycm9yKCJ3cmFwIGFyb3VuZCIsIHRhYmxlLm1vdmUsIHt9LCBtaW5JLCAtMiwgMikKCgpwcmludCJ0ZXN0aW5nIHNvcnQiCgoKLS0gc3RyYW5nZSBsZW5ndGhzCmxvY2FsIGEgPSBzZXRtZXRhdGFibGUoe30sIHtfX2xlbiA9IGZ1bmN0aW9uICgpIHJldHVybiAtMSBlbmR9KQphc3NlcnQoI2EgPT0gLTEpCnRhYmxlLnNvcnQoYSwgZXJyb3IpICAgIC0tIHNob3VsZCBub3QgY29tcGFyZSBhbnl0aGluZwphID0gc2V0bWV0YXRhYmxlKHt9LCB7X19sZW4gPSBmdW5jdGlvbiAoKSByZXR1cm4gbWF4SSBlbmR9KQpjaGVja2Vycm9yKCJ0b28gYmlnIiwgdGFibGUuc29ydCwgYSkKCi0tIHRlc3QgY2hlY2tzIGZvciBpbnZhbGlkIG9yZGVyIGZ1bmN0aW9ucwpsb2NhbCBmdW5jdGlvbiBjaGVjayAodCkKICBsb2NhbCBmdW5jdGlvbiBmKGEsIGIpIGFzc2VydChhIGFuZCBiKTsgcmV0dXJuIHRydWUgZW5kCiAgY2hlY2tlcnJvcigiaW52YWxpZCBvcmRlciBmdW5jdGlvbiIsIHRhYmxlLnNvcnQsIHQsIGYpCmVuZAoKY2hlY2t7MSwyLDMsNH0KY2hlY2t7MSwyLDMsNCw1fQpjaGVja3sxLDIsMyw0LDUsNn0KCgpmdW5jdGlvbiBjaGVjayAoYSwgZikKICBmID0gZiBvciBmdW5jdGlvbiAoeCx5KSByZXR1cm4geDx5IGVuZDsKICBmb3IgbiA9ICNhLCAyLCAtMSBkbwogICAgYXNzZXJ0KG5vdCBmKGFbbl0sIGFbbi0xXSkpCiAgZW5kCmVuZAoKYSA9IHsiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLCAiSnVsIiwgIkF1ZyIsICJTZXAiLAogICAgICJPY3QiLCAiTm92IiwgIkRlYyJ9Cgp0YWJsZS5zb3J0KGEpCmNoZWNrKGEpCgpmdW5jdGlvbiBwZXJtIChzLCBuKQogIG4gPSBuIG9yICNzCiAgaWYgbiA9PSAxIHRoZW4KICAgIGxvY2FsIHQgPSB7dW5wYWNrKHMpfQogICAgdGFibGUuc29ydCh0KQogICAgY2hlY2sodCkKICBlbHNlCiAgICBmb3IgaSA9IDEsIG4gZG8KICAgICAgc1tpXSwgc1tuXSA9IHNbbl0sIHNbaV0KICAgICAgcGVybShzLCBuIC0gMSkKICAgICAgc1tpXSwgc1tuXSA9IHNbbl0sIHNbaV0KICAgIGVuZAogIGVuZAplbmQKCnBlcm17fQpwZXJtezF9CnBlcm17MSwyfQpwZXJtezEsMiwzfQpwZXJtezEsMiwzLDR9CnBlcm17MiwyLDMsNH0KcGVybXsxLDIsMyw0LDV9CnBlcm17MSwyLDMsMyw1fQpwZXJtezEsMiwzLDQsNSw2fQpwZXJtezIsMiwzLDMsNSw2fQoKZnVuY3Rpb24gdGltZXNvcnQgKGEsIG4sIGZ1bmMsIG1zZywgcHJlKQogIGxvY2FsIHggPSBvcy5jbG9jaygpCiAgdGFibGUuc29ydChhLCBmdW5jKQogIHggPSAob3MuY2xvY2soKSAtIHgpICogMTAwMAogIHByZSA9IHByZSBvciAiIgogIHByaW50KHN0cmluZy5mb3JtYXQoIiVzc29ydGluZyAlZCAlcyBlbGVtZW50cyBpbiAlLjJmIG1zZWMuIiwgcHJlLCBuLCBtc2csIHgpKQogIGNoZWNrKGEsIGZ1bmMpCmVuZAoKbGltaXQgPSA1MDAwMAppZiBfc29mdCB0aGVuIGxpbWl0ID0gNTAwMCBlbmQKCmEgPSB7fQpmb3IgaT0xLGxpbWl0IGRvCiAgYVtpXSA9IG1hdGgucmFuZG9tKCkKZW5kCgp0aW1lc29ydChhLCBsaW1pdCwgbmlsLCAicmFuZG9tIikKCnRpbWVzb3J0KGEsIGxpbWl0LCBuaWwsICJzb3J0ZWQiLCAicmUtIikKCmEgPSB7fQpmb3IgaT0xLGxpbWl0IGRvCiAgYVtpXSA9IG1hdGgucmFuZG9tKCkKZW5kCgp4ID0gb3MuY2xvY2soKTsgaT0wCnRhYmxlLnNvcnQoYSwgZnVuY3Rpb24oeCx5KSBpPWkrMTsgcmV0dXJuIHk8eCBlbmQpCnggPSAob3MuY2xvY2soKSAtIHgpICogMTAwMApwcmludChzdHJpbmcuZm9ybWF0KCJJbnZlcnQtc29ydGluZyBvdGhlciAlZCBlbGVtZW50cyBpbiAlLjJmIG1zZWMuLCB3aXRoICVpIGNvbXBhcmlzb25zIiwKICAgICAgbGltaXQsIHgsIGkpKQpjaGVjayhhLCBmdW5jdGlvbih4LHkpIHJldHVybiB5PHggZW5kKQoKCnRhYmxlLnNvcnR7fSAgLS0gZW1wdHkgYXJyYXkKCmZvciBpPTEsbGltaXQgZG8gYVtpXSA9IGZhbHNlIGVuZAp0aW1lc29ydChhLCBsaW1pdCwgIGZ1bmN0aW9uKHgseSkgcmV0dXJuIG5pbCBlbmQsICJlcXVhbCIpCgpmb3IgaSx2IGluIHBhaXJzKGEpIGRvIGFzc2VydCh2ID09IGZhbHNlKSBlbmQKCkEgPSB7IuFsbyIsICJcMGZpcnN0IDotKSIsICJhbG8iLCAidGhlbiB0aGlzIG9uZSIsICI0NSIsICJhbmQgYSBuZXcifQp0YWJsZS5zb3J0KEEpCmNoZWNrKEEpCgp0YWJsZS5zb3J0KEEsIGZ1bmN0aW9uICh4LCB5KQogICAgICAgICAgbG9hZChzdHJpbmcuZm9ybWF0KCJBWyVxXSA9ICcnIiwgeCksICIiKSgpCiAgICAgICAgICBjb2xsZWN0Z2FyYmFnZSgpCiAgICAgICAgICByZXR1cm4geDx5CiAgICAgICAgZW5kKQoKCnR0ID0ge19fbHQgPSBmdW5jdGlvbiAoYSxiKSByZXR1cm4gYS52YWwgPCBiLnZhbCBlbmR9CmEgPSB7fQpmb3IgaT0xLDEwIGRvICBhW2ldID0ge3ZhbD1tYXRoLnJhbmRvbSgxMDApfTsgc2V0bWV0YXRhYmxlKGFbaV0sIHR0KTsgZW5kCnRhYmxlLnNvcnQoYSkKY2hlY2soYSwgdHQuX19sdCkKY2hlY2soYSkKCnByaW50Ik9LIgo=