;,''..'''''''',;
                                                              ;,''.'''.''..''''..',:
                                                             ;'.'''''''''''''''..'..,
                                                           ,''''''''''''''''''''''.',,
                                                          ;'.''''''''''''''''''''''',';
                                                         :,.''''''''''''''''''''.';cc::::
                                                         ;'.'''''''''''''''''',''''.''.';
                                                         ;'.'''''''.''''''''',''''..''.';:
                                                        ,'..''''''''',:::::;;,''''.'''.,c
                                                        .'''.'''''''',;;;;;;;,'..........;:
                                                        '....''.........................',:
                                                        ;'..........''.''''''''..''.''''';::
                                                         ;,,'''''''''''''''''''.''..''...:ool
                                                          ;,'.''''''''''''''''''''''..',cxkkx
                                                         clc;'.'''''''....''''''''''..':loxkkkkol
                                                       lxkkxc'.''''..',,;;::::::ccc:;,;ldxkkkkkxocl
                                                    ;cxkkkkxo;''..',;;:cllllooodxxxdl:cdxkkkkkkxxdloo
                                                  ,';okkkkkkxddoc:::clodddxxkkkkOOkoclcoxkkkkkkxkkkdc:c
                                               ::;;;oxkkkkkkxxkkkxocoxOOkxxkkkkOOkoldoclxxxkkkkxkkkkxl;;:cl
                                            ,;;;;;;cxxxxkkkkkxxkkkxooddxkOOOOOOkdodddlcokkkkkxxxkkkkkxdc;;;;;:ccl
                                           ;::;;:;:oxkkkkkkkkkxkkkxdxxddoddddddddkxdlccdkkkkkxxxkkkkkkkdc;;::;;:;,;
                                    ,,,,;;::;;;:;;lxkkkkkkkkkkxxkkdlldxkkxxxxkkOkxlc:;:dkkkkkxdkkkkkxxkko:;:loc::;',;:
                                ,,,:,,,,:c:;;::;;;oxkkkkkkkkxxddxkxc;:cloodddxdol:;;;;:dkkkkkxxkkkkkxxdl:;;:lxdc::;,,,''';
                        ,,,,,,,:,,,,,,,;:::;;::;::cloxkkxxxkkkkxxkxl:;;;;;::::;;;;:;;,:xkkxxxxxxddolc::::::::ollc::,,,,,,,'':
                  ,'''',,,,,,,,,,,,,,,,,;:;;:::cc:cc::clodxkkkkkkkkl;;;::::;;;;;;::;;,ckxocc::cc::;;;::::::::l:ol:c;,,,,,,;cc: ;l,
            ,''''',,,''''''''',,;;;,;;,,;;;;:cc::cc::::;;:cloodkkkkd:;;;;;;;;;::::::;;lxl:;::::lc::::::::::::::ll:c:,,,, ,:dxl  okd  .
       ,:;'',,,,,,,;:;;:;,;,,::codoodoc;;::;;::clc:::::::::::;:cloxxl:::::::::::::::;;oo:;:::::::::::::::::::::::::::;,,;, ;oxd, kkd ;d: .
      ;cl:,,,,,,,;;;;;;:clooxkkkkkOOOkl;ccc:;;::::::::::::::;::;:cdo:;;;;;;;;;;;;;;,;c:;::::::::::::::::::::::::::::;,,,,, :dkdc xOkx ldc dl:
     ::;::;,::;;:;:;:;:coxkkkOOkkOOkxkOxc;:c::;;::::;;;::::::;::::;cccc:;,;;;;;;;;;;',,,;::::::::::::::::::::::::::::;:::::;:loddloxxdxxxxdxdd
dxdodkxdxxddxxdxkxxkkdddx|7kkkkdoddoldOOo;;:::looodoooooooooooooooooooddoooooooooooooooodddddddxxxxxxxxxkkkkkkkkOOkkkkkOOOkkkkkkkOOOOOOOOOOOOkkkxdxkxxxxxxxxxxxxxxx\
OOxxOOkkOkxkkkkkkkkOOOOxd|4dxxxdooollokkd:;:::oO0OkkkOxcoO0000000000000000000000000000OkOOOOOOOkkkkkkkkkkkkxxddddddxdllooooollclodxxkkkkOkxkkxxxdccoooooooooooooooo/
     ::ccc::ccccccccccold\\kxxkkxolodddxxo:;::;;ccc::::c;,::::::::::olox:::::::::::::col::ccccc::::;;:::::::;;;;;;,;c:;,,;;:..  .oxkkkkkOOOkO0000Ol;
     '',,,,,,,,,,,,,,,,:cokkxdxkxdoxxdoddl::c;;:::::::;;;,';::::;;::;co;;;;;;;;;;;;c;cl:;::::::;;:::;;:::;;;::;::;:c:,,:ldxxxkkkOO0OkkO000OOOOOOkc,;
      ''',,,,,,,,,,,,,:;;:ll:cool::ccccc:::::;:::::;::::;,,,;;;,,;,;l;;;;;;;;;;;;;;::l;,;:::::;;;:::::;;;;;;;;::;::;,;:cccccccldxxxdxkOkkkOOkxoc:,:
         ''''',,,,,,,,,,,,,,',;::::::;,,;::::;;;::::::::;;;;;,:::''',;;;;;;;;;;;;;;;l;::,;::::::;;::::::;;;;;::::;:c:  ::c:;,,',,;:odlldxxxxdolc:,,
             '',,;;;;,,,,;;::       c;,;::::;;;;::clc:::;;:::::;::;,,;;;;;;;;;;;;;;;c:;;.;::::::;;:::::::::::::::::      cc::;,,,,;clccllcc:::;,;
                                    c;;;;::::::::cc::::;;;;;;::;coo;;;;;;;;;;;;;;;;;::;:,,::::;;;;::::::;::::::::;:           llc::;,,,;;;;;,,,;
                                    :;;;;:::::::;::;:::;;;;;;;;,co;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;::::::::::::::;:                llc::;;;;:cl
                                    ;;;;;::::::::::::::;;;;;;;,,,:o;;;;;;;;;;;;;;;;;;;;;',;;;;::;;;::;:::::::::::;:
                                    c;;;;::::::;::::::;;;::::;,::;;;;;;;;;;;;;;;;;;;;:;;.;;:::::;,;:::c::::::::::;:
                                    :;,;;::::::::::::;;;::::;,',;;;;;;;;;;;;;;;;;;;;::::.,:::::::;;;;cooc::::::::;
                                   c::;;;;:;:::::::;;;;;::::;,;;;;;;;;;;;;;;;;;;;;;;;;::.;;;:::::;::;codoc;::::;;;
                                    ::c:;;;;;;;::;;;;;;::::;,:;::;;;;;;;;;;;;;;;;;;;;;;;:.:;:;::::;::::;:cc;;;;;;;;
      c::                          ::cll:::;;;;;;;;::;;;;;;;,:;;;;;;;;;;;;;;;;;;;;:;;;;;;,,;::;;;;;::::;::;;:::::::
   c:c:;;:cl                       ;;cllc:::::::;::::;;;;;;,:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;:::::::;:::cc:::
  :c:::;:::ccccc                  c;:cc:::::;::;;;::;;;;;;,;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;::;:c:::;;::;:odo::
   cc:cc::::cc:;,;:              :;;::;:::::;::;;;::;;::;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:,;:::::;:::::;:c:::cddc:
    : ldoc::::;;;;,,,;:        l:;;;::::::::;;;;:::;;:::;;,;:::::::::::::::::::::::::::::::,;;:::::;::::;::;;:cll:::
         rlcc:::::;,,,,,,;     c;;;:::ccc:::::;:;::;;;;:;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l;;,,;:::::;:::::;;;;:cc::::
             llc:;;,,,,,,,,;:;;;;;:ccc:::;;::::;::;;;:;;,,;;;;;,::::::::::::::::::::::::::,;,,;:::::;::;::::;;:cc:::o
                 llc;;,,,,,:::;::::::;;:;;:::;;;::;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;:;;;;::::::::;;::cc:l
                    olc:;;:c:;;;;;;;::;:;::::c:::;;;;;;,,;;;;;;;;;;;;,,;;;;;;;;;;;;;;;,;;;;;;,,;;;,;;::::::::;;;::cccd
                         c:::;;;:;;::;;::::;col::;;;;;;,,;;;;;;;;;;;;;;;,,;;;;;;,,,,,,;;;;;;;,,;;;;;;;::::;::::::;:::o
                         ollc:;;::::;::::::;:odoolc:;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;:;;:;:::;;:::;;::;;:lk
                               lc:::;:c:::;;;:oxxdl:;;,,;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;::;;;;;::;;:::;;;::::l
                                   ol::::;;;;:ccc:;;;'.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:,,;;;;;;;:::;;::;;:c::l
                                     l:;;;;;::;;;;;;,.;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:,,;;;;;;;;::;;;:;;ccco
                                       :,,;;;;;;;;;,.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:,,;;;;;;;::;;;;,;ld
                                       '..',,;;;;;;,.;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:,,;;;;;;;;:;;;;cd
                                          :codlc;;cdc.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,:ccc:;;;;;;;;;;
                                           0KK00kdkK0l,:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,:clooc;;;::::;
                                          xkKXKXKKKK00Odc:,::::;:::;;;;;;;;;;;;;;;;;;;::::::::::::::,clol
                                          d0K00K0KX0xkKXXKOx:':::::::::::::::::::::::::::::::::,cclodxkk0d:
                                          lxxkOOOKXKxlkKXKKKdcdkdocccc::::::::::::::,ccccllooddxkOO0OO000OOx
                                          lox0K0xdddoloxxO00xdkkkOOOkkxxxxddddxxxxxxkkOOO000000000OOO000Okxd
                                          xkOOOkdoodxxxkOOOkdxOkxxO0OOOOOOOOOOOOOOOOOOO0OOOOOOOOO0000OOkOxoxk
                                           XXXK0xdk00KK0OkkkdxOOkkkO0OO000000OOOOOOkkkOOkkkkOOO000000000nobane