..::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................
.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................
........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::.............................................................................................
.......:..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::.::...............................................................................................
..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::...............................................................................................
.........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::.::...............................................................................................
..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:...................................................................................................
........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................
........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................
...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................
..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................
.........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................
........:....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................................................
.................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................
.............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................
..............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................  ..         ......................................................
.................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................   ..              ................................................
.................:..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:.......................................................                       . ....................................
...........:...:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................                      .       ...  ..............................
...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................            ..                             ............................
...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................  .                                          .............................
...............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................:::::::........... ......                                          .............................
.............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::--====---=--==+==-::..  .  .                                          .............................
.........:::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................:::-=-==-==---:==-===--==:::..   .                                           ........ ...................
............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............:::-------=----:---==--=-------:::::..                                                 .......................
..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:--------::-:::::-:---:---=:----++:::-:...                                               ..   ..................
.........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............::-==------:::::::::::::::-:-------=+-::::::..                                         ...             ............
........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............::=======-------::::::::::-:----::--=--::::::::.                                          .    ....    .............
.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............:-=====---::-------::::::-----:---:---:-:-::::--:..                                      ...           ..............
....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............:-====-------::::--::-:::-----:----------::-:.:::::.  .                                                  .............
.:::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............:-==------------:::::::::::----------------:::...::::....                                     .            ............
......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............-===-=---------::::::::::::-:------------=---:::..:::..                                                    ............
....::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................-======---------:::::::::::::::----------=---::-::::..::.                                                       ........
.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............:======--------::::::::::::::::::::------=---------::::::.                                                        . ..  .
........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............:=+=+====-------::::::::::::::::::-----------=-=--:-:::::::.                                      ..............     .....
.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................=++=+===-------::::::::::::::::::::-----:----------:--:..:..                                       ..............   ......
.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................-++++===------:::::::::::::::::::::::----:--:----------::.....                                       .  ..........  .... ..
......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............:=-=++==-------::::::::..:::::::::::::::---:--------------:.....                                                 ...  .    ..
......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............-+-=====-----:::::::::::::::::::::::::::-:::-------------:......                                                  ..     .  .
.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:..............:=-===--------------::::::::::::::::::::::::-------------:.....                                                   ..    .. ..
......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................----------::::::::::--:::::::::::::::::::::------------::.....                                                   ..   ......
.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................:-------:::::::-::::::::::::::::::::::::::::----------::......                                                   ..   ......
........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................:=-----::::--==-==+=-::::::::::::::::::::::::--------::......                                                         ......
........:.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................-=-----:::::-=--*#*++=:::...:::::::::::::::::-----::::.....:.                                                         ...  .
.......::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................:-:-----:::::::-**%%#=--::....:::::::::::::::------::......:.                                                               .
........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................:::-----::::::::--===--:::...::::::::::::---------::.......:.                                                          .   ..
...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................... .-:-----:::::---------:......::::-------::::---::::.......:.                                                                 
...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................:-----::::::-----:::::.....:--=-==-=+***+-:::::::........                                                                  
..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................ ----:::::.:::----:::.:....::--=:-:-+##*+=+-::::::..  ..::.                                                                 
.........::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................----::::::::----:::.::::::::----::::--=-----:::::..  .::--.                                                                
.........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................:----:::::::-----:::::..::::----::::::::::::-::::...  ::-=-                                                                 
..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................:::.:::::----::::::--=-::::::....:::-=-:::::::::::::::::..  .::-=:                                                                  
...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............::::::::::::-----------==-:::..:.::::::::-=:.....::::::::::.. .-=---.                                                                   
............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::::::---==-----:---==--:::::....::-=+=:-=:......::::::::.. .=+=:-                                                                     
..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........:--:-:::::::---====---::---==-==-:::::::::::::-::.....::::::::.. .:-:..                                                                      
..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......:-----::::::-----==+=--------::::.:==-::::::::::::.....:::::::....:.:.                                                                        
............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:-----------::------=++==-----::::::::::-==-----:::::....::::::....::.                                                                          
...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::--=--------::::::-----=*=====---:::::::::::::-=++=-:::.:::::::::.....                                                                            
........-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::.::-===--------------------=+*==+*==--::::::::::::::::--:...::::::::::......                                                                          
......-=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:...:-==-==--------------------==+*==+##+=-:::::::::-::::::::...:::::::::.:.......                                                                        
....:++==========----:::::::::::::::::::::::::::::::::::::::::::::::::::==-::::::::..:-====---=-------------------==+**=-+*#++=---------------::::::::::::::-:::::::...                                                                      
..:=++++++++++=+=====----------::::::::::::::::::::::::::::::::::::-+****+***##*=--:-=====---=--------------------===+*+==+**+=+===-----------::::::::::::-====-----::...                                                                    
.-=++++++***+++==============:::::::::::::::::::::::::::::::::::-*#*++==--==------=-======----=------------------====+**===+**==========------:-::::::-=============--::..                                                                   
-====++++*+++*==============:::::::::::::::::::::::::::::::::::=#*+=====--------==========-=-==----------------======++#*===+#+=-==========--===+==++++==============---::.                                                            ....  
======++++++*+++++++++++=-::::::::::::::::::::::::::::::::::::-#*=====---------============-====----------------=====++**+==+++----===============++=========-========---:::..                                                         ... ..
=====+++++++***+++++++=::::::::::::::::::::::::::::::::::::::-#*=============-==================---------------======++**++==++=--------==========+++======--============--::::..                                                    ..... ..
-====++++++*******+-:::::::::::::::::::::::::::::::::::::::::*#+=========================-====-----------------=====++++**++====------------=============---=+=============---::::..                                                 .. .. ..
:::-=+++++*+++++*+::::::::::::::::::::::::::::::::::::::::::*#+==============================---=--------------======+++**+++=+===------------=========-----++==============-----::::..                                                 .    
::::::=-::::::::::::::...::::::::::::::::::::::::::::::::::-##===========================-=------==-----------======+++++**+++======------------=----------===---=============------::::..                                                   
::::::--:..::.::.:::::::::::..::::::::::::::::::::::::::::-##*============================-------====-----------=====++++++++++=====----------------------..--------=-===--=====------:::::.                                                 
----:::-------=:::::::::::::::::::::::::::::::::::::::::::+##+===========================-===----====------------=====++++**++++=====-------------------:    .:---------------------------:::.                                               
---------------=:.:::.:::::::::::::::::::::::::::::::::::-*#*+===============================-=---==-======-------====++++**++++++========-------------.       .:--------------------------::::.                                             
---------------==-.:.:::::::..::::::::::::::::::::::::::::##*+===================================--========-------======+=+*++++++++========--=====--:           .:-------:---------------:::::::..                                          
---------=========-:::..:::::::.:::::::::::::::::::::::::-##*+=====================================-========--==---====++++**+++++++++============-:               .:::::-::------------::::::----::.                   .          ..        
-------=============::.:...:::::::::::::::::::::::::::::::*#*+==========================================================++++++++++++++++========--.                  .:-:--------------::------------:.           .:::-::::::....            
----===-==============::..::::::::::::::::::::::::::::::::##*+===========================================================+++++++**+*+++++======-:                      .:::-----------:::------------::..        .::::::::::::::::......     
=======================-.::::.:::::::::::::::::::::::::::-#%#++==========================================================+++++++*****+++++++==-:.  ....                  .::----------:-:--------------::....... .  . .......................
=============-===========:::::.::::.:::::::::::::::::::::-*%#*+=============================================+============++++++++******++++==-:...                      ..  :--------:-:::--------===----::.......   ........................
=====================-====-:::::::::::::::::::::::::::::::=%%*+===========================================++========-=====++++++++*****++++=-:... .....         .    . ....  ..-------------------======---:.................................
+++==========================::::::::::::::::::::::::::::::#%#+++========================================++=========-======++++++++****+++=-.....................................:-----------------=======---................................
+*++++=++++++++++==============-:::::::::::::-:::::::::::::-#%#++========================================++================++++++++***+++=:.........................................:---------------========--:..............................
..:=+++++++******++++++========+++=--::::----::::::::::::-=--+%#++++=====================================+++==========-=====++++++++++=:.............................................::-------------========---:.............................
.....-+*#***######******++++++++++++**++==---::::::::::::::---=--+*++++++++=++++================+==++++++++++===============++++++++=:.................................................:-------------=====------:............................
........:::::::::---:=+######*###*##*#%=-:::::::::::::::::::---::--+#*+++++++++++++=+++======++++++++++++++**++==============++++++*=:::::...............................................:---------====-----------:.................   ..... 
............:::::::::::::::::::::::::::::::::::::::::::::----=+++=---=+**+++++++++++++++++++++++++++++++******+==============++++++++-.:...................................................:-===-====---------====-:........  ...............
.........................:::::::::::::::::::::::-=--==*###%%%%**%%*+====--+*****++*++++++++++++++++************+=============+++++++*+=:.::::............................ ...................-======--------==+++++=-..................... ..
............................:........:::::::::::::::::::-----===---------====++*###**************************###+==============+++++++++-::::::.............................. ....  .  ... ....:==-=-------==-::::::::::.............. .  ...
..........................................:::::::::::::::::::::--------------------------===+*+*###%#%##%%##+##+=++=============+++++++++====-::::::................................ .....  . ...:-====--=----:-::::::--:::::..   ....  .....
..........................................::..:::::::::::::::::::::::::::::--:------------------------------------=+================+++++++=====----::::::::.................................... ...-====-::-----:-:::::::::::::.:...........
.............................................::..::::...::::::::::::::::::::::-:--------:------:--------------:-::-=++=============++***++++++===------::::::::.:..............................:..:..:-=--:::-------:::::-=------:--.........
....................................................::.::::::::::::::::::::::::::::--:---::------------:-:-:::---:-:-=++=========++==++++++++++++=--::::::...........................................:::--::--++-=-===::--==---==--=:........
....................................................::.:::::::::::::::::::::::::::::--:--::--:::::-----::-::-:::-:-:::=+=======+=====++++++=++===++=-:.:................................................:-----:. . ..-+:--++---==-+=.........
.....................................................::::::::::::::::::::::::::::::::::::::--::-:---------------:-:-:::-=+===+++===========+====++=======-::...................................................... .......-+=--=:.:.... .....
..............................................:::........::::.::.:::.:::::::::::::::::::::::-::-------------:--:-::::-:---=+++*=======+++====+===+++=========-:.......................................................... ....... ..... .. ..
..........................................................:...:...::::::.:::::::::::::::::::::::::::-:::::::::::::::::::::--=++========+#+====+==-==++=--==+++==:............................................................. ..............
...........................................................:......::.:::::::::::::::::::::::::::::::::::::::-::::::::::::::::::::---===++%+=-=+++==++**===++-::..............................................................................
.......................................................................::..::..::::::::::::::::::::::::::::::::::::::::::::::::::::::-==-=++==+==+++==+++=--::...............................................................................
.................................................................................::....:::::::::::::::::::::::::::::::::::::::::::::::::.::::::.::::::::.....................................................................................
.....................................................................................::.......:::::::::::::::::::::::::::::::::.:.:::::......................................................................................................
........................................................................................::..:::::::::::::::::::::::::::::.:.::.:::...:..:........................................................................................... ........
..............................................................................................::.:::.:::......:.:::::::::::::::...:..........................................................................................................
............................................................................................:.:..:::::::....:.:::............................................................................................................................
..................................................................................:......:....:...::::::::::::::...........:.................................................................................................................