-
Notifications
You must be signed in to change notification settings - Fork 1
/
tetris.py
11 lines (9 loc) · 18.4 KB
/
tetris.py
1
2
3
4
5
6
7
8
9
10
11
# Python code obfuscated by www.development-tools.net
import base64, codecs
magic = 'IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKCmltcG9ydCBweWdhbWUKaW1wb3J0IHBkYgppbXBvcnQgcmFuZG9tCmltcG9ydCBtYXRoCmltcG9ydCBibG9jawppbXBvcnQgY29uc3RhbnRzCgpjbGFzcyBUZXRyaXMob2JqZWN0KToKICAgICIiIgogICAgVGhlIGNsYXNzIHdpdGggaW1wbGVtZW50YXRpb24gb2YgdGV0cmlzIGdhbWUgbG9naWMuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZixieCxieSk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgdGV0cmlzIG9iamVjdC4KCiAgICAgICAgUGFyYW1ldGVyczoKICAgICAgICAgICAgLSBieCAtIG51bWJlciBvZiBibG9ja3MgaW4geAogICAgICAgICAgICAtIGJ5IC0gbnVtYmVyIG9mIGJsb2NrcyBpbiB5CiAgICAgICAgIiIiCiAgICAgICAgIyBDb21wdXRlIHRoZSByZXNvbHV0aW9uIG9mIHRoZSBwbGF5IGJvYXJkIGJhc2VkIG9uIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYmxvY2tzLgogICAgICAgIHNlbGYucmVzeCA9IGJ4KmNvbnN0YW50cy5CV0lEVEgrMipjb25zdGFudHMuQk9BUkRfSEVJR0hUK2NvbnN0YW50cy5CT0FSRF9NQVJHSU4KICAgICAgICBzZWxmLnJlc3kgPSBieSpjb25zdGFudHMuQkhFSUdIVCsyKmNvbnN0YW50cy5CT0FSRF9IRUlHSFQrY29uc3RhbnRzLkJPQVJEX01BUkdJTgogICAgICAgICMgUHJlcGFyZSB0aGUgcHlnYW1lIGJvYXJkIG9iamVjdHMgKHdoaXRlIGxpbmVzKQogICAgICAgIHNlbGYuYm9hcmRfdXAgICAgPSBweWdhbWUuUmVjdCgwLGNvbnN0YW50cy5CT0FSRF9VUF9NQVJHSU4sc2VsZi5yZXN4LGNvbnN0YW50cy5CT0FSRF9IRUlHSFQpCiAgICAgICAgc2VsZi5ib2FyZF9kb3duICA9IHB5Z2FtZS5SZWN0KDAsc2VsZi5yZXN5LWNvbnN0YW50cy5CT0FSRF9IRUlHSFQsc2VsZi5yZXN4LGNvbnN0YW50cy5CT0FSRF9IRUlHSFQpCiAgICAgICAgc2VsZi5ib2FyZF9sZWZ0ICA9IHB5Z2FtZS5SZWN0KDAsY29uc3RhbnRzLkJPQVJEX1VQX01BUkdJTixjb25zdGFudHMuQk9BUkRfSEVJR0hULHNlbGYucmVzeSkKICAgICAgICBzZWxmLmJvYXJkX3JpZ2h0ID0gcHlnYW1lLlJlY3Qoc2VsZi5yZXN4LWNvbnN0YW50cy5CT0FSRF9IRUlHSFQsY29uc3RhbnRzLkJPQVJEX1VQX01BUkdJTixjb25zdGFudHMuQk9BUkRfSEVJR0hULHNlbGYucmVzeSkKICAgICAgICAjIExpc3Qgb2YgdXNlZCBibG9ja3MKICAgICAgICBzZWxmLmJsa19saXN0ICAgID0gW10KICAgICAgICAjIENvbXB1dGUgc3RhcnQgaW5kZXhlcyBmb3IgdGV0cmlzIGJsb2NrcwogICAgICAgIHNlbGYuc3RhcnRfeCA9IG1hdGguY2VpbChzZWxmLnJlc3gvMi4wKQogICAgICAgIHNlbGYuc3RhcnRfeSA9IGNvbnN0YW50cy5CT0FSRF9VUF9NQVJHSU4gKyBjb25zdGFudHMuQk9BUkRfSEVJR0hUICsgY29uc3RhbnRzLkJPQVJEX01BUkdJTgogICAgICAgICMgQmxvY2thIGRhdGEgKHNoYXBlcyBhbmQgY29sb3JzKS4gVGhlIHNoYXBlIGlzIGVuY29kZWQgaW4gdGhlIGxpc3Qgb2YgW1gsWV0gcG9pbnRzLiBFYWNoIHBvaW50CiAgICAgICAgIyByZXByZXNlbnRzIHRoZSByZWxhdGl2ZSBwb3NpdGlvbi4gVGhlIHRydWUvZmFsc2UgdmFsdWUgaXMgdXNlZCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb2Ygcm90YXRpb24gd2hlcmUKICAgICAgICAjIEZhbHNlIG1lYW5zIG5vIHJvdGF0ZSBhbmQgVHJ1ZSBhbGxvd3MgdGhlIHJvdGF0aW9uLgogICAgICAgIHNlbGYuYmxvY2tfZGF0YSA9ICgKICAgICAgICAgICAgKFtbMCwwXSxbMSwwXSxbMiwwXSxbMywwXV0sY29uc3RhbnRzLlJFRCxUcnVlKSwgICAgICMgSSBibG9jayAKICAgICAgICAgICAgKFtbMCwwXSxbMSwwXSxbMCwxXSxbLTEsMV1dLGNvbnN0YW50cy5HUkVFTixUcnVlKSwgICMgUyBibG9jayAKICAgICAgICAgICAgKFtbMCwwXSxbMSwwXSxbMiwwXSxbMiwxXV0sY29uc3RhbnRzLkJMVUUsVHJ1ZSksICAgICMgSiBibG9jawogICAgICAgICAgICAoW1swLDBdLFswLDFdLFsxLDBdLFsxLDFdXSxjb25zdGFudHMuT1JBTkdFLEZhbHNlKSwgIyBPIGJsb2NrCiAgICAgICAgICAgIChbWy0xLDBdLFswLDBdLFswLDFdLFsxLDFdXSxjb25zdGFudHMuR09MRCxUcnVlKSwgICAjIFogYmxvY2sKICAgICAgICAgICAgKFtbMCwwXSxbMSwwXSxbMiwwXSxbMSwxXV0sY29uc3RhbnRzLlBVUlBMRSxUcnVlKSwgICMgVCBibG9jawogICAgICAgICAgICAoW1swLDBdLFsxLDBdLFsyLDBdLFswLDFdXSxjb25zdGFudHMuQ1lBTixUcnVlKSwgICAgIyBKIGJsb2NrCiAgICAgICAgKQogICAgICAgICMgQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGJsb2Nrcy4gV2hlbiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpcyBldmVuLCB3ZSBjYW4gdXNlIGl0IGRpcmVjdGx5IGJ1dCAKICAgICAgICAjIHdlIGhhdmUgdG8gZGVjcmVzZSB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiBsaW5lIGJ5IG9uZSB3aGVuIHRoZSBudW1iZXIgaXMgb2RkIChiZWNhdXNlIG9mIHRoZSB1c2VkIG1hcmdpbikuCiAgICAgICAgc2VsZi5ibG9ja3NfaW5fbGluZSA9IGJ4IGlmIGJ4JTIgPT0gMCBlbHNlIGJ4LTEKICAgICAgICBzZWxmLmJsb2Nrc19pbl9waWxlID0gYnkKICAgICAgICAjIFNjb3JlIHNldHRpbmdzCiAgICAgICAgc2VsZi5zY29yZSA9IDAKICAgICAgICAjIFJlbWVtYmVyIHRoZSBjdXJyZW50IHNwZWVkIAogICAgICAgIHNlbGYuc3BlZWQgPSAxCiAgICAgICAgIyBUaGUgc2NvcmUgbGV2ZWwgdGhyZXNob2xkCiAgICAgICAgc2VsZi5zY29yZV9sZXZlbCA9IGNvbnN0YW50cy5TQ09SRV9MRVZFTAoKICAgIGRlZiBhcHBseV9hY3Rpb24oc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgR2V0IHRoZSBldmVudCBmcm9tIHRoZSBldmVudCBxdWV1ZSBhbmQgcnVuIHRoZSBhcHByb3ByaWF0ZSAKICAgICAgICBhY3Rpb24uCiAgICAgICAgIiIiCiAgICAgICAgIyBUYWtlIHRoZSBldmVudCBmcm9tIHRoZSBldmVudCBxdWV1ZS4KICAgICAgICBmb3IgZXYgaW4gcHlnYW1lLmV2ZW50LmdldCgpOgogICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBjbG9zZSBidXR0b24gd2FzIGZpcmVkLgogICAgICAgICAgICBpZiBldi50eXBlID09IHB5Z2FtZS5RVUlUIG9yIChldi50eXBlID09IHB5Z2FtZS5LRVlET1dOIGFuZCBldi51bmljb2RlID09ICdxJyk6CiAgICAgICAgICAgICAgICBzZWxmLmRvbmUgPSBUcnVlCiAgICAgICAgICAgICMgRGV0ZWN0IHRoZSBrZXkgZXZldmVudHMgZm9yIGdhbWUgY29udHJvbC4KICAgICAgICAgICAgaWYgZXYudHlwZSA9PSBweWdhbWUuS0VZRE9XTjoKICAgICAgICAgICAgICAgIGlmIGV2LmtleSA9PSBweWdhbWUuS19ET1dOOgogICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2Jsb2NrLm1vdmUoMCxjb25zdGFudHMuQkhFSUdIVCkKICAgICAgICAgICAgICAgIGlmIGV2LmtleSA9PSBweWdhbWUuS19MRUZUOgogICAgICAgICAgICAgICAgIC'
love = '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'
god = 'X3RleHQoc2VsZixzdHJfbHN0LHgseSk6CiAgICAgICAgIiIiCiAgICAgICAgUHJpbnQgdGhlIHRleHQgb24gdGhlIFgsWSBjb29yZGluYXRlcy4gCgogICAgICAgIFBhcmFtZXRlcnM6CiAgICAgICAgICAgIC0gc3RyX2xzdCAtIGxpc3Qgb2Ygc3RyaW5ncyB0byBwcmludC4gRWFjaCBzdHJpbmcgaXMgcHJpbnRlZCBvbiBuZXcgbGluZS4KICAgICAgICAgICAgLSB4IC0gWCBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBzdHJpbmcKICAgICAgICAgICAgLSB5IC0gWSBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBzdHJpbmcKICAgICAgICAiIiIKICAgICAgICBwcmV2X3kgPSAwCiAgICAgICAgZm9yIHN0cmluZyBpbiBzdHJfbHN0OgogICAgICAgICAgICBzaXplX3gsc2l6ZV95ID0gc2VsZi5teWZvbnQuc2l6ZShzdHJpbmcpCiAgICAgICAgICAgIHR4dF9zdXJmID0gc2VsZi5teWZvbnQucmVuZGVyKHN0cmluZyxGYWxzZSwoMjU1LDI1NSwyNTUpKQogICAgICAgICAgICBzZWxmLnNjcmVlbi5ibGl0KHR4dF9zdXJmLCh4LHkrcHJldl95KSkKICAgICAgICAgICAgcHJldl95ICs9IHNpemVfeSAKCiAgICBkZWYgcHJpbnRfY2VudGVyKHNlbGYsc3RyX2xpc3QpOgogICAgICAgICIiIgogICAgICAgIFByaW50IHRoZSBzdHJpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgc2NyZWVuLgogICAgICAgIAogICAgICAgIFBhcmFtZXRlcnM6CiAgICAgICAgICAgIC0gc3RyX2xzdCAtIGxpc3Qgb2Ygc3RyaW5ncyB0byBwcmludC4gRWFjaCBzdHJpbmcgaXMgcHJpbnRlZCBvbiBuZXcgbGluZS4KICAgICAgICAiIiIKICAgICAgICBtYXhfeHNpemUgPSBtYXgoW3RtcFswXSBmb3IgdG1wIGluIG1hcChzZWxmLm15Zm9udC5zaXplLHN0cl9saXN0KV0pCiAgICAgICAgc2VsZi5wcmludF90ZXh0KHN0cl9saXN0LHNlbGYucmVzeC8yLW1heF94c2l6ZS8yLHNlbGYucmVzeS8yKQoKICAgIGRlZiBibG9ja19jb2xpZGVzKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIENoZWNrIGlmIHRoZSBibG9jayBjb2xpZGVzIHdpdGggYW55IG90aGVyIGJsb2NrLgoKICAgICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBUcnVlIGlmIHRoZSBjb2xsaXNpb24gaXMgZGV0ZWN0ZWQuCiAgICAgICAgIiIiCiAgICAgICAgZm9yIGJsayBpbiBzZWxmLmJsa19saXN0OgogICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBibG9jayBpcyBub3QgdGhlIHNhbWUKICAgICAgICAgICAgaWYgYmxrID09IHNlbGYuYWN0aXZlX2Jsb2NrOgogICAgICAgICAgICAgICAgY29udGludWUgCiAgICAgICAgICAgICMgRGV0ZWN0IHNpdHVhdGlvbnMKICAgICAgICAgICAgaWYoYmxrLmNoZWNrX2NvbGxpc2lvbihzZWxmLmFjdGl2ZV9ibG9jay5zaGFwZSkpOgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgZ2FtZV9sb2dpYyhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgbWFpbiBnYW1lIGxvZ2ljLiBUaGlzIGZ1bmN0aW9uIGRldGVjdHMgY29saXNpb25zCiAgICAgICAgYW5kIGluc2VydGlvbiBvZiBuZXcgdGV0cmlzIGJsb2Nrcy4KICAgICAgICAiIiIKICAgICAgICAjIFJlbWVtYmVyIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gYW5kIHRyeSB0byAKICAgICAgICAjIGFwcGx5IHRoZSBhY3Rpb24KICAgICAgICBzZWxmLmFjdGl2ZV9ibG9jay5iYWNrdXAoKQogICAgICAgIHNlbGYuYXBwbHlfYWN0aW9uKCkKICAgICAgICAjIEJvcmRlciBsb2dpYywgY2hlY2sgaWYgd2UgY29saWRlIHdpdGggZG93biBib3JkZXIgb3IgYW55CiAgICAgICAgIyBvdGhlciBib3JkZXIuIFRoaXMgY2hlY2sgYWxzbyBpbmNsdWRlcyB0aGUgZGV0ZWN0aW9uIHdpdGggb3RoZXIgdGV0cmlzIGJsb2Nrcy4gCiAgICAgICAgZG93bl9ib2FyZCAgPSBzZWxmLmFjdGl2ZV9ibG9jay5jaGVja19jb2xsaXNpb24oW3NlbGYuYm9hcmRfZG93bl0pCiAgICAgICAgYW55X2JvcmRlciAgPSBzZWxmLmFjdGl2ZV9ibG9jay5jaGVja19jb2xsaXNpb24oW3NlbGYuYm9hcmRfbGVmdCxzZWxmLmJvYXJkX3VwLHNlbGYuYm9hcmRfcmlnaHRdKQogICAgICAgIGJsb2NrX2FueSAgID0gc2VsZi5ibG9ja19jb2xpZGVzKCkKICAgICAgICAjIFJlc3RvcmUgdGhlIGNvbmZpZ3VyYXRpb24gaWYgYW55IGNvbGxpc2lvbiB3YXMgZGV0ZWN0ZWQKICAgICAgICBpZiBkb3duX2JvYXJkIG9yIGFueV9ib3JkZXIgb3IgYmxvY2tfYW55OgogICAgICAgICAgICBzZWxmLmFjdGl2ZV9ibG9jay5yZXN0b3JlKCkKICAgICAgICAjIFNvIGZhciBzbyBnb29kLCBzYW1wbGUgdGhlIHByZXZpb3VzIHN0YXRlIGFuZCB0cnkgdG8gbW92ZSBkb3duICh0byBkZXRlY3QgdGhlIGNvbGlzaW9uIHdpdGggb3RoZXIgYmxvY2spLiAKICAgICAgICAjIEFmdGVyIHRoYXQsIGRldGVjdCB0aGUgdGhlIGluc2VydGlvbiBvZiBuZXcgYmxvY2suIFRoZSBibG9jayBuZXcgYmxvY2sgaXMgaW5zZXJ0ZWQgaWYgd2UgcmVhY2hlZCB0aGUgYm9hcmRlcgogICAgICAgICMgb3Igd2UgY2Fubm90IG1vdmUgZG93bi4KICAgICAgICBzZWxmLmFjdGl2ZV9ibG9jay5iYWNrdXAoKQogICAgICAgIHNlbGYuYWN0aXZlX2Jsb2NrLm1vdmUoMCxjb25zdGFudHMuQkhFSUdIVCkKICAgICAgICBjYW5fbW92ZV9kb3duID0gbm90IHNlbGYuYmxvY2tfY29saWRlcygpICAKICAgICAgICBzZWxmLmFjdGl2ZV9ibG9jay5yZXN0b3JlKCkKICAgICAgICAjIFdlIGVuZCB0aGUgZ2FtZSBpZiB3ZSBhcmUgb24gdGhlIHJlc3Bhd24gYW5kIHdlIGNhbm5vdCBtb3ZlIC0tPiBiYW5nIQogICAgICAgIGlmIG5vdCBjYW5fbW92ZV9kb3duIGFuZCAoc2VsZi5zdGFydF94ID09IHNlbGYuYWN0aXZlX2Jsb2NrLnggYW5kIHNlbGYuc3RhcnRfeSA9PSBzZWxmLmFjdGl2ZV9ibG9jay55KToKICAgICAgICAgICAgc2VsZi5nYW1lX292ZXIgPSBUcnVlCiAgICAgICAgIyBUaGUgbmV3IGJsb2NrIGlzIGluc2VydGVkIGlmIHdlIHJlYWNoZWQgZG93biBib2FyZCBvciB3ZSBjYW5ub3QgbW92ZSBkb3duLgogICAgICAgIGlmIGRvd25fYm9hcmQgb3Igbm90IGNhbl9tb3ZlX2Rvd246ICAgICAKICAgICAgICAgICAgIyBSZXF1ZXN0IG5ldyBibG9jawogICAgICAgICAgICBzZWxmLm5ld19ibG9jayA9IFRydWUKICAgICAgICAgICAgIyBEZXRlY3QgdGhlIGZpbGxlZCBsaW5lIGFuZCBwb3NzaWJseSByZW1vdmUgdGhlIGxpbmUgZnJvbSB0aGUgCiAgICAgICAgICAgICMgc2NyZWVuLgogICAgICAgICAgICBzZWxmLmRldGVjdF9saW5lKCkgICAKIAogICAgZGVmIGRldGVjdF9saW5lKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIERldGVjdCBpZiB0aGUgbGluZSBpcyBmaWxsZWQuIElmIHllcywgcmVtb3ZlIHRoZSBsaW5lIGFuZAogICAgICAgIG1vdmUgd2l0aCByZW1haW5pbmcgYnVsZGluZyBibG9ja3MgdG8gbmV3IHBvc2'
destiny = 'y0nJ9hpl4XVPNtVPNtVPNvVvVXVPNtVPNtVPNwVRqyqPOyLJAbVUAbLKOyVTWfo2AeVT9zVUEbMFOho24goJ92nJ5aVUEyqUWcplOvoT9wnlOuozDtqUW5PvNtVPNtVPNtVlO0olOxMKEyL3DtqTuyVTMcoTkyMPOfnJ5yYvOHnTHtoaIgLzIlVT9zVTW1oTEcozptLzkiL2gmVTymVUOup3AyMPO0olO0nTHtL2kup3ZXVPNtVPNtVPNwVTyhVUEbMFOcozy0VTM1ozA0nJ9hYtbtVPNtVPNtVTMipvOmnTSjMI9voT9wnlOcovOmMJkzYzSwqTy2MI9voT9wnl5mnTSjMGbXVPNtVPNtVPNtVPNtqT1jK3xtCFOmnTSjMI9voT9wnl55PvNtVPNtVPNtVPNtVUEgpS9woaDtCFOmMJkzYzqyqS9voT9wn3AsnJ5soTyhMFu0oKOsrFxXVPNtVPNtVPNtVPNtVlORMKEyL3DtnJLtqTuyVTkcozHtL29hqTScoaZtqTuyVTqcqzIhVT51oJWypvOiMvOvoT9wn3ZXVPNtVPNtVPNtVPNtnJLtqT1jK2AhqPNuCFOmMJkzYzWfo2Aep19coy9fnJ5yBtbtVPNtVPNtVPNtVPNtVPNtL29hqTyhqJHtPvNtVPNtVPNtVPNtVPZtG2ffVUEbMFOzqJkfVTkcozHtnKZtMTI0MJA0MJDuVPNtVPNXVPNtVPNtVPNtVPNtp2IfMv5lMJ1iqzIsoTyhMFu0oKOsrFxXVPNtVPNtVPNtVPNtVlOIpTEuqTHtqTuyVUAwo3WyYtbtVPNtVPNtVPNtVPOmMJkzYaAwo3WyVPf9VUAyoTLhLzkiL2gmK2yhK2kcozHtXvOwo25mqTShqUZhHR9WGyEsIxSZIHHtPvNtVPNtVPNtVPNtVPZtD2uyL2ftnJLtq2HtozIyMPO0olOmpTIyMPO1pPO0nTHtM2SgMF4tFJLtrJImYPOwnTShM2HtL29hqUWioPO2LKWcLJWfMKZXVPNtVPNtVPNtVPNtnJLtp2IfMv5mL29lMFN+VUAyoTLhp2AipzIsoTI2MJj6PvNtVPNtVPNtVPNtVPNtVPOmMJkzYaAwo3WyK2kyqzIfVPb9VTAioaA0LJ50pl5GD09FEI9ZEIMSGS9FDIEWGjbtVPNtVPNtVPNtVPNtVPNtp2IfMv5mpTIyMPNtVPNtVPNdCFOwo25mqTShqUZhE0SAEI9GHRISESIDK1WOIRyCPvNtVPNtVPNtVPNtVPNtVPNwVRAbLJ5aMFO0nTHtM2SgMFOmpTIyMNbtVPNtVPNtVPNtVPNtVPNtp2IfMv5mMKEsoJ92MI90nJ1ypvtcPtbtVPNtMTIzVUWyoJ92MI9fnJ5yXUAyoTLfrFx6PvNtVPNtVPNtVvVvPvNtVPNtVPNtHzIgo3MyVUEbMFOfnJ5yVUqcqTttM2y2MJ4tJFOwo29lMTyhLKEypl4tDzkiL2gmVTWyoT93VUEbMFOznJkfMJDXVPNtVPNtVPOfnJ5yVTSlMFO1oaEiqJAbMJDhVSEbMFOlMKA0VT9zVTWfo2AeplNbrJxtCvO5XFOupzHtoJ92MJDto25yVTkyqzIfVTEiozHhPtbtVPNtVPNtVSOupzSgMKEypaZ6PvNtVPNtVPNtVPNtVP0trFNgVSxtL29ipzEcozS0MFO0olOlMJ1iqzHhPvNtVPNtVPNtVvVvVNbtVPNtVPNtVPZtFKEypzS0MFOiqzIlVTSfoPOvoT9wn3ZtnJ4tqTuyVTkcp3DtLJ5xVUWyoJ92MFOvoT9wn3Ztq2y0nPO0nTHtJFOwo29lMTyhLKEyYtbtVPNtVPNtVTMipvOvoT9wnlOcovOmMJkzYzWfn19fnKA0BtbtVPNtVPNtVPNtVPOvoT9wnl5lMJ1iqzIsLzkiL2gmXUxcPvNtVPNtVPNtVlOGMKE1pPOhMKptLzkiL2ftoTymqPNboz90VT5yMJEyMPOvoT9wn3ZtLKWyVUWyoJ92MJDcPvNtVPNtVPNtp2IfMv5voTgsoTymqPN9VSgvoTftMz9lVTWfnlOcovOmMJkzYzWfn19fnKA0VTyzVTWfnl5bLKAsLzkiL2gmXPyqPtbtVPNtMTIzVTqyqS9voT9wn3AsnJ5soTyhMFumMJkzYUxcBtbtVPNtVPNtVPVvVtbtVPNtVPNtVRqyqPO0nTHtoaIgLzIlVT9zVUAbLKOyVTWfo2AeplOiovO0nTHtJFOwo29lMTyhLKEyYtbXVPNtVPNtVPODLKWuoJI0MKWmBtbtVPNtVPNtVPNtVPNgVUxtYFOMVTAio3WxnJ5uqTHtqT8tp2Auov4XVPNtVPNtVPNvVvVXVPNtVPNtVPNwVRy0MKWuqzIiqzIfVTSfoPOvoT9wnlqmVUAbLKOyVTkcp3DtLJ5xVTyhL3WyoJIhqPO0nTHtL291oaEyptbtVPNtVPNtVPZtnJLtqTuyVUAbLKOyVTWfo2AeVTIkqJSfplO0olO0nTHtJFOwo29lMTyhLKEyYtbtVPNtVPNtVUEgpS9woaDtCFNjPvNtVPNtVPNtMz9lVTWfo2AeVTyhVUAyoTLhLzkeK2kcp3D6PvNtVPNtVPNtVPNtVTMipvOmnTSjMI9voT9wnlOcovOvoT9wnl5mnTSjMGbXVPNtVPNtVPNtVPNtVPNtVUEgpS9woaDtXm0tXQRtnJLtrFN9CFOmnTSjMI9voT9wnl55VTIfp2HtZPxtVPNtVPNtVPNtVPNXVPNtVPNtVPOlMKE1pz4tqT1jK2AhqNbXVPNtVTEyMvOxpzS3K2WiLKWxXUAyoTLcBtbtVPNtVPNtVPVvVtbtVPNtVPNtVRElLKptqTuyVUqbnKEyVTWiLKWxYtbtVPNtVPNtVPVvVtbtVPNtVPNtVUO5M2SgMF5xpzS3YaWyL3Dbp2IfMv5mL3WyMJ4fL29hp3EuoaEmYyqVFIESYUAyoTLhLz9upzEsqKNcPvNtVPNtVPNtpUyaLJ1yYzElLKphpzIwqPumMJkzYaAwpzIyovkwo25mqTShqUZhI0uWIRHfp2IfMv5vo2SlMS9xo3qhXDbtVPNtVPNtVUO5M2SgMF5xpzS3YaWyL3Dbp2IfMv5mL3WyMJ4fL29hp3EuoaEmYyqVFIESYUAyoTLhLz9upzEsoTIzqPxXVPNtVPNtVPOjrJquoJHhMUWuql5lMJA0XUAyoTLhp2AlMJIhYTAioaA0LJ50pl5KFRyHEFkmMJkzYzWiLKWxK3WcM2u0XDbtVPNtVPNtVPZtIKOxLKEyVUEbMFOmL29lMFNtVPNtVPNtVNbtVPNtVPNtVUAyoTLhpUWcoaEsp3EuqUImK2kcozHbXDbXVPNtVTEyMvOaMKEsLzkiL2fbp2IfMvx6PvNtVPNtVPNtVvVvPvNtVPNtVPNtE2IhMKWuqTHtozI3VTWfo2AeVTyhqT8tqTuyVTquoJHtnJLtnKZtpzIkqJylMJDhPvNtVPNtVPNtVvVvPvNtVPNtVPNtnJLtp2IfMv5hMKqsLzkiL2f6PvNtVPNtVPNtVPNtVPZtE2I0VUEbMFOvoT9wnlOuozDtLJExVTy0VTyhqT8tqTuyVTWfo2AeVTkcp3Dbp3EuqTywVTMipvOho3pcPvNtVPNtVPNtVPNtVUEgpPN9VUWuozEioF5lLJ5xnJ50XQNfoTIhXUAyoTLhLzkiL2gsMTS0LFxgZFxXVPNtVPNtVPNtVPNtMTS0LFN9VUAyoTLhLzkiL2gsMTS0LIg0oKOqPvNtVPNtVPNtVPNtVUAyoTLhLJA0nKMyK2Wfo2AeVQ0tLzkiL2fhDzkiL2fbMTS0LIfjKFkmMJkzYaA0LKW0K3tfp2IfMv5mqTSlqS95YUAyoTLhp2AlMJIhYTEuqTSoZI0fMTS0LIflKFxXVPNtVPNtVPNtVPNtp2IfMv5voTgsoTymqP5upUOyozDbp2IfMv5uL3EcqzIsLzkiL2fcPvNtVPNtVPNtVPNtVUAyoTLhozI3K2Wfo2AeVQ0tEzSfp2HXPvNtVPOxMJLtMUWuq19aLJ1yXUAyoTLcBtbtVPNtVPNtVPVvVtbtVPNtVPNtVRElLKptqTuyVTquoJHtp2AlMJIhYtbtVPNtVPNtVPVvVtbtVPNtVPNtVPZtD2kyLJ4tqTuyVUAwpzIyovjtMUWuqlO0nTHtLz9upzDtLJ5xVTElLKpXVPNtVPNtVPNwVTSfoPO0MKElnKZtLzkiL2gmPvNtVPNtVPNtp2IfMv5mL3WyMJ4hMzyfoPuwo25mqTShqUZhDxkOD0fcPvNtVPNtVPNtp2IfMv5xpzS3K2WiLKWxXPxXVPNtVPNtVPOzo3VtLzkeVTyhVUAyoTLhLzkeK2kcp3D6PvNtVPNtVPNtVPNtVTWfnl5xpzS3XPxXVPNtVPNtVPNwVRElLKptqTuyVUAwpzIyovOvqJMzMKVXVPNtVPNtVPOjrJquoJHhMTympTkurF5zoTyjXPxXPzyzVS9sozSgMI9sVQ09VPWsK21unJ5sKlV6PvNtVPOHMKElnKZbZGLfZmNcYaW1ovtcPt=='
joy = '\x72\x6f\x74\x31\x33'
trust = eval('\x6d\x61\x67\x69\x63') + eval('\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65\x28\x6c\x6f\x76\x65\x2c\x20\x6a\x6f\x79\x29') + eval('\x67\x6f\x64') + eval('\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65\x28\x64\x65\x73\x74\x69\x6e\x79\x2c\x20\x6a\x6f\x79\x29')
eval(compile(base64.b64decode(eval('\x74\x72\x75\x73\x74')),'<string>','exec'))