eval %q{IyBDb3B5cmlnaHQgMjAwNSwgRGlkaWVyIEJ1cgoKIyBQZXJtaXNzaW9uIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3 YXJlIGZvciAKIyBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVy ZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCiMgY29weXJp Z2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4KCiMgVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBXSVRIT1VUIEFOWSBFWFBS RVNTIE9SCiMgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIFdJVEhP VVQgTElNSVRBVElPTiwgVEhFIElNUExJRUQKIyBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuCgojIE5hbWUgOiAgICAgICAgICBzdTJzdGwucmIgMS4wCiMgRGVz Y3JpcHRpb24gOiAgIEV4cG9ydHMgc2VsZWN0aW9uIG9yIHdob2xlIG1vZGVs IHRvIFNUTCBmb3JtYXQgZXh0ZXJuYWwgZmlsZQojIEF1dGhvciA6ICAgICAg ICBEaWRpZXIgQnVyCiMgVXNhZ2UgOiAgICAgICAgIFNlbGVjdCBvYmplY3Rz IGV4cG9ydHMgdGhlIHNlbGVjdGlvbiwgbm8gc2VsZWN0aW9uIGV4cG9ydHMg d2hvbGUgCiMgICAgICAgICAgICAgICAgIG1vZGVsLiBTZWxlY3QgUGx1Z2lu cy9FeHBvcnQgdG8gU1RMLiBHcm91cHMgYW5kIGNvbXBvbmVudHMgbm90IHN1 cHBvcnRlZC4KIyAgICAgICAgICAgICAgICAgCiMgRGF0ZSA6ICAgICAgICAg IDI3Lkp1bmUuMjAwNQojIFR5cGUgOiAgICAgICAgICBFeHBvcnRlcgojIEhp c3Rvcnk6ICAgICAgICAxLjAgKDI3Lkp1bmUuMjAwNSkgLSBmaXJzdCB2ZXJz aW9uCiMgICAgICAgICAgICAgICAgIDEuMSAoMjkuSnVuZS4yMDA1KSAtIEJ1 Z3MgZml4ZWQsIG5ldyBtZXNzYWdlcy4KIyAgICAgICAgICAgICAgICAgMS4y ICgzMC5TZXB0ZW1iZXIuMjAwOCkgLSBBZGRlZCBzdXBwb3J0IGZvciBncm91 cGVkIGVudGl0aWVzIChlbmtpMTMzNykKCgojLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCmRlZiBleHBvcnRfbW9kZWxfdG9fc3RsCgog ICNJbml0CiAgbW9kZWwgPSBTa2V0Y2h1cC5hY3RpdmVfbW9kZWwKICBzcyA9 IFNrZXRjaHVwLmFjdGl2ZV9tb2RlbC5zZWxlY3Rpb24KICBtb2RlbC5zdGFy dF9vcGVyYXRpb24gIkV4cG9ydCB0byBTVEwiCiAgZmFjZXNfYXJyYXkgPSBb XQogIGVudGl0aWVzID0gbW9kZWwuZW50aXRpZXMKCiAgIyBTZWxlY3Rpb24g Y2hlY2tpbmcKICBpZiBzcy5lbXB0eT8gCiAgICBhbnN3ZXIgPSBVSS5tZXNz YWdlYm94KCJOb3RoaW5nIHNlbGVjdGVkLiBFeHBvcnQgd2hvbGUgbW9kZWwg PyIsIE1CX1lFU05PQ0FOQ0VMKQogIGVsc2UKICAgIGVudGl0aWVzX3RvX2V4 cG9ydCA9IFNrZXRjaHVwLmFjdGl2ZV9tb2RlbC5zZWxlY3Rpb24KICBlbmQK CiAgaWYoIGFuc3dlciA9PSA2ICkKICAgIGVudGl0aWVzX3RvX2V4cG9ydCA9 IG1vZGVsLmVudGl0aWVzCiAgZWxzZQogICAgZW50aXRpZXNfdG9fZXhwb3J0 ID0gc3MKICBlbmQKCiAgaWYoIGFuc3dlciA9PSA2ICkgb3IgKG5vdCBzcy5l bXB0eT8pCiAgICAjIERlbGV0ZSBhbnkgcHJldmlvdXNseSBjcmVhdGVkIFNU TCB0cmlhbmdsZXMKICAgIChkZWxldGVfc3RsX3RyaWFuZ2xlcykKICAgICMg VW5pdHMKICAgIHN0bF9kaWFsb2coIkV4cG9ydCIpCiAgICAKICAgICMgT3V0 cHV0IGZpbGUKICAgIG91dF9uYW1lID0gVUkub3BlbnBhbmVsKCAiU2VsZWN0 IGZpbGUgdG8gZXhwb3J0IHRvIiwgIi4iICwgIiouc3RsIiApCiAgICBleHBv cnRfZmlsZSA9IEZpbGUubmV3KCBvdXRfbmFtZSAsICJ3IiApCiAgICAKICAg ICMgRXJyb3IgY2hlY2tpbmcsIHB1dCB2YWxpZCBlbGVtZW50cyBpbiBmYWNl c19hcnJheQogICAgb3RoZXJzID0gMAogICAgY29sbGVjdF9mYWNlcyhvdGhl cnMsIGZhY2VzX2FycmF5LCBlbnRpdGllcykKICAgIAogICAgIyBMYXllciBt YW5hZ2VtZW50CiAgICBtb2RlbC5sYXllcnMuYWRkKCJTVExfdHJpYW5nbGVz IikKICAgIG9sZF9sYXllciA9IG1vZGVsLmFjdGl2ZV9sYXllcgogICAgbW9k ZWwuYWN0aXZlX2xheWVyID0gKCJTVExfdHJpYW5nbGVzIikKCiAgICAjVHJp YW5ndWxhdGlvbgogICAgZmFjZXNfYXJyYXkuZWFjaCBkbyB8ZmFjZXwKICAg ICAgbWVzaD1mYWNlLm1lc2goNykKICAgICAgbm9ybWFsID0gbWVzaC5ub3Jt YWxfYXQgMQogICAgICBTa2V0Y2h1cC5hY3RpdmVfbW9kZWwuZW50aXRpZXMu YWRkX2ZhY2VzX2Zyb21fbWVzaCBtZXNoLCA5CiAgICBlbmQKICAgIAogICAg I0NvbGxlY3QgdHJpYW5nbGVzIGFuZCBleHBvcnQKICAgIChjb2xsZWN0X3N0 bF90cmlhbmdsZXMpCiAgICAoZXhwb3J0X3N0bF90cmlhbmdsZXMgZXhwb3J0 X2ZpbGUpCiAgICAoZGVsZXRlX3N0bF90cmlhbmdsZXMpCiAgICBtb2RlbC5h Y3RpdmVfbGF5ZXIgPSBvbGRfbGF5ZXIKICAgIG1vZGVsLmxheWVycy5wdXJn ZV91bnVzZWQKICAgICNSZXBvcnQgbWVzc2FnZQogICAgVUkubWVzc2FnZWJv eCggZmFjZXNfYXJyYXkubGVuZ3RoLnRvX3MgKyAiIGZhY2VzIHRvIGV4cG9y dC5cbiIgKyBvdGhlcnMudG9fcyArICIgb2JqZWN0cyBpZ25vcmVkLlxuIiAr ICR0cmlhbmdsZXNfYXJyYXkubGVuZ3RoLnRvX3MgKyAiIHRyaWFuZ2xlcyBl eHBvcnRlZCB0byBTVEwgc29saWQuIikKICAgICR0cmlhbmdsZXNfYXJyYXkg PSBbXQoKICBlbmQgI29mIGlmKCBhbnN3ZXIgPT0gNikKICAKICAjIFVuZG8K ICBtb2RlbC5jb21taXRfb3BlcmF0aW9uCmVuZAoKZGVmIGNvbGxlY3RfZmFj ZXMob3RoZXJzLCBmYWNlc19hcnJheSwgZW50aXRpZXMpCiAgZW50aXRpZXMu ZWFjaCBkbyB8ZW50aXR5fAogICAgaWYoIGVudGl0eS50eXBlbmFtZSA9PSAi RmFjZSIpCiAgICAgIGZhY2VzX2FycmF5LnB1c2ggZW50aXR5CiAgICBlbHNp ZiggZW50aXR5LnR5cGVuYW1lID09ICJHcm91cCIpCiAgICAgIGNvbGxlY3Rf ZmFjZXMob3RoZXJzLCBmYWNlc19hcnJheSwgZW50aXR5LmVudGl0aWVzKQog ICAgZWxzZQogICAgICBvdGhlcnMgPSBvdGhlcnMgKyAxCiAgICBlbmQKICBl bmQgCmVuZAoKZGVmIGNvbGxlY3Rfc3RsX3RyaWFuZ2xlcwogIG1vZGVsID0g U2tldGNodXAuYWN0aXZlX21vZGVsCiAgJHRyaWFuZ2xlc19hcnJheSA9IFtd CiAgZW50aXRpZXMgPSBtb2RlbC5lbnRpdGllcwogIGVudGl0aWVzLmVhY2gg ZG8gfGVsZW1lbnR8CiAgICBpZihlbGVtZW50LnR5cGVuYW1lID09ICJGYWNl IiBhbmQgZWxlbWVudC5sYXllci5uYW1lID09ICJTVExfdHJpYW5nbGVzIikK ICAgICAgJHRyaWFuZ2xlc19hcnJheS5wdXNoIGVsZW1lbnQKICAgIGVuZAog IGVuZAplbmQKCmRlZiBkZWxldGVfc3RsX3RyaWFuZ2xlcwogIG1vZGVsID0g U2tldGNodXAuYWN0aXZlX21vZGVsCiAgZW50X2Fycj1bXQogIG1vZGVsLmVu dGl0aWVzLmVhY2ggZG8gfGVsZW1lbnR8CiAgICBpZihlbGVtZW50LmxheWVy Lm5hbWUgPT0gIlNUTF90cmlhbmdsZXMiKQogICAgICBlbnRfYXJyLnB1c2gg ZWxlbWVudAogICAgZW5kCiAgZW5kCiAgZW50X2Fyci5lYWNoIHt8ZXwgZS5l cmFzZSEgaWYgbm90IGUuZGVsZXRlZD99CmVuZAoKZGVmIGV4cG9ydF9zdGxf dHJpYW5nbGVzKCBleHBvcnRfZmlsZSApCiAgbW9kZWwgPSBTa2V0Y2h1cC5h Y3RpdmVfbW9kZWwKICAjRmlsZSBIZWFkZXIKICBtb2RlbF9maWxlbmFtZSA9 IEZpbGUuYmFzZW5hbWUobW9kZWwucGF0aCkKICBpZiggbW9kZWxfZmlsZW5h bWUgPT0gIiIgKQogICAgbW9kZWxfZmlsZW5hbWUgPSAibm9fbmFtZSIKICBl bmQKICBtb2RlbF9uYW1lID0gbW9kZWxfZmlsZW5hbWUuc3BsaXQoIi4iKVsw XQogIGV4cG9ydF9maWxlLnB1dHMoICJzb2xpZCAiICsgbW9kZWxfbmFtZSkK ICBpID0gMAoKICAkdHJpYW5nbGVzX2FycmF5LmVhY2ggZG8gfHRyaXwKICAg IG5vcm1hbCA9IHRyaS5ub3JtYWwKICAgIHZlcnRpY2VzID0gdHJpLnZlcnRp Y2VzCiAgICBleHBvcnRfZmlsZS5wdXRzKCAiZmFjZXQgbm9ybWFsICIgKyB0 cmkubm9ybWFsWzBdLnRvX3MgKyAiICIgKyB0cmkubm9ybWFsWzFdLnRvX3Mg KyAiICIgKyB0cmkubm9ybWFsWzJdLnRvX3MpCiAgICBleHBvcnRfZmlsZS5w dXRzKCAiICAgb3V0ZXIgbG9vcCIpCiAgICBleHBvcnRfZmlsZS5wdXRzKCAi ICAgICAgdmVydGV4ICIgKyAodmVydGljZXNbMF0ucG9zaXRpb24ueC50b19m ICogJHN0bF9jb252KS50b19zICsgIiAiICsgKHZlcnRpY2VzWzBdLnBvc2l0 aW9uLnkudG9fZiAqICRzdGxfY29udikudG9fcyArICIgIiArICh2ZXJ0aWNl c1swXS5wb3NpdGlvbi56LnRvX2YgKiAkc3RsX2NvbnYpLnRvX3MpCiAgICBl eHBvcnRfZmlsZS5wdXRzKCAiICAgICAgdmVydGV4ICIgKyAodmVydGljZXNb MV0ucG9zaXRpb24ueC50b19mICogJHN0bF9jb252KS50b19zICsgIiAiICsg KHZlcnRpY2VzWzFdLnBvc2l0aW9uLnkudG9fZiAqICRzdGxfY29udikudG9f cyArICIgIiArICh2ZXJ0aWNlc1sxXS5wb3NpdGlvbi56LnRvX2YgKiAkc3Rs X2NvbnYpLnRvX3MpCiAgICBleHBvcnRfZmlsZS5wdXRzKCAiICAgICAgdmVy dGV4ICIgKyAodmVydGljZXNbMl0ucG9zaXRpb24ueC50b19mICogJHN0bF9j b252KS50b19zICsgIiAiICsgKHZlcnRpY2VzWzJdLnBvc2l0aW9uLnkudG9f ZiAqICRzdGxfY29udikudG9fcyArICIgIiArICh2ZXJ0aWNlc1syXS5wb3Np dGlvbi56LnRvX2YgKiAkc3RsX2NvbnYpLnRvX3MpCiAgICBleHBvcnRfZmls ZS5wdXRzKCAiICAgZW5kbG9vcCIpCiAgICBleHBvcnRfZmlsZS5wdXRzKCAi ZW5kZmFjZXQiKQogICAgaSA9IGkgKyAxCiAgICBkb25lID0gKChpICogMTAw LjApIC8gJHRyaWFuZ2xlc19hcnJheS5sZW5ndGgpLnRvX2kKICAgIFNrZXRj aHVwLnNldF9zdGF0dXNfdGV4dCgiRXhwb3J0aW5nIHRyaWFuZ2xlczogIiAr IGRvbmUudG9fcyArICIlIikKICBlbmQKICBleHBvcnRfZmlsZS5wdXRzKCAi ZW5kc29saWQgIiArIG1vZGVsX25hbWUpCiAgIyBDbG9zZSB0aGUgZXhwb3J0 IGZpbGU6CiAgZXhwb3J0X2ZpbGUuY2xvc2UKZW5kCgpkZWYgaW1wb3J0X3N0 bF90b19tb2RlbAogIG1vZGVsID0gU2tldGNodXAuYWN0aXZlX21vZGVsCiAg bW9kZWwuc3RhcnRfb3BlcmF0aW9uICJJbXBvcnQgdG8gU1RMIgogIGZpbGU9 VUkub3BlbnBhbmVsICJJbXBvcnQgU1RMIGZpbGUiLCIiLCIqLnN0bCIKICBp ZmlsZT1JTy5yZWFkbGluZXMoZmlsZSkKICAjIFVuaXRzCiAgc3RsX2RpYWxv ZygiSW1wb3J0IikKICAjIFNvbGlkIG5hbWUgYW5kIGxheWVyCiAgc29saWQg PSBpZmlsZVswXS5zcGxpdCgiICIpWzFdCiAgc29saWRfbGF5ZXI9U2tldGNo dXAuYWN0aXZlX21vZGVsLmxheWVycy5hZGQgc29saWQKICBvbGRfbGF5ZXI9 U2tldGNodXAuYWN0aXZlX21vZGVsLmFjdGl2ZV9sYXllcgogIFNrZXRjaHVw LmFjdGl2ZV9tb2RlbC5hY3RpdmVfbGF5ZXI9c29saWRfbGF5ZXIKICBpZmls ZS5zaGlmdAogIGlmaWxlLnBvcAogIG5fdHJpPShpZmlsZS5sZW5ndGgvNyku dG9faS50b19zCiAgMC51cHRvKChpZmlsZS5sZW5ndGgvNyktMSkgZG8gfGl8 CiAgICBmbj1pZmlsZVtpKjddCiAgICB2MT1pZmlsZVsoaSo3KSsyXS5zcGxp dCgiICIpCiAgICB2Mj1pZmlsZVsoaSo3KSszXS5zcGxpdCgiICIpCiAgICB2 Mz1pZmlsZVsoaSo3KSs0XS5zcGxpdCgiICIpCiAgICB2MXg9djFbMV0udG9f ZiAqICRzdGxfY29udgogICAgdjF5PXYxWzJdLnRvX2YgKiAkc3RsX2NvbnYK ICAgIHYxej12MVszXS50b19mICogJHN0bF9jb252CiAgICB2Mng9djJbMV0u dG9fZiAqICRzdGxfY29udgogICAgdjJ5PXYyWzJdLnRvX2YgKiAkc3RsX2Nv bnYKICAgIHYyej12MlszXS50b19mICogJHN0bF9jb252CiAgICB2M3g9djNb MV0udG9fZiAqICRzdGxfY29udgogICAgdjN5PXYzWzJdLnRvX2YgKiAkc3Rs X2NvbnYKICAgIHYzej12M1szXS50b19mICogJHN0bF9jb252CiAgCiAgICBw MT1HZW9tOjpQb2ludDNkLm5ldyh2MXgsdjF5LHYxeikKICAgIHAyPUdlb206 OlBvaW50M2QubmV3KHYyeCx2MnksdjJ6KQogICAgcDM9R2VvbTo6UG9pbnQz ZC5uZXcodjN4LHYzeSx2M3opCiAgICBTa2V0Y2h1cC5hY3RpdmVfbW9kZWwu ZW50aXRpZXMuYWRkX2ZhY2UocDEscDIscDMpCiAgICBTa2V0Y2h1cC5zZXRf c3RhdHVzX3RleHQgaS50b19zICsgIi8iICsgbl90cmkKICBlbmQKCiAgU2tl dGNodXAuYWN0aXZlX21vZGVsLmFjdGl2ZV9sYXllcj1vbGRfbGF5ZXIKICAj IFVuZG8KICBtb2RlbC5jb21taXRfb3BlcmF0aW9uCmVuZAoKZGVmIHN0bF9k aWFsb2codHlwZSkKICBjdT1Ta2V0Y2h1cC5hY3RpdmVfbW9kZWwub3B0aW9u c1swXVsiTGVuZ3RoVW5pdCJdCiAgY2FzZSBjdQogICAgd2hlbiA0CiAgICAg IGN1cnJlbnRfdW5pdD0gIk1ldGVycyIKICAgIHdoZW4gMwogICAgICBjdXJy ZW50X3VuaXQ9ICJDZW50aW1ldGVycyIKICAgIHdoZW4gMgogICAgICBjdXJy ZW50X3VuaXQ9ICJNaWxsaW1ldGVycyIKICAgIHdoZW4gMQogICAgICBjdXJy ZW50X3VuaXQ9ICJGZWV0IgogICAgd2hlbiAwCiAgICAgIGN1cnJlbnRfdW5p dD0gIkluY2hlcyIKICBlbmQKICB1bml0c19saXN0PVsiTWV0ZXJzIiwiQ2Vu dGltZXRlcnMiLCJNaWxsaW1ldGVycyIsIkluY2hlcyIsIkZlZXQiXS5qb2lu KCJ8IikKICBwcm9tcHRzPVt0eXBlICsgIiB1bml0OiAiXQogIGVudW1zPVt1 bml0c19saXN0XQogIHZhbHVlcz1bY3VycmVudF91bml0XQogIHJlc3VsdHMg PSBpbnB1dGJveCBwcm9tcHRzLCB2YWx1ZXMsIGVudW1zLCB0eXBlKyJTVEwi CiAgcmV0dXJuIGlmIG5vdCByZXN1bHRzCiAgaWYgdHlwZSA9PSAiRXhwb3J0 IgogICAgY2FzZSByZXN1bHRzWzBdCiAgICAgIHdoZW4gIk1ldGVycyIKICAg ICAgICAjJHN0bF9jb252PTM5LjM3MDA3ODc0MDE1NwogICAgICAgICRzdGxf Y29udj0wLjAyNTQKICAgICAgd2hlbiAiQ2VudGltZXRlcnMiCiAgICAgICAg IyRzdGxfY29udj0wLjM5MzcwMDc4NzQwMgogICAgICAgICRzdGxfY29udj0y LjU0CiAgICAgIHdoZW4gIk1pbGxpbWV0ZXJzIgogICAgICAgICMkc3RsX2Nv bnY9MC4wMzkzNzAwNzg3Mzk5OTk5OAogICAgICAgICRzdGxfY29udj0yNS40 CiAgICAgIHdoZW4gIkZlZXQiCiAgICAgICAgIyRzdGxfY29udj0xMgogICAg ICAgICRzdGxfY29udj0wLjA4MzMzMzMzMzMzMzMzMzMKICAgICAgd2hlbiAi SW5jaGVzIgogICAgICAgICRzdGxfY29udj0xCiAgICBlbmQKICBlbHNlCiAg ICBjYXNlIHJlc3VsdHNbMF0KICAgICAgd2hlbiAiTWV0ZXJzIgogICAgICAg ICRzdGxfY29udj0zOS4zNzAwNzg3NDAxNTcKICAgICAgd2hlbiAiQ2VudGlt ZXRlcnMiCiAgICAgICAgJHN0bF9jb252PTAuMzkzNzAwNzg3NDAyCiAgICAg IHdoZW4gIk1pbGxpbWV0ZXJzIgogICAgICAgICRzdGxfY29udj0wLjAzOTM3 MDA3ODczOTk5OTk4CiAgICAgIHdoZW4gIkZlZXQiCiAgICAgICAgJHN0bF9j b252PTEyCiAgICAgIHdoZW4gIkluY2hlcyIKICAgICAgICAkc3RsX2NvbnY9 MQogICAgZW5kCiAgZW5kCmVuZAoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQojIE1lbnUgaXRlbXMKaWYoIG5vdCBmaWxlX2xvYWRl ZD8oInN1MnN0bC5yYiIpICkKICBwbSA9IFVJLm1lbnUoIlBsdWdpbnMiKQog IHBtLmFkZF9zZXBhcmF0b3IKICBwbS5hZGRfaXRlbSgiRXhwb3J0IFNUTCBm aWxlIikgeyBleHBvcnRfbW9kZWxfdG9fc3RsIH0KICBwbS5hZGRfaXRlbSgi SW1wb3J0IFNUTCBmaWxlIikgeyBpbXBvcnRfc3RsX3RvX21vZGVsIH0KZW5k CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0=}.unpack("m").to_s