LS0gJElkOiBzb3J0Lmx1YSx2IDEuMzggMjAxNi8xMS8wNyAxMzoxMToyOCByb2JlcnRvIEV4cCAkCi0tIFNlZSBDb3B5cmlnaHQgTm90aWNlIGluIGZpbGUgYWxsLmx1YQoKcHJpbnQgInRlc3RpbmcgKHBhcnRzIG9mKSB0YWJsZSBsaWJyYXJ5IgoKcHJpbnQgInRlc3RpbmcgdW5wYWNrIgoKbG9jYWwgdW5wYWNrID0gdGFibGUudW5wYWNrCgpsb2NhbCBtYXhJID0gbWF0aC5tYXhpbnRlZ2VyCmxvY2FsIG1pbkkgPSBtYXRoLm1pbmludGVnZXIKCgpsb2NhbCBmdW5jdGlvbiBjaGVja2Vycm9yIChtc2csIGYsIC4uLikKICBsb2NhbCBzLCBlcnIgPSBwY2FsbChmLCAuLi4pCiAgYXNzZXJ0KG5vdCBzIGFuZCBzdHJpbmcuZmluZChlcnIsIG1zZykpCmVuZAoKCmNoZWNrZXJyb3IoIndyb25nIG51bWJlciBvZiBhcmd1bWVudHMiLCB0YWJsZS5pbnNlcnQsIHt9LCAyLCAzLCA0KQoKbG9jYWwgeCx5LHosYSxuCmEgPSB7fTsgbGltID0gX3NvZnQgYW5kIDIwMCBvciAyMDAwCmZvciBpPTEsIGxpbSBkbyBhW2ldPWkgZW5kCmFzc2VydChzZWxlY3QobGltLCB1bnBhY2soYSkpID09IGxpbSBhbmQgc2VsZWN0KCcjJywgdW5wYWNrKGEpKSA9PSBsaW0pCnggPSB1bnBhY2soYSkKYXNzZXJ0KHggPT0gMSkKeCA9IHt1bnBhY2soYSl9CmFzc2VydCgjeCA9PSBsaW0gYW5kIHhbMV0gPT0gMSBhbmQgeFtsaW1dID09IGxpbSkKeCA9IHt1bnBhY2soYSwgbGltLTIpfQphc3NlcnQoI3ggPT0gMyBhbmQgeFsxXSA9PSBsaW0tMiBhbmQgeFszXSA9PSBsaW0pCnggPSB7dW5wYWNrKGEsIDEwLCA2KX0KYXNzZXJ0KG5leHQoeCkgPT0gbmlsKSAgIC0tIG5vIGVsZW1lbnRzCnggPSB7dW5wYWNrKGEsIDExLCAxMCl9CmFzc2VydChuZXh0KHgpID09IG5pbCkgICAtLSBubyBlbGVtZW50cwp4LHkgPSB1bnBhY2soYSwgMTAsIDEwKQphc3NlcnQoeCA9PSAxMCBhbmQgeSA9PSBuaWwpCngseSx6ID0gdW5wYWNrKGEsIDEwLCAxMSkKYXNzZXJ0KHggPT0gMTAgYW5kIHkgPT0gMTEgYW5kIHogPT0gbmlsKQphLHggPSB1bnBhY2t7MX0KYXNzZXJ0KGE9PTEgYW5kIHg9PW5pbCkKYSx4ID0gdW5wYWNrKHsxLDJ9LCAxLCAxKQphc3NlcnQoYT09MSBhbmQgeD09bmlsKQoKZG8KICBsb2NhbCBtYXhpID0gKDEgPDwgMzEpIC0gMSAgICAgICAgICAtLSBtYXhpbXVtIHZhbHVlIGZvciBhbiBpbnQgKHVzdWFsbHkpCiAgbG9jYWwgbWluaSA9IC0oMSA8PCAzMSkgICAgICAgICAgICAgLS0gbWluaW11bSB2YWx1ZSBmb3IgYW4gaW50ICh1c3VhbGx5KQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAwLCBtYXhpKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAxLCBtYXhpKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAwLCBtYXhJKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAxLCBtYXhJKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCBtaW5pLCBtYXhpKQogIGNoZWNrZXJyb3IoInRvbyBtYW55IHJlc3VsdHMiLCB1bnBhY2ssIHt9LCAtbWF4aSwgbWF4aSkKICBjaGVja2Vycm9yKCJ0b28gbWFueSByZXN1bHRzIiwgdW5wYWNrLCB7fSwgbWluSSwgbWF4SSkKICB1bnBhY2soe30sIG1heGksIDApCiAgdW5wYWNrKHt9LCBtYXhpLCAxKQogIHVucGFjayh7fSwgbWF4SSwgbWluSSkKICBwY2FsbCh1bnBhY2ssIHt9LCAxLCBtYXhpICsgMSkKICBsb2NhbCBhLCBiID0gdW5wYWNrKHtbbWF4aV0gPSAyMH0sIG1heGksIG1heGkpCiAgYXNzZXJ0KGEgPT0gMjAgYW5kIGIgPT0gbmlsKQogIGEsIGIgPSB1bnBhY2soe1ttYXhpXSA9IDIwfSwgbWF4aSAtIDEsIG1heGkpCiAgYXNzZXJ0KGEgPT0gbmlsIGFuZCBiID09IDIwKQogIGxvY2FsIHQgPSB7W21heEkgLSAxXSA9IDEyLCBbbWF4SV0gPSAyM30KICBhLCBiID0gdW5wYWNrKHQsIG1heEkgLSAxLCBtYXhJKTsgYXNzZXJ0KGEgPT0gMTIgYW5kIGIgPT0gMjMpCiAgYSwgYiA9IHVucGFjayh0LCBtYXhJLCBtYXhJKTsgYXNzZXJ0KGEgPT0gMjMgYW5kIGIgPT0gbmlsKQogIGEsIGIgPSB1bnBhY2sodCwgbWF4SSwgbWF4SSAtIDEpOyBhc3NlcnQoYSA9PSBuaWwgYW5kIGIgPT0gbmlsKQogIHQgPSB7W21pbkldID0gMTIuMywgW21pbkkgKyAxXSA9IDIzLjV9CiAgYSwgYiA9IHVucGFjayh0LCBtaW5JLCBtaW5JICsgMSk7IGFzc2VydChhID09IDEyLjMgYW5kIGIgPT0gMjMuNSkKICBhLCBiID0gdW5wYWNrKHQsIG1pbkksIG1pbkkpOyBhc3NlcnQoYSA9PSAxMi4zIGFuZCBiID09IG5pbCkKICBhLCBiID0gdW5wYWNrKHQsIG1pbkkgKyAxLCBtaW5JKTsgYXNzZXJ0KGEgPT0gbmlsIGFuZCBiID09IG5pbCkKZW5kCgpkbyAgIC0tIGxlbmd0aCBpcyBub3QgYW4gaW50ZWdlcgogIGxvY2FsIHQgPSBzZXRtZXRhdGFibGUoe30sIHtfX2xlbiA9IGZ1bmN0aW9uICgpIHJldHVybiAnYWJjJyBlbmR9KQogIGFzc2VydCgjdCA9PSAnYWJjJykKICBjaGVja2Vycm9yKCJvYmplY3QgbGVuZ3RoIGlzIG5vdCBhbiBpbnRlZ2VyIiwgdGFibGUuaW5zZXJ0LCB0LCAxKQplbmQKCnByaW50ICJ0ZXN0aW5nIHBhY2siCgphID0gdGFibGUucGFjaygpCmFzc2VydChhWzFdID09IG5pbCBhbmQgYS5uID09IDApIAoKYSA9IHRhYmxlLnBhY2sodGFibGUpCmFzc2VydChhWzFdID09IHRhYmxlIGFuZCBhLm4gPT0gMSkKCmEgPSB0YWJsZS5wYWNrKG5pbCwgbmlsLCBuaWwsIG5pbCkKYXNzZXJ0KGFbMV0gPT0gbmlsIGFuZCBhLm4gPT0gNCkKCgotLSB0ZXN0aW5nIG1vdmUKZG8KCiAgY2hlY2tlcnJvcigidGFibGUgZXhwZWN0ZWQiLCB0YWJsZS5tb3ZlLCAxLCAyLCAzLCA0KQoKICBsb2NhbCBmdW5jdGlvbiBlcVQgKGEsIGIpCiAgICBmb3IgaywgdiBpbiBwYWlycyhhKSBkbyBhc3NlcnQoYltrXSA9PSB2KSBlbmQgCiAgICBmb3IgaywgdiBpbiBwYWlycyhiKSBkbyBhc3NlcnQoYVtrXSA9PSB2KSBlbmQgCiAgZW5kCgogIGxvY2FsIGEgPSB0YWJsZS5tb3ZlKHsxMCwyMCwzMH0sIDEsIDMsIDIpICAtLSBtb3ZlIGZvcndhcmQKICBlcVQoYSwgezEwLDEwLDIwLDMwfSkKCiAgLS0gbW92ZSBmb3J3YXJkIHdpdGggb3ZlcmxhcCBvZiAxCiAgYSA9IHRhYmxlLm1vdmUoezEwLCAyMCwgMzB9LCAxLCAzLCAzKQogIGVxVChhLCB7MTAsIDIwLCAxMCwgMjAsIDMwfSkKCiAgLS0gbW92aW5nIHRvIHRoZSBzYW1lIHRhYmxlIChub3QgYmVpbmcgZXhwbGljaXQgYWJvdXQgaXQpCiAgYSA9IHsxMCwgMjAsIDMwLCA0MH0KICB0YWJsZS5tb3ZlKGEsIDEsIDQsIDIsIGEpCiAgZXFUKGEsIHsxMCwgMTAsIDIwLCAzMCwgNDB9KQoKICBhID0gdGFibGUubW92ZSh7MTAsMjAsMzB9LCAyLCAzLCAxKSAgIC0tIG1vdmUgYmFja3dhcmQKICBlcVQoYSwgezIwLDMwLDMwfSkKCiAgYSA9IHt9ICAgLS0gbW92ZSB0byBuZXcgdGFibGUKICBhc3NlcnQodGFibGUubW92ZSh7MTAsMjAsMzB9LCAxLCAzLCAxLCBhKSA9PSBhKQogIGVxVChhLCB7MTAsMjAsMzB9KQoKICBhID0ge30KICBhc3NlcnQodGFibGUubW92ZSh7MTAsMjAsMzB9LCAxLCAwLCAzLCBhKSA9PSBhKSAgLS0gZW1wdHkgbW92ZSAobm8gbW92ZSkKICBlcVQoYSwge30pCgogIGEgPSB0YWJsZS5tb3ZlKHsxMCwyMCwzMH0sIDEsIDEwLCAxKSAgIC0tIG1vdmUgdG8gdGhlIHNhbWUgcGxhY2UKICBlcVQoYSwgezEwLDIwLDMwfSkKCiAgLS0gbW92aW5nIG9uIHRoZSBmcmluZ2VzCiAgYSA9IHRhYmxlLm1vdmUoe1ttYXhJIC0gMl0gPSAxLCBbbWF4SSAtIDFdID0gMiwgW21heEldID0gM30sCiAgICAgICAgICAgICAgICAgbWF4SSAtIDIsIG1heEksIC0xMCwge30pCiAgZXFUKGEsIHtbLTEwXSA9IDEsIFstOV0gPSAyLCBbLThdID0gM30pCgogIGEgPSB0YWJsZS5tb3ZlKHtbbWluSV0gPSAxLCBbbWluSSArIDFdID0gMiwgW21pbkkgKyAyXSA9IDN9LAogICAgICAgICAgICAgICAgIG1pbkksIG1pbkkgKyAyLCAtMTAsIHt9KQogIGVxVChhLCB7Wy0xMF0gPSAxLCBbLTldID0gMiwgWy04XSA9IDN9KQoKICBhID0gdGFibGUubW92ZSh7NDV9LCAxLCAxLCBtYXhJKQogIGVxVChhLCB7NDUsIFttYXhJXSA9IDQ1fSkKCiAgYSA9IHRhYmxlLm1vdmUoe1ttYXhJXSA9IDEwMH0sIG1heEksIG1heEksIG1pbkkpCiAgZXFUKGEsIHtbbWluSV0gPSAxMDAsIFttYXhJXSA9IDEwMH0pCgogIGEgPSB0YWJsZS5tb3ZlKHtbbWluSV0gPSAxMDB9LCBtaW5JLCBtaW5JLCBtYXhJKQogIGVxVChhLCB7W21pbkldID0gMTAwLCBbbWF4SV0gPSAxMDB9KQoKICBhID0gc2V0bWV0YXRhYmxlKHt9LCB7CiAgICAgICAgX19pbmRleCA9IGZ1bmN0aW9uIChfLGspIHJldHVybiBrICogMTAgZW5kLAogICAgICAgIF9fbmV3aW5kZXggPSBlcnJvcn0pCiAgbG9jYWwgYiA9IHRhYmxlLm1vdmUoYSwgMSwgMTAsIDMsIHt9KQogIGVxVChhLCB7fSkKICBlcVQoYiwge25pbCxuaWwsMTAsMjAsMzAsNDAsNTAsNjAsNzAsODAsOTAsMTAwfSkKCiAgYiA9IHNldG1ldGF0YWJsZSh7IiJ9LCB7CiAgICAgICAgX19pbmRleCA9IGVycm9yLAogICAgICAgIF9fbmV3aW5kZXggPSBmdW5jdGlvbiAodCxrLHYpCiAgICAgICAgICB0WzFdID0gc3RyaW5nLmZvcm1hdCgiJXMoJWQsJWQpIiwgdFsxXSwgaywgdikKICAgICAgZW5kfSkKICB0YWJsZS5tb3ZlKGEsIDEwLCAxMywgMywgYikKICBhc3NlcnQoYlsxXSA9PSAiKDMsMTAwKSg0LDExMCkoNSwxMjApKDYsMTMwKSIpCiAgbG9jYWwgc3RhdCwgbXNnID0gcGNhbGwodGFibGUubW92ZSwgYiwgMTAsIDEzLCAzLCBiKQogIGFzc2VydChub3Qgc3RhdCBhbmQgbXNnID09IGIpCmVuZAoKZG8KICAtLSBmb3IgdmVyeSBsb25nIG1vdmVzLCBqdXN0IGNoZWNrIGluaXRpYWwgYWNjZXNzZXMgYW5kIGludGVycnVwdAogIC0tIG1vdmUgd2l0aCBhbiBlcnJvcgogIGxvY2FsIGZ1bmN0aW9uIGNoZWNrbW92ZSAoZiwgZSwgdCwgeCwgeSkKICAgIGxvY2FsIHBvczEsIHBvczIKICAgIGxvY2FsIGEgPSBzZXRtZXRhdGFibGUoe30sIHsKICAgICAgICAgICAgICAgIF9faW5kZXggPSBmdW5jdGlvbiAoXyxrKSBwb3MxID0gayBlbmQsCiAgICAgICAgICAgICAgICBfX25ld2luZGV4ID0gZnVuY3Rpb24gKF8saykgcG9zMiA9IGs7IGVycm9yKCkgZW5kLCB9KQogICAgbG9jYWwgc3QsIG1zZyA9IHBjYWxsKHRhYmxlLm1vdmUsIGEsIGYsIGUsIHQpCiAgICBhc3NlcnQobm90IHN0IGFuZCBub3QgbXNnIGFuZCBwb3MxID09IHggYW5kIHBvczIgPT0geSkKICBlbmQKICBjaGVja21vdmUoMSwgbWF4SSwgMCwgMSwgMCkKICBjaGVja21vdmUoMCwgbWF4SSAtIDEsIDEsIG1heEkgLSAxLCBtYXhJKQogIGNoZWNrbW92ZShtaW5JLCAtMiwgLTUsIC0yLCBtYXhJIC0gNikKICBjaGVja21vdmUobWluSSArIDEsIC0xLCAtMiwgLTEsIG1heEkgLSAzKQogIGNoZWNrbW92ZShtaW5JLCAtMiwgMCwgbWluSSwgMCkgIC0tIG5vbiBvdmVybGFwcGluZwogIGNoZWNrbW92ZShtaW5JICsgMSwgLTEsIDEsIG1pbkkgKyAxLCAxKSAgLS0gbm9uIG92ZXJsYXBwaW5nCmVuZAoKY2hlY2tlcnJvcigidG9vIG1hbnkiLCB0YWJsZS5tb3ZlLCB7fSwgMCwgbWF4SSwgMSkKY2hlY2tlcnJvcigidG9vIG1hbnkiLCB0YWJsZS5tb3ZlLCB7fSwgLTEsIG1heEkgLSAxLCAxKQpjaGVja2Vycm9yKCJ0b28gbWFueSIsIHRhYmxlLm1vdmUsIHt9LCBtaW5JLCAtMSwgMSkKY2hlY2tlcnJvcigidG9vIG1hbnkiLCB0YWJsZS5tb3ZlLCB7fSwgbWluSSwgbWF4SSwgMSkKY2hlY2tlcnJvcigid3JhcCBhcm91bmQiLCB0YWJsZS5tb3ZlLCB7fSwgMSwgbWF4SSwgMikKY2hlY2tlcnJvcigid3JhcCBhcm91bmQiLCB0YWJsZS5tb3ZlLCB7fSwgMSwgMiwgbWF4SSkKY2hlY2tlcnJvcigid3JhcCBhcm91bmQiLCB0YWJsZS5tb3ZlLCB7fSwgbWluSSwgLTIsIDIpCgoKcHJpbnQidGVzdGluZyBzb3J0IgoKCi0tIHN0cmFuZ2UgbGVuZ3Rocwpsb2NhbCBhID0gc2V0bWV0YXRhYmxlKHt9LCB7X19sZW4gPSBmdW5jdGlvbiAoKSByZXR1cm4gLTEgZW5kfSkKYXNzZXJ0KCNhID09IC0xKQp0YWJsZS5zb3J0KGEsIGVycm9yKSAgICAtLSBzaG91bGQgbm90IGNvbXBhcmUgYW55dGhpbmcKYSA9IHNldG1ldGF0YWJsZSh7fSwge19fbGVuID0gZnVuY3Rpb24gKCkgcmV0dXJuIG1heEkgZW5kfSkKY2hlY2tlcnJvcigidG9vIGJpZyIsIHRhYmxlLnNvcnQsIGEpCgotLSB0ZXN0IGNoZWNrcyBmb3IgaW52YWxpZCBvcmRlciBmdW5jdGlvbnMKbG9jYWwgZnVuY3Rpb24gY2hlY2sgKHQpCiAgbG9jYWwgZnVuY3Rpb24gZihhLCBiKSBhc3NlcnQoYSBhbmQgYik7IHJldHVybiB0cnVlIGVuZAogIGNoZWNrZXJyb3IoImludmFsaWQgb3JkZXIgZnVuY3Rpb24iLCB0YWJsZS5zb3J0LCB0LCBmKQplbmQKCmNoZWNrezEsMiwzLDR9CmNoZWNrezEsMiwzLDQsNX0KY2hlY2t7MSwyLDMsNCw1LDZ9CgoKZnVuY3Rpb24gY2hlY2sgKGEsIGYpCiAgZiA9IGYgb3IgZnVuY3Rpb24gKHgseSkgcmV0dXJuIHg8eSBlbmQ7CiAgZm9yIG4gPSAjYSwgMiwgLTEgZG8KICAgIGFzc2VydChub3QgZihhW25dLCBhW24tMV0pKQogIGVuZAplbmQKCmEgPSB7IkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwgIkp1bCIsICJBdWciLCAiU2VwIiwKICAgICAiT2N0IiwgIk5vdiIsICJEZWMifQoKdGFibGUuc29ydChhKQpjaGVjayhhKQoKZnVuY3Rpb24gcGVybSAocywgbikKICBuID0gbiBvciAjcwogIGlmIG4gPT0gMSB0aGVuCiAgICBsb2NhbCB0ID0ge3VucGFjayhzKX0KICAgIHRhYmxlLnNvcnQodCkKICAgIGNoZWNrKHQpCiAgZWxzZQogICAgZm9yIGkgPSAxLCBuIGRvCiAgICAgIHNbaV0sIHNbbl0gPSBzW25dLCBzW2ldCiAgICAgIHBlcm0ocywgbiAtIDEpCiAgICAgIHNbaV0sIHNbbl0gPSBzW25dLCBzW2ldCiAgICBlbmQKICBlbmQKZW5kCgpwZXJte30KcGVybXsxfQpwZXJtezEsMn0KcGVybXsxLDIsM30KcGVybXsxLDIsMyw0fQpwZXJtezIsMiwzLDR9CnBlcm17MSwyLDMsNCw1fQpwZXJtezEsMiwzLDMsNX0KcGVybXsxLDIsMyw0LDUsNn0KcGVybXsyLDIsMywzLDUsNn0KCmZ1bmN0aW9uIHRpbWVzb3J0IChhLCBuLCBmdW5jLCBtc2csIHByZSkKICBsb2NhbCB4ID0gb3MuY2xvY2soKQogIHRhYmxlLnNvcnQoYSwgZnVuYykKICB4ID0gKG9zLmNsb2NrKCkgLSB4KSAqIDEwMDAKICBwcmUgPSBwcmUgb3IgIiIKICBwcmludChzdHJpbmcuZm9ybWF0KCIlc3NvcnRpbmcgJWQgJXMgZWxlbWVudHMgaW4gJS4yZiBtc2VjLiIsIHByZSwgbiwgbXNnLCB4KSkKICBjaGVjayhhLCBmdW5jKQplbmQKCmxpbWl0ID0gNTAwMDAKaWYgX3NvZnQgdGhlbiBsaW1pdCA9IDUwMDAgZW5kCgphID0ge30KZm9yIGk9MSxsaW1pdCBkbwogIGFbaV0gPSBtYXRoLnJhbmRvbSgpCmVuZAoKdGltZXNvcnQoYSwgbGltaXQsIG5pbCwgInJhbmRvbSIpCgp0aW1lc29ydChhLCBsaW1pdCwgbmlsLCAic29ydGVkIiwgInJlLSIpCgphID0ge30KZm9yIGk9MSxsaW1pdCBkbwogIGFbaV0gPSBtYXRoLnJhbmRvbSgpCmVuZAoKeCA9IG9zLmNsb2NrKCk7IGk9MAp0YWJsZS5zb3J0KGEsIGZ1bmN0aW9uKHgseSkgaT1pKzE7IHJldHVybiB5PHggZW5kKQp4ID0gKG9zLmNsb2NrKCkgLSB4KSAqIDEwMDAKcHJpbnQoc3RyaW5nLmZvcm1hdCgiSW52ZXJ0LXNvcnRpbmcgb3RoZXIgJWQgZWxlbWVudHMgaW4gJS4yZiBtc2VjLiwgd2l0aCAlaSBjb21wYXJpc29ucyIsCiAgICAgIGxpbWl0LCB4LCBpKSkKY2hlY2soYSwgZnVuY3Rpb24oeCx5KSByZXR1cm4geTx4IGVuZCkKCgp0YWJsZS5zb3J0e30gIC0tIGVtcHR5IGFycmF5Cgpmb3IgaT0xLGxpbWl0IGRvIGFbaV0gPSBmYWxzZSBlbmQKdGltZXNvcnQoYSwgbGltaXQsICBmdW5jdGlvbih4LHkpIHJldHVybiBuaWwgZW5kLCAiZXF1YWwiKQoKZm9yIGksdiBpbiBwYWlycyhhKSBkbyBhc3NlcnQodiA9PSBmYWxzZSkgZW5kCgpBID0geyLhbG8iLCAiXDBmaXJzdCA6LSkiLCAiYWxvIiwgInRoZW4gdGhpcyBvbmUiLCAiNDUiLCAiYW5kIGEgbmV3In0KdGFibGUuc29ydChBKQpjaGVjayhBKQoKdGFibGUuc29ydChBLCBmdW5jdGlvbiAoeCwgeSkKICAgICAgICAgIGxvYWQoc3RyaW5nLmZvcm1hdCgiQVslcV0gPSAnJyIsIHgpLCAiIikoKQogICAgICAgICAgY29sbGVjdGdhcmJhZ2UoKQogICAgICAgICAgcmV0dXJuIHg8eQogICAgICAgIGVuZCkKCgp0dCA9IHtfX2x0ID0gZnVuY3Rpb24gKGEsYikgcmV0dXJuIGEudmFsIDwgYi52YWwgZW5kfQphID0ge30KZm9yIGk9MSwxMCBkbyAgYVtpXSA9IHt2YWw9bWF0aC5yYW5kb20oMTAwKX07IHNldG1ldGF0YWJsZShhW2ldLCB0dCk7IGVuZAp0YWJsZS5zb3J0KGEpCmNoZWNrKGEsIHR0Ll9fbHQpCmNoZWNrKGEpCgpwcmludCJPSyIK