::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::
:;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%:::/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=::+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/:
:;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%:::/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=::+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/:
:;XXX$$$$$$$$$$$$$$$$$$$$$$$$$$XX%:::/XXX$$$$$$$$$$$$$$$$$$$$$$$$$$XXX+=::+XX$$$$$$$$$$$$$$$$$$$$$$$$$$$XX/:
:;XX$/;;;;;;;;;;;;;;;;;;;;;;;;+XX%:::/XX$/;;;;;;;;;;;;;;;;;;;;;;;;/$XX+=::+XX+;;;;;;;;;;;;;;;;;;;;;;;;;%XX/:
:;XX$;;;;;;;;;;;;;;;;;;;;;;;;;+XX%:::/XX$/;;;;;;;;;;;;;;;;;;;;;;;;/$XX+=::+XX+;;;;;;;;;;;;;;;;;;;;;;;;;%XX/:
:;XX$;;:====================;;+XX%:::/XX$/;:====================:;/$XX+=::+XX+;;====================:;;%XX/:
:;XX$;;=,,,,,,,.,,.,,,,,,,,,:;+XX%:::/XX$//:,,,,,,,,,,,,,,,,,,,,://$XX+=::+XX+;;,,,,,,,,,,,,,,,,,,,,-;;%XX/:
:;XX$;;=,::==:;%XX%;::=HX:=,:;+XX%:::/XX$//:,$M##@%$%$%/$HXH@M%,://$XX+=::+XX+;;,:@@@@@@@M@@@@@@@@H--;;%XX/:
:;XX$;;=,;:=/H###M@MH+=@M/:,:;+XX%:::/XX$//:,H###@HH%%//$M$%X#X,://$XX+=::+XX+;;,;################M--;;%XX/:
:;XX$;;=,::%###@$//%X@%$#;=,:;+XX%:::/XX$//:,H##@%HX+/:;%M%+$X$,://$XX+=::+XX+;;,;################M--;;%XX/:
:;XX$;;=,:+##M$/+X$/++%$#/-,:;+XX%:::/XX$//:.H###X$$///+$M%/%$%,://$XX+=::+XX+;;,;#######M@#######M--;;%XX/:
:;XX$;;=,:%#MH+%M@+%%$HX#+-,:;+XX%:::/XX$//:.H###%%$////XM%;/$$,://$XX+=::+XX+;;,;####M#HX$@######M--;;%XX/:
:;XX$;;=,:+HXXHHHX$$$$H$#@:,:;+XX%:::/XX$//:,X##H;+%;/;/$@%;;$$,://$XX+=::+XX+;;,;####H@%;::/H####M--;;%XX/:
:;XX$;;=,;/%=$//$/=-+-%/:/=,:;+XX%:::/XX$//:,X##HX$/:=-==;;//$$,://$XX+=::+XX+;;,;###MX+;:===:$M##M--;;%XX/:
:;XX$;;=,:/%=$: +/=%$,+:-=-,:;+XX%:::/XX$//:,X###M$//;-. ,/$XHX,://$XX+=::+XX+;;,;###H@X$;=::%$H@#M--;;%XX/:
:;XX$;;=,=%#%+;=%;=$X-%:-=-,:;+XX%:::/XX$//:,X##MM%$/:- .;;H#X,://$XX+=::+XX+;;,;###M@/-=++=-:$X#M--;;%XX/:
:;XX$;;=,:$%++X$;:=%==X;-=-,:;+XX%:::/XX$//:,X##MM$/.--.,. :/#X,://$XX+=::+XX+;;,;####+/%%= =+;:X#M--;;%XX/:
:;XX$;;=,;XXX//=,==;,;+-==-,:;+XX%:::/XX$//:,X##MM%==-===-./;MX,://$XX+=::+XX+;;,;####+;::=,=:;;X#M--;;%XX/:
:;XX$;;=,:%HH+::==;--$+;+/=,:;+XX%:::/XX$//:,X###M+=. .==:-.=@H,://$XX+=::+XX+;;,;###M:,.-=,= .-H#M--;;%XX/:
:;XX$;;=,;%XH%;:-,::;%/+%%:,:;+XX%:::/XX$//:,X###H+=.. =.,-.,$X,://$XX+=::+XX+;;,;##+/;,,;-,-- ,+#M--;;%XX/:
:;XX$;;=,HMMH/,.,.,.=%XH%%:,:;+XX%:::/XX$//:,H##@%%- -.,..,%X,://$XX+=::+XX+;;,;##-/; -----,.-;MM--;;%XX/:
:;XX$;;=,+/:%+ -.. ,%$%H$:,:;+XX%:::/XX$//:.H##M+%-..-- ,=,-XX,://$XX+=::+XX+;;,;##+;;..-+:-,,-;MM--;;%XX/:
:;XX$;;=,==-/H, , . ,H;,:X;,:;+XX%:::/XX$//:.H###/$=---,.,==:XX,://$XX+=::+XX+;;,;##@+/-... .,=+#M--;;%XX/:
:;XX$;;=,==-;@/;:.=,/M;,--=,:;+XX%:::/XX$//:.H###M@;=,--,,-,;M@.://$XX+=::+XX+;;,;####%=, .,. .=X#@--;;%XX/:
:;XX$;;=,--=/MX/;::;X#:,-,,,:;+XX%:::/XX$//:.H#####+;:,.,,,:+#H,://$XX+=::+XX+;;,;####X;-,-. .,:M#@--;;%XX/:
:;XX$;;=,---;#M+:==%M@=,-,,,:;+XX%:::/XX$//:.H#####H+/:-.,:+X#X,://$XX+=::+XX+;;,;####H;:-. ,+##@--;;%XX/:
:;XX$;;=,---;MMH+;+X#%,==,,,:;+XX%:::/XX$//:.H######H$;, .:$H#$,://$XX+=::+XX+;;,;####H;;=. .:$##@--;;%XX/:
:;XX$;;=,-=-:M#@X$%@M;,=--,,:;+XX%:::/XX$//:.H######@@X++++/@#$,://$XX+=::+XX+;;,;####M:--,,,-:%##@--;;%XX/:
:;XX$;;=,====$##$:%#X---,-,,:;+XX%:::/XX$//:.@######M$+%+;-%##$.://$XX+=::+XX+;;,;#####X-....,=H##@--;;%XX/:
:;XX$;;=,====;M#$.H#:----,,,:;+XX%:::/XX$//:,H#######H==-,;###X,://$XX+=::+XX+;;,;######M+-..-X###M--;;%XX/:
:;XX$;;=,-----;/:.;;,,,,-,,,:;+XX%:::/XX$//:,;+++++//;---,:///:,://$XX+=::+XX+;;,-////+/+/:,.=////;,-;;%XX/:
:;XX$;;=,,,,,,,.,,,,,,,,,,,,:;+XX%:::/XX$//:,,.......,,,,,,...,,://$XX+=::+XX+;;,,........,,,,....,,-;;%XX/:
:;XX$;;;;;;;;;;;;;;;;;;;;;;;;;+XX%:::/XX$/;;;;;;;;;;;;;;;;;;;;;;;;/$XX+=::+XX+;;;;;;;;;;;;;;;;;;;;;;;;;%XX/:
:;XX$;;;;;;;;;;;;;;;;;;;;;;;;;+XX%:::/XX$;;;;;;;;;;;;;;;;;;;;;;;;;;$XX+=::+XX+;;;;;;;;;;;;;;;;;;;;;;;;;%XX/:
:;XX$+++++++++++++++++++++++++%XX%:::/XXX++++++++++++++++++++++++++XXX+=::+XX%+++++++++++++++++++++++++$XX/:
:;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%:::/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=::+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/:
:;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%:::/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXH+=::%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/:
:;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+:::;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/:::/%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%;:
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::////////////////////////////////:::;////////////////////////////////;:::;///////////////////////////////;:
:;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%:::/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=::%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/:
:;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%:::/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=::+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/:
:;XX$%%%%%%%%%%%%%%%%%%%%%%%%%$XX%:::/XXX%%%%%%%%%%%%%%%%%%%%%%%%%%XXX+=::+XX$%%%%%%%%%%%%%%%%%%%%%%%%%$XX/:
:;XX$;;;;;;;;;;;;;;;;;;;;;;;;;+XX%:::/XX$;;;;;;;;;;;;;;;;;;;;;;;;;;$XX+=::+XX+;;;;;;;;;;;;;;;;;;;;;;;;;%XX/:
:;XX$;;;;;;;;;;;;;;;;;;;;;;;;;+XX%:::/XX$/;;;;;;;;;;;;;;;;;;;;;;;;/$XX+=::+XX+;;;;;;;;;;;;;;;;;;;;;;;;;%XX/:
:;XX$;;=--,,,----------,,,--;;+XX%:::/XX$/;:------,,,,,,--------:;/$XX+=::+XX+;;--------------------=;;%XX/:
:;XX$;;=,==::=-========::=-,:;+XX%:::/XX$//:,----=:::=::====-==,://$XX+=::+XX+;;,,,,,,,,,,-=,,,,---,-;;%XX/:
:;XX$;;=,M###@$H$X%%HMH@##/.:;+XX%:::/XX$//:,:/;+M####MM##@HX@X,://$XX+=::+XX+;;,,==--==-=@#/:==/++,-;;%XX/:
:;XX$;;=,M##@HHX++;/XM%%$M+.:;+XX%:::/XX$//:,=;;H###MMX%X@#@H#X.://$XX+=::+XX+;;,,======%@##M@$;=::,-;;%XX/:
:;XX$;;=,M##X$X$//:/$M+%$X/.:;+XX%:::/XX$//:,=;%MMM#M@%/;+XMH#+.://$XX+=::+XX+;;,,====-%##H+HM@H:--,-;;%XX/:
:;XX$;;=,M##M$$%///+XM+/%$/.:;+XX%:::/XX$//:,=;H@@@@@X+;:+$H@M;,://$XX+=::+XX+;;,,==--:#HX%H#%/@@:=,-;;%XX/:
:;XX$;;=,M##@/%%///+H@/;/X+.:;+XX%:::/XX$//:,=%MH@MMMH+;;/%XMH:,://$XX+=::+XX+;;,,-=:-%#X$%H+;+@M@X,-;;%XX/:
:;XX$;;=,M##$/%+//;/XH+;;H+.:;+XX%:::/XX$//:,:X@@MHH@#@$//%%$%=,://$XX+=::+XX+;;,-=;XXM@%%%+;;+@MM;,-;;%XX/:
:;XX$;;=,M##HH$;=----:;//H+.:;+XX%:::/XX$//:,=%@H/-,-/:%X++/+%:,://$XX+=::+XX+;;,-/H###H%+;--=%@@M/.-;;%XX/:
:;XX$;;=,M##MM%++/- =%XHM+.:;+XX%:::/XX$//:,=%@: ,$X/%/;=,://$XX+=::+XX+;;,-X####@+:,. -%@@;,-;;%XX/:
:;XX$;;=,M###@$%=-. ,=:@#+.:;+XX%:::/XX$//:,-+X- -::-:H%%%=-,://$XX+=::+XX+;;,:#####%/;. .:H$-,-;;%XX/:
:;XX$;;=,M##M@$=,:,,- ,/%#+.:;+XX%:::/XX$//:,,;@; .==---%H%/,.,://$XX+=::+XX+;;,;####H;/-. .=$H-.-;;%XX/:
:;XX$;;=,M##M@/=--===-,:/#+.:;+XX%:::/XX$//:,.-%;- -/: .;@; ::,://$XX+=::+XX+;;,;####/:;:, =;X#$,-;;%XX/:
:;XX$;;=,M###@;- ,:-:,.;#+.:;+XX%:::/XX$//:,:%X+=. ,,. :X. X$,://$XX+=::+XX+;;,;###H:,..=-,--/@#M,-;;%XX/:
:;XX$;;=,M##MX/,. .- ,,.-H+.:;+XX%:::/XX$//:,+M#;:. :; ,@$,://$XX+=::+XX+;;,;##M%- ,--,-;;M#M,-;;%XX/:
:;XX$;;=,M##X%+, .-.- .-H+.:;+XX%:::/XX$//:,+@@;= , :- %M$,://$XX+=::+XX+;;,;###/. -.. -/##M,-;;%XX/:
:;XX$;;=,###H%+,,,=. -=,:@+.:;+XX%:::/XX$//:,%@H:,.. :;%@M$,://$XX+=::+XX+;;,=@#M:.,=,,. .,X##M--;;%XX/:
:;XX$;;=,###@/$==--,,---/M+.:;+XX%:::/XX$//:,%@@+:=. . :$#@M$,://$XX+=::+XX+;;,-/@@=,=---, :####--;;%XX/:
:;XX$;;=,#####H:=,,,,,--+#%.:;+XX%:::/XX$//:,%M#M;-.,, ,;%###$,://$XX+=::+XX+;;,-:XX;,,-::, .%###M,-;;%XX/:
:;XX$;;=,######/;:,,,,-;$#+.:;+XX%:::/XX$//:,$##@//;= .-;/H##X.://$XX+=::+XX+;;,-:X++-.-,,..;@M#@%,-;;%XX/:
:;XX$;;=,######H%/=,.-;%@#/.:;+XX%:::/XX$//:.H#H++;= ,::;+%#X,://$XX+=::+XX+;;,,:$;+;,.,,,:;;;/::,-;;%XX/:
:;XX$;;=,#######@X;,.-/$M#/.:;+XX%:::/XX$//:,$X%;//, .-;;-;++%/,://$XX+=::+XX+;;,-=+;;%;=://:=----=,-;;%XX/:
:;XX$;;=,#######@HX%%%/%##/.:;+XX%:::/XX$//:,/X%:;$:=;/;=-:/++;,://$XX+=::+XX+;;,-=;;::/++;:==-----,-;;%XX/:
:;XX$;;=,#######M%;+;==@##/.:;+XX%:::/XX$//:,/X+::+%%;-===:;++;,://$XX+=::+XX+;;,,=::::::::====--=-,-;;%XX/:
:;XX$;;=,M#######$=--,$###/.:;+XX%:::/XX$//:,/$/=:;;;==:=::/%+;,://$XX+=::+XX+;;,,=::==:::=====--==,-;;%XX/:
:;XX$;;=,=:::::::=,,,,::::-,:;+XX%:::/XX$//:,-=-,-----,,,-,----,://$XX+=::+XX+;;,,,,,,,,--,,,,,,,,,,-;;%XX/:
:;XX$;;=-,,,,,,,,,----,,,,--;;+XX%:::/XX$/;:--,-----------------:;/$XX+=::+XX+;;--------------------=;;%XX/:
:;XX$;;;;;;;;;;;;;;;;;;;;;;;;;+XX%:::/XX$/;;;;;;;;;;;;;;;;;;;;;;;;/$XX+=::+XX+;;;;;;;;;;;;;;;;;;;;;;;;;%XX/:
:;XX$;;;;;;;;;;;;;;;;;;;;;;;;;/XX%:::/XX$;;;;;;;;;;;;;;;;;;;;;;;;;;$XX+=::+XX+;;;;;;;;;;;;;;;;;;;;;;;;;%XX/:
:;XX$%%%%%%%%%%%%%%%%%%%%%%%%%%XX%:::/XXX%%%%%%%%%%%%%%%%%%%%%%%%%%XXX+=::+XX%+%%%%%%%%%%%%%%%%%%%%%%%%$XX/:
:;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%:::/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=::+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/:
:;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%:::/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXH+=::%HXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/:
::/++++++++++++++++++++++++++++++/::=;++++++++++++++++++++++++++++++++;=:=;+++++++++++++++++++++++++++++++;:
////////////////////////////////////////////////////////////////////////////////////////////////////////////
this was before ! old times ... huh !