o//+hNMNmhhhhhhhhhhhhhyyyyyyhmNMNho///::::::::::::::::::::::::::-`  /NmyyyyyyyyyyyyyyyyyyhhhhhdNmNNh
/////odMMNdhhhhhhhhhhhhhhhdNMNms+///:::::::::::::::::::::::::::::-`  :NmhyyyyyyyyyyyyyyhhhhhhmNhoNmy
///////odMMNdhhhhhhhhhhdmNMNho////::::::::::::::::::::::::::::::::-`  :mmhyyyyyyyyyhhhhhhhhhmNy+yMhy
////////+odNMmdhhhhhdmNMNds+///::::::::::::::::::::::::::::::::::::-``./mNdhhhhhhhhhhhhhhhdNNs//dNys
//////////+odNNmhhdmNMmyo+///:::::::::::::::::::::::::::::::::::::::-...:dNdhhhhhhhhhhhhhmNdo//+Nmss
/////:://///+ohmNNMNds+////::::::::::::::::::::::::::::::::::::::::::--..:dNdhhhhhhhhhhdNNh+///sMdsy
/////:::://////+ydy++///:::::::::::::::::::::::::::::::::::::::::::::::-..-hNdhhhhhhhhdNms+/://dMyss
//////:::::///////////::::::::::::::::::::::::::::::::::::::::::::::::::-..-hNmhhhhhdmNdo//::/+NNyss
//////::::::://////::::::::::::::::::::::::::::::::::::::::::::::::::::::-..-yNmhhhdNNh+//:::/sMmyss
//////::::::::://:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-..-sNmdmMms+/:::::/hMdyys
//////:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-..-oNNMdo//:::::/+NNyyys
//////::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-..-+my+//::::::/oMmoshy
//////:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-..-+//::::::::/hMhsyhy
//////::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.-//:::::::::+mMhyyyy
///////:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::::/+NNhyyss
///////::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/sMmysooo
///////::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/dMhooooo
////////::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/+mMsooooo
////////::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/oMmsooooo
/////////:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/hMdsssooo
/////////::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/+dMyssssoo
//////////:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/oNNsssssoo
///////////::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://sMmsssssso
///////////::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://hMhsssssso
////////////::/yyo+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://+mNysssyyss
/////////////:/Nyohmy::oNs::::::syys/:::::::y/::::::::::::::::::::::::::::::::::::::::://oNmssssssss
/+yddyyyo+++ohNd.  -hmhN:oho///sNs+dNd/::::hdmo:::::::::::::::::::::::::::::::::::::::///sMhssssssss
/oyms `./osydh+`    `:y/  ./yddh+` `/mm//sd+`om/::::::::::::/y::::::::::::::::::::::::///hNyssssssss
hs:`        `                ```     .mmh+. .-ms::::::::::::hmm/:::::::o+::::::::::::///+mNsssssssss
.                                     ..`  `--my:::::::::::oNo/m+::::ohhmd+::::::::::///oNdsssssssyy
...```                                    .--:ms:::::::::::mN/ +mssys+.`.oms::::::::////sNhsyyyyyyys
-----........``````````` ``..  ``..`   `..---sNmd/:::::+o+sNs. `so:.`     -my:::/hdo////hNyyyhyssooo
dyoo+++///::::--------....---...----...------/smh//////+Nms/-.             -mdyys-+dysssmNdhdNyssooo
syyyhhddddddddddddhyyssoo+///:::::::://++ooshmmyooo++++/hN/---.........`    -:-`   ./ooo-:++yMhsssoo
-:-::::::::/+oyhdmNNNmmmdhhhhhyyhmNdysyyyhdmNMmhhhhhhddhdMd/:----------.`                   +Mhsssoo
:.....-:+shddhhyo+/::---........-:sds......-:sds-----:/+ymMNdhhhyysso+/:-.....``            sNssssso
h--/oyhhyo+:-..```                `-h.      ``:ds.`````..-+hd+:::::+ohmmdys+:---.``        -mdssssso
Nhhys/:-.``                         .:         /m`       `.-sd:....---/ymsosyys+:-...`````-hmsssssss
//-.``                               `         `h.         `.+y   ```..-/y+.--/oyys/----:ommysssssss
                                                +`           `h-      ```.h-````.:+yhsohmmhsssssssss
                                                `             -o          -s      `./yNMdyssssssssss
                                                               /           +`       `.:hNmysssssssss
                                                                           `          `.oNNhssssssss
                                                                                    `.` .+NNhyyyyyyy
                                                                                    `--..-oMmsssssss
                                                                                    .-:++/:dMyssssss
                                                                                    .-oMmmmNMyssssss
                                                                                    .-sNssyhhsssssyy
                                                                                    .-ymssssssssyyyy
                                                                                    `-yNssssssssyhys
-                                                                                    .+Mysssssssyhyy