@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@########@#############@####@@@@@#@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@##+'####################++#######+@@@@#@@@#@@@@#@@
@@@@@@@@@@@@@@@@@@@@@@@@###+'######+++'+:'''';;++'''''''''+#+'+++##########@@@
@@@@@@@@@@@@@@#@@@@@@###+'''###+#+++++''';',''';;':'''+'''++++;,''#+++;'++####
@@@@@@@@@@@#@##@@###+++'#+#++';''.`';:,;''''++'';';;;;:;';:;;;'';;'+'#+#######
@@@@@@@@@#+####@##+++++'#++',,+++;::.:;''';;;;;::,,,:`.;:;;''':;:''';;'+++###+
@@@@@@@#@'#######+';++'+++;:,'':;;:,,'';';::;:,.,,.:::;;';;;;'';'++'+;''''++#;
@@@@@@@#++#####++'+;:;'++';';:;:,'';:,.`.::,....`,`.:,:,,,,...,:,,..::;;''''''
@@@@#@##'+###+#++;;';:;:;';;,,,,'';:..,:,,,````,,..````` ```.,,,``,,,:;;:;''+
@@@##@@##''##+#++;'+',,;'+'';:::;;,:`.....````,.`              ` ..:,,,:,:;;+:
@@@@@@#@##';++##+++'';;++;+':,,,:;:,,`,.```````  `` `````       `..,;:,,,.:'''
@@@@@@@#@###++++##++'',;.''+'';:,,,,.`..   ``` ``` `             .,::` .,;'''+
@@@@@@@@@###+''+###++++''''+++'';,.,,``.  `   Tannhauser      `  .:,;.,,';'''+
@@@@#@@@######''++#++++++'''::;';:;,,`.  `       GATE         `` .,:;..;;'''+'
@@@@@@@@@#@@###++++++++++''';;,::;'';;:.`                  `..`..,:.`:;''+#++'
@@@@@@@@@@@@#@@@#+##++'+++'''++++''';;;::,..``.,.,,,,::;:::'::.,:;'+;;++#;####
@@@@@@@@@@@@@@@@#@##@###++++++++#''''++++';''''';::;'';'::`..:;;''+###.'######
@@@@@@@@@@#@@@#@@@@@@+##+#+++#+###++##'+++'''+';';;:,:::;';:;'++####@'@#@#@@@#
                                                       `   `+ '  `                               .` ` `  ``````.``..  ``` `.`` .   `'````.````;,,`,`````````.,```,`.',.,:;;:::',;;,;::,,:::,';;;,,.`  ` 
        `                       ` ,         `      `        .+.` `              `    `             `.`` ```````.`````   ` ,`.  ``  ````.``..`..:.``..```````...```.,,,::::,::;;:;';::,:,,,,';,:;:,.` ` `
                     `           `                   `      ```                     `    ``         ,` `` ..```.``````` ````````.` .``.``.````.,.`,....,`````.,``..,::::,,::';;:;;;,;..:::,:;:;:::.`` ` 
          `    `            .       ` :      `                  .  `   . . `` `   `              `  ` `  `.`,```````   ``` ``.``,``````....``.....`..,.,.,``.,:..,,,,::::;;;;';:;::;,,,:,,.:::::,..```  
                                     `'`    `                   `   `         .                     ```` ```````.```.``..,`.``````` `,`.....,...,,.,,,.,......,,,,::,:::,''';';''':':::,;,,:;:::'.````` 
             `         .    `                  `              `                       `              `` .```.``..,.;``,` ```````.`.```.`..,..,,..,.,,,:,..,':'::,:,:::::;'##+'++';;;:;:;';;.,:;;:.```':`
   . `     `      .   .      `     . `                       `                   `         .        ` ` ``.``...#;:`.``` ``.``,.```.`,,,.,:...,,:,:,,,,:,,:';;;';::;;;;;+',#''#+''';::;';';;;:'';:`,:+'.
       `                .   . `        .          `                                   .                  ,```..: ;..````.`````........,.,:....,,,:;:,,:;;:::;''';;'''+++#;#;#;#+'''''''+':;;;,+'#:,.;;,.
                        `                  ` `         `         `      .`           `     ,  `  `   `  ````.`.:+,```.`` `,,...,`,;:,.,::.,.,.,,;:;';:;;;;:;'''++###@###++##,:,##++++'+#+++;;;' #;,,.;'.
                          ``            `       ,                  `      `            `           ` ``   ```.,.,,`` ```.``...;:,:;+:,,,....,,,:,;;';+++'';';;'+++##+#@##';##``'+:#+++'++###;'+'#':,,+.,
       `   .           `     `                                                          `  .      ` ``  ` `...,,;.,``.```.`.,:;;,:;+:,,:.,,,,,;,,,;''##;++;':;'+######@@@+##;++#@#@#+##'#'#,''++#+;:,;.;
              `    `              `          `                       .                        , `` ,`,``````.,...:.`.````....;:+;:;;:,,,,,,:,;:::;''+###+++'+++++##@@#@@@#+####+'#@###+###;:.#'++#:;:;+;
                                                                 `                       `  .`` `    ``` ``....`..`.``.,`...,:+':,::::,,::;;:';:,;''+#@+#@#;+++#.#@####+#@####@+#++#@#+#+@#':+;++'';,:,,
    `                                 `:                               `           `       . `:```` ``````.``..,`..`.```......;::,:,:,:;;;;;;;;;;;''@@@#++##''#.+####'#@+##@####+#+@#+'#+##;#+'+';;',::,
                             ``       `.`       `       ` `                ,   . ``   `      `.:`````````..`..````.;```......,,:,,:,::;++''';;;';';+##@#++#####+#@'@@@#@#+#+#'#@@####@#@+##'+'':+:'':,:,
        `  `.             ,           .     `                                                `+.`.` `.``.``..` .```,.`.....,,,,:,:::'';'++;+''''+#+'++:+##'++###+######@,@@@@#;@+##+##+@+'@'''++''+;:,;,
            `  `               .` `      . `           .         .                 `         .`` ``````````.``...``.`..:....,:,::;;;:''''++++'+++#++###+#'#+'@,#''+##+@@###'@#@####+##+#+#++'++#++';::;:
  .    `              ``        .              `    `                    .          ` `  `  `` ```` ``.```..`...`````..,.,...,::;+';'''+'+''++@@+++++#'##+ '+#';'###@#+@#@@+###++#+#'##+##++'#####;:',,.
                `                   `  `     `.  `           `       `           .        `  ``.`` `````.......`.```...,,.,;,,;;''''+'#+''++###+;@+##+++++###,+';#+;######;@#@@@@##;#+##;'++++#####;,;,:
        `     .`   `                      `     `                            `  ``  ` ,   `  ````````..`,.......```...,.,:,;;;'+'''+##++''++++#+@####++##++'+ +++'#;@'@##.+#+#@#+#++#`+#++###'''++;::,,.
  `            .   .     `       `                  `   `             .     `   ` `     `   ````.````..``...,,.....,.,.,,;;;;+'+++###+'+;;#'@##+##+'#+++#+:#+++####:#+'#@+#,#+@#####@+###;;+#+'++#::;:,,
                     .                   `     `        `                  `` `  ` `    ``` ``.````.`````,..,..:,.,..:,:::;'++'+++#+';:';+@+#+''@:##;#'#'##++#+#'##;##+#####'##;@###'@@#+:;@#;+';:;;,:.,
                  `                         ` ` ` `      ` `  `       .     `    .`   `  ` `,````````..`.....,..;,,,::,::;;''#'#+;';;;'+@'#;;.:,.''#;+'`.#'#:;#++##@+####@@#@+#####@@##'++;+';+'+'',,.,.
                                       `  .   ``           `` ``                    ` `    `````,` .....```,,,,:;;,,,;:;:;'''++++;;::;+@#@:;.,.;,'@###':.';;: +:##+##@@#@##############'':;++''''+;,:,,.
       `                            .; `     ``.`          .      `      ```      .    `````.`````````..``...,,;;,,;:;;;;';'''++';';;#@+:;:` ;.+++##;'+++''.@##'+;###+@@#@#@@##;@##+@@@''++;+:'''''::.:.
             `              . ` `   .;    ````````  .              .       `     ` ` ` ` `` ````,.```,..`....,.:;,;';+;'';+''+'+;;';+#@#@'#  +''';'.:'##:+', :,#:::+;'@@##@@#,#+'@#@#++#;#+;+''';''+,,,,
   ,        `                           .`;'.;.````               `    `    ` .   ` `` ```: `````,````..,.....,;:;;;'''++++'#+'''+:#+@####+';++#'+``';#+;+,:`++#':#'+#@###+###@`,#@'+#'.#';'+;''':;:;:,:
   `                            `         :',::.`.. `   `                   ` ` , `    ``.` .``..,..`..,,,.,,:;;;:';+''#++;+';;;+ #@##''##++''#+#,.,.;;';'+'#+#++''''++#@;##@@#',###'':'+;'''+''#;',,.,;
       ` `  `                            .`.,'+;:```        ```      `       `  ` `   ```.,```````....,,,,,,,::;''';'++';'';;;;++++#''.+'';':#'+#+';':'''#';++'++++#'##'####'#@@@#####''++'++':;;';,,:''
  .                  ` .                ` `,'+';,``     `   ``             `   `` ```` ``,```.`..`,...,,,:,,:;:;''+#++''';:::+#'#+,;';':',;;;,'+#;'+++':',:+###;';;##+#'#+##@@#####'#;'#;'':+#';':;;:;''
                     .      `             `:#: #+.`   `,```        `     `      .`` `````..`...........,:,::;;;'+'+'#+++;':;;:#+#####+':,:, :',+#;;#'#'++,#+++###:@'##'''#'+#+#+##;#+#:#;:'''#'';'';:,;'
.           .      `                      `.+:`##,.`` ```    `         `         ``.`'```.`..`.....`..,,;:;:;+''+#####++;''+++#+++++:`:,,:``;,;':;''#+#++;`##+'';'###'';,#+'##+'+'#'#@++++;#'+;+;'';;':;
.                .   `              ` `    `;@#',`,` ` `,`             `        ```..;.`.......,....,:::::::'#+'++#@#+++++++###+'++:.'.;:..,;:.`'+#;+;++'`,+':+:'#++#,;+'++'###+'';##'+#'''+';';:;',;';,
                                          `.,;+:..`. ``  .       `` `           +.```````.;.,,,,....,:,;;:;;;###@@###+#++'+'#''+'+'',;.`+;:;,;;##:,,##++;,'@+#,''+:'@#@#'::;#+''::;:####++';;;;;;';,,;:.
                    `   .`                 ..,..;` .  #` .      `             ``'.```````.+,.,..,.,,;,:''';'+#+#@@###:++##;'+##;,;#+.:.;;''''#';;'##''#;+;#+'+:''#';##@#;,';'+;':''##+@+++++;+'::'::':`,
             `   .      `  .            `   ..:...`   '`          ,         . ` ``````.,...:,,:..,::;;;'#''+##'#@+'#++'+++``##+,::',:,++:,'+###''+#+#+:;'#+#';+###,###++';;++''':+'#+#@#+++;':';:',;::.`
                                        ` ` ,:;.`  ` ``     `     `  . `      ` `.``.``````..,,,,:::;:' `#####@@#.+#+':##'::.'#'+''+++'''::##'#'''':+,+'+#+#'++;'#';##+';;;++':;'+##@+#'+#+,'';::;:,.```
 `                  ``..               `    ,+#,`     `                      ` ````.`.``.`.,.,.,,:::;;;':#.#@@###''##'+;#;+':,++#:#++'.::#+#@+.,#;#'###@#++;#',+''+'##'+',+,'';::###@##;'##+;;+;::::..` 
                   ```'+` `                ,,;::`    `                       ``` `.',`.`.`...,,::,,::;;@:'#'#@++++'##+#;#+@+'+'#'#';.;+@@'##;+#+###+###+#++## +++###+#';',##;+:;###@@'''#'#+;::;:,,..., 
     `   `.        ,.`':``    `             `++,` `              `     ` `   `````.;.``...`...:,:::;;';#;#@##+#'++#'##''+###++@;#'#+###+':+##@+###@+##.#'+#+;+#;#;##+ '';;;;:''+##++:.#'+#@';;::.,.```; 
`       .    `  `    `,`                    `.,` ``             `         ``    ```........,.,,,::;''++@@'#+++++#'#;#+#+##+#+#@###@'@;#'#+++@:+#+###@#++#@#':'++#'#;++++';::,'#+@+;++'+++#'';;::,,,.``` 
                      ``                     ``              `          ` `  ` ````....`.`.,,::::';++;@@##++++#;#;;@++##'+#+;+#@###@####''+#'#'+##@##++##'#;,;;'++##''+;'+;,,+@+#;'##:+'+';:::';,:'.`.``
                        ``        :          ``                         ` ```` `.```....,,.,:;:';',###++++##++;##:''+#''++##@@.+#@#+@+#++#+'##+:@;++#'####;,:+#''''++:++'+:`#''#+:+'' +;::::';;;,'+.```.
                `     `  ``                                       `  ,  ` ` .`` .```...,.,,:;'''''##+'':#+#';''+#'#+:'#+#;#:@@###@#@##+#+'+#####@#;#+;#+'+++#+'';,++';:;:+:;+;:#'+#;+#;;''';':::,++```  
      .      `  `    ,    `                 `     `                      `` `` .`,``..:,,,::;;''+##+;:,###'+'++#';@'####:.#,#@#+@#@####+#+##+#+@#@@+#:#'+#++'+:','#+;';:,':'#;`+++'+;'++;';;:;'';.:`.`..
              `      `                       `                 `   ``     ,`````````...,::::;''####';'+##+:'';@++'+#++,#+@@###@+###@###+##'+######'####@++#'+;;:;#'+;+;;:':'#'#++@#+';'''';:::;+;.```..,
           `       `                   `                      `    `;.` .     `````....,:;;'''+#+''';:#;#+'++# #+##''@#+@+#@+#+:#;+#####@:#@@#@##'@@@###@,'+;:+,'#+';:',,:+++'#'+,#';''';';:':.,,. ````#
                                               `                    `       ````....,.,,;;':;'+#+'+';;''+'#+#+`+#+@##@###'+#+#'##:'@+#@#@#@#######'#####+#`#',':++';:+';.''#+;+;'###,';''+'',:.`,```.``+
`            ` `                         .                     ` `  ``       ````..,,,,;;';;'#+++#+''##'+##+:';@##@#@'#@#:###@++'#,'+##@@@####@#@@'##+##+;:+:;;'':;;':;';:;:;+#+;#';,'+';:+'+:.``.     ,
      .   `                                    `                   `      . `,.`.,.:,::;;'++#+###':;'+':#'+:,+#'@@@#@#@##'+#:#@##;',:'##@@#''##@@##@####'.,'';;:::::;:;'';+;:+''+;,.,;':+,+;:;,`..` .   
                                      `                       `` .` `     `````,.,.,;;;++++####'##++#,++.'+.+@'@@'###@+##+#`#@#+'##::+@@@@@#########++#+,;.::;,:,;:,;:;:;;;+#:'';+.,;;::+':;:;.```` `   
              `    `         .                `                  `        `.``,`..,:::;+#:+#+##.,+#++@## :'#+##@#####'+##++@@#+#@#;'+;+@:#@#@#@##+#+#:+;+.;;':,,,::::'';:,;++'#++;.,:::;;:,,',,... `    
          .        ,`    `             ` ``              ``        .    ` .`.`..`.,,;''++'+##@',,+'+#+#:;#@@@@+#####'#########++@##;:;###'#'#####++;+@:#+;;,:';:,+,;;'++::+'+++:':':'':'::,..,`````   ``
 .       .   `                           `     `               ` `     `.``,``,..,,::'++;'+###':#++@#+;'+#@@@@@##@@##@#@+#'#;+#+#+@#::+@@@'###+#+###++@;';;;';:::;.++'++,;::'+#+;::;;;',:::;,::`..  `   
              `   `` `                           ,             `     `  ``````',.:;'+'';''##'+;::#+##@'+#@@@@@#@#@@+#@@@@#';#:@+#'@+:,::@###+##+++##+#+;,,'+';,;:+;++#';,;;;;+;++;''; +;;:,'.,,.`  .  ` 
     `   .         ``  `      .                      `  ``  `  .,.   ` ``````..::;;+##';'#@#@#+#;+++##+@@@@@#@@#:##;#@##@#@';`':';#+:','#########@#::''::::'+:::+';+'#',,'`:++'#;:;'##+''',,....   ,  . 
     `                             `             `          .` ` .```````.....::+';+#+;;'+##':#+###@#@##@@@@+@#+,;###+#####'. :++@#'+';####++#####+##'+,,:;':::::;'++';:+'.:##+++':::;'++:,,,.`:  `     
        .            `  ,    `     `       ``    `     `    . `.;```.```.:..,,::+++++#'++'+'#++@###+##@##@@##+@##;###'+''+#', `#++##'';###++###;@#++++';.;';;:.,';':'':;+'';+++#'#':::+';';,..```'      
.                                  .  .        .`   `   :  `  ``.`..``,`.`.,::::;'++'+;'++++'+++####@##@@#@:@#@##+###++'#++''.'###++#'###++;##@@+#+''.+';;:,,..:++'';::;'+'';''#'';:':'';;:.,.`` ;      
                         `                  `  `             `` ` `..``..,,,:::;++';''';'#+;:#@#@##@@@@@#@#@@,+''@#':;#@#+:+#+';#',:'++#+'++'@#`'#+::#,:;:;::;:';';;;::;+++;''''';':#+;'':;:,`,,``  :   
                              `        .     `             ````.``````...,:,::;:''++;;';;':##@'#@@@@@@@@@@#####+#+';:'+'@':##++##++;#+++++##@#,+#+#,;;,::''+#`;##+;;:;;#`:'','#+;:;,;::;,;..,,,.,`  `   
                   ` `      `      .                      . ` `````.`,`.,,:;;;'';''::;+#+'###@##@@@@@@@@##@#+''',#';+'+@#,+###++#+#++#''++;#####'#+:.:',,:,;+##+:+;::;'' :#+;+;';;;'';':,,,.,,,.,` .` ` 
  `              `                         .     `        `  ```````...,,:;###';'';::;`@++###@##@@@##@@##@#;+:';.:;+.;+;#+'#+++#@++##'''#++##+@;':'+'':::,;+'+#++''';:'; +'++'';;;;';':,,.,.`,:,.,`     
  `   `   `      :.    `                           .   `    ```````.,,,::++,+@+'#+;;;+@++@+##@##@@@##@###+.`;'+'.`,;:;#'++'@++##+##@;;,#+++#;++'+::++':.,;;''+'#;+'+'''#+#++';:;;';'++;:,....`.,``,   `.
            `    #`                   `    `       `.  `   `` ````...:;:+;++#+'+#:;;'+###@`#++#@@@@@@+++@#:';,#',``:;@';#''#:'##;#@`+;:;++;###';:;''+;.,.:;'++'#'.++''++@'''';::;;;''';.,`:;.,..```  `  
   `     ``        `                  `             `    ` ````,...,,;+#@#''##'#';;'+@####@'+#'@@@##:;;:;:,;:';+:...,`:'';;+'@+###.';:;'';'+#'::;'#++,,,::,+.#'';'''++#+++',''';;;'++':;,.`,..,````` `  
                               `                    ` ` ` ````...,.,;'+#:.++##'';';`@@#+++'+#@@@@@#'::,;;;,:;,,,,,. ,.;:;+##'##@@##';:;::+'#`';;:++::,:+;;;+'+';;:'++''++''+';';';+++;::,..,.,`.`,`     
 .                   `             `     `      ` ```  ```````.,..:;'+##` ++#+;::;'+@#+#+'+#@@@#@@#;,;+''''::;,..,,.`:',;#:'+'+@#:';#.'# ''++;':;'';:;';';+#';:;;,'''`;#;;'':;;;;;;++;:,.,::,..``,,    `
`        .  . `                   `         ``    ` `` ```.......:;'#''':''#;:,:'+'##+#+'+#@@@@@+#+';;'+##''`:,...:``:''@++,;+@###'+,,'+#++':::;:,;.+;;+#'''++:':';;'+;'+';';'+;;''';.,...: ,.`` `,     
 `  `               `                      ,  . `   ````,`....,,:;;'##:;++#+'',,''##+#+'+'@@@'##++';;;'#+ ..: ..,,;:;:#+++;;+@@+#''',;;'''#;,;,:'.:,;;'@,`#''';,'';'';'';;'';;+;'#';,.,..:.,::.`.```    
    `          `          `              ` ` .  ..````...,.:,,:;+++#+'+;';; :,:':+'+#+'+#@@@@##++'';:+',,....,`,,;,:''+#'#'+#:#;#'+';;# '''::,;+,..:';;#,`+;':';';'''';;;;;;::;;''',,,,....,,,:,`.  .   
 `       `                   `.         `    `,   ``.`.,:'';,:;''@#+++#++;++:;#++'##++'#@@@@###++;::#';,````..@';'.;:''++#'+@:'+@@#'#+##,::;'#+:,:::;+;'++'::,;#++';';;;;:'';;:;`,::,:...,::;'.`    `   
    `          ` `      `       `:        '.  ````.`.::''#+++;':+#++'+,',':;;+;###'+#+##@@@@@#+':,,;,..``` ```';:..,+#+;+++#+;++@@@;#'++#';;'+;;,';'#':';'+:':#++'+'';;:;''';;'+'':,...,..;;'#:  ``     
                             ```.`         `` ``.`.`,,;'#@###;:'+;;+++:+##;;'##+@++++++@@@+@++;:,.,```.``   ``+;:,,@#;'+#+@'##'@##@'#+':+;;;''','+:+'+'+++;:'+'''''+':;;:;''#++''::,.,.,.,:+.,:  .  .   
                        `  . ;`.;.  ` ``  ` ```.``..,;'##@@##+'#++#+#+'+#+:;#+#@#';+++###@##'';,.``````+,,``::#;,,++#;'#@@:;;+##@##'+':'++':::+;+:#,'''+#'++ ''+++'+'.:;;,;#'#++;:,,,,:,``.;:;:     `   
  `              `       ,   ``,:,.``      , .````..,;'+@',:+@####+#++##'::#+'##+;'##@@@@@#';;:.    ``,,.:`;'+;:;+@@'''@+';.#;##'+:##:#'++';',;+'''';+'+###+;##;';'';:,;;+'# `+':;,::,,..,.;;'`.    `   
  #.     .     `   ` ` `       .;.'#     . `````...,:::'#:  ,##;'#+''::+;'''''+++#+@@@@@##'::;:` '      .   ',;@';#+++:'@+:#'#,#++':,#@''#:;:;;+;'',;'+'##'##;'+';'':::;'''##;';,,::.:`.,...:``   `     
  +.  `              .    `   ```.#+  .   `` :.`..,.:;;+#:  `'++@+;::,::;+;;##':#+##@@@@#';,,,.         `   ':'###'###@#;'####,#++':;':'';,;'+';:;;::+;'#+++'++'';;'`,:;++'#++;,..:.,```,.`.` `         
      `  .                  `` .....`. ``````..`.;:,,;;;@'` `:#+#+;,:,,,#+#'+'+###@@###;';,,``             .,:,+@+''#'@#';+##;#:+''.,#:;;'#'++';;'..;+:++++'+';+,:::'.'#:'+++;:,..,..` `` ```  `  ``.   
`                      .```;  `.` `. ```````````,',,:;;;##;,:#'#;;::.:`:+#++++#@#@#@#++'':.```       `    :;:`;+;#'.,`'':#+'##:+:+::' :''+++;+';;'',;+++'+''+++;':,;;++`#++#;;::,:,.`` ,`` ``       ` `.
 ``                  ``  ` .  ``. `  .,````````..,.,:::;'+@@##@+:+;,..''#+'####'#@@#+';;:,``              ;,`:+'#+;@++;###+'#@#:;+'+.;';':#';;,;:++;'';;+;+';;::;::;;`#`@##'';.,'':..```  `    `        
    `           ;   `      `    `   ```.`.``.....,,,;;;;;##+@@@';+';:':##'+@+:@'###+';:,.`          ` `  ``+.:+#''##+,+@#''@;#'`+#+'+;+#++,';';;:'#;;':';:+;;;;:,;:::;;# ;'';::.,:,.`` ``  ,``` `       
              `      ``` `      ..`  `;....`,.,.,,:;'';;'#+#@@#+;' #;;#+@##@#@@#@#++;;:,``              ``.;,+#'+#+'::+'#'##:#+,'+''+;+@+`':';#:;;;;::'+;;';'::,.::;,';+#+;;:,.`..,.````   `       ` ,  
                 `     ` ..      `` ``..,...,,,::::'#+',';+###+','.::'+++@@#@@##+#+:;:,.``            `  `.'#+'++##:;'.'#'#'+++;:+:'';+++;;;'''`:::;;;:+::;;'::,;:,:::''##';;,:..,..,````` ``    `   .  
,                        `.`  `   ` ``.::,,,,::::;:++':,:'++:+';,.';'''+@@@##@##;++:::,``          `  ``';;##@#':+'###;+'+#;:'.';+'+'+'+;+;.'';#:::,,';':::::,,,::;;;;;'+'+;,,.``,`...`` .``,    :      
     ``        `   `   `  .         ```,:,:::,;:;''+#':';''+:.+:,:'';'+@###@+@#+,''::,```             . ,+++##;@###@##'''':''#,#:',;+'#;'';':;;+':+:::';::::::,;'++,';::;':;:,,.`..``.```.:`.    ``  ` .
      .;        ` `  ` `` `  `` `   ``.;''+'',,:;'#+',:;'+'+;,;';;'++'######@##`#':,,,``            ` `'+##@@#+#+'#+#++#::;@#+'#;;+++'+'+::;+#+++';;::;+,,:,:';++++'';;.;':,,:,....````. ```.  ``'` `` `
      +.`  ,  `          .  `,  `````:;'#@@#;;:;'++;;;;;'::;,,;#;'++'#####@##@';#;:,,,.``        ,   `,+'#@++'####++##+;:''+'#++###+'';+#:;:'';';';:;:';';;:';+###+;;'::,,,.,,.,.``````.`,``` ``.;`   ` 
`     ,+ ` `    `       `       ` ``,'#'@:'#';'++#+;.::';;''';'#+;##';'###@:#+.++::,,..``    ,.  ``  ,'+'.@#'##++#+#+@';++++++###@#++##++,':'':':,';:,:''`+'''++#+#;::;::,,,.:.,,,.````,`.:` ,:``.``  . 
   .             `   .  .  ` `   ``.,+#'; `++;'#'++'':::++;';:'+'##++#'+'@@@#+++':,,,.```           ''#+'##++#+#@@#+'@+;,:+'#+#+@@:##+ ',:::;:;::,;,,;;+++'''';+#'+;:,,,;:,,:;,..```..,``.,`  :```  ` . 
       `          `    ``` `   ` `..,;+++ .+++##'+''::::;:,:',+'+####+;+'@+##+#''::,:,```         `,+##;#++##+###'#,'',;;;#++##;+#+##`.#':;;::,:,::,:;;:;;+';++#+';:,,,.:;,,:::,...`.`.` `` ``` .;  .   
            `       `       .``` ..,,:'+@:+#++;.+';'';,:+++;''+#+#'##'##@@'+#';;+:,,,.``      `   +##++#@++##+#'.,+++'''#@#####:'+++# `+'';,;;::`.::';:::'@'''##+;;;:.,,:,,,,:,,:.``````:.````   `` `   
    `           .    ``  `` `` ``...,'''+@+'++:+';:'+'''++,'++#+#.+#'#;##:+''';'#'`;,.``   `    `#+#'+#;++'++#:;`:+::;;# #++##++'###+##';:;::#;+::;;+:,,;# ''+#++:'':,,,:;,,,,.,,`.`` ```, `..          
                        `;. ````...,:;'';';'+'++:..,''++###'++##+#+###@##';;::'+;':':.,.      ;,+++'#+++#+#+++:';@,:#:+#+'++#';'#@##''##'';'; #+'';;':;;'#`';#';'++;;,,,;;,;:..,.`..,.`` `   `   `  `   
                      ,  `````..,::::;+''+;;+';;;,,;+'####++##+@#;#+#+@##++::+:;;,:;...``  ``:':++'';++#++';+;:;+,;#':''::'+++###@'#'#@++';,:#+';::::;';''+:''';#'::':;'+;;....````````    `.   `       
                          `.``..:.:;';+''+'';,::,.,'+'+##@@##+'+#+#@;@@@##;,,,:':;::```.``;,'+;'++'#+#+@##+'.#++;'#'+':;:'''++;#++'+'##;'::::;;;;,,,:'+++ .## +:;;;+';:'#:,`,.: .``:.`` `             . 
         ` `           `  `...:,::;+'+#+++;'::,;::'++'';+#@;':+##+###@@###: .```,:;,```` `.:++@@##;#'###+#``:##:,;'#`';+.++''#+#'+###+++;::';':::,::':;'',:## ++';:''+:;;,,:.,:``.`.. `    `            
                       .`.``..,,:;'+#++'+''':,,.:+###+##+'@@++'+;+'+#@@@##:``  `` ` ```.,';####++':;###;# ,,###'',:++:;:,';'#;'++:@#+'';:;'+++'+:;:'##;;:#+';@+;:;;;;;:::::...,``.``: ` `` `            
 .  ``                 ```.`.::';'##++:'''':,.:'#+#'#;'#@+@'+###@;+'+##'#'.`    ``  ``.`@#;###''.';'@,'#++;;;:'+#;:;`.:':+':'+,;+@##+;::+'+'';;:::;';:;;;;:;:'::,;;;';:;,.;,,,`.`..,.`,`.  ``   ` `.    
  .'      .          ` ```.`,::'+#+##;:;;;:,,:+####@###;+@:##+++##,''+#+;:.`    `````,.###@@###''#@@#@,,.,:',';@;+:,,'::;'';;'+'#++#';:'+''''::::::;;+:::,::,':,::;'''::,,.:.:.,...:`,#;`    .`  `      
`  ;  `         `     `...,,::;;''+'::;;:':.,;+@@@+@##+;@++#+;;'++;++'+';:,``.``...::'+#+@+##'++'+,''+:',++'#####';;'',:;;;;;':'++'';;+++#'+:;:;;:;:'+;:,';':#+''';+';;,..,;,,.;...,.: +` `      ` `  , 
 `            ``    ` `.,':::;;;'+##;#';+;:.;#@@+##@#@#+;'###';;;+++++#';;:,`....,,;##+@##++++'@#''##'.+'+++;'+#;:.;;;;;::;:;;;'+'';'''+':;+''++'++++';;:;;:;+++:';''';..,,.,,,,...,`.;:  . ,    `      
`   .      `  `     ```:' ';+';+'+#'###++;,:'+@#@@+@##+#'###+'';'+###'#';::, `,:'##';###'#''+:##'#;#+::;;;+;#+''::'';::,:;'':;;'+;+'''+#;'++;'+'++++'';::';;+@++'';;+';..........`.:..`.      ,  `      
  `              ...`.`'';;;'@'+@#'#+@+':;:#@#@#@+#+@@'#';##'''+'+##+++#;;:,.,:'#:'@@##;+;''+++.;;:';;;''#,++';:::;:';::::;;:;'';+#;'';;;+'':::;+###+'::;;;',.#+':;:+;,.. .`.``.. ``,`,``    `          
      `   `        ``..,::;'+#@@#@@##+',;++@@@@###+#+:'`:';':;'+'+@##';,:,:'''+#,:+@#'+#++@##:`.##:+;'++@++;:`.;,:+;+';';::;,;'++;+;'';''+;:;,:'++#+#::';;:'.`+++;::;:..` ``.```` ..``  .  ``   `   `  `
   `     .;       ```.,,:;'+@;@####::';'+##+@#@##,#@',;'#+:::;;+#+#@#':,,:;'##+';#+#++++##'#::.;++'#+'#'#:':;:;'+;#+;:':':;:;;''';';;':'';::,::+#'#+';;';.,:##+'+::;;+.``````.`  `.`.`,   `;,`,.  '     
        `#; `.     :.,,::;+++'#@@#+:::'+@':+@##@;@##;:##@#':,:;;##@+'#,,',+#'#:+''''+'+;',#:,',+'++';+##':+';'#';;'''''';::;:;'';;;;':,';::,,;'###++:;:':..,';';+;:::;.,.```,`.```.     `  .   ,  ,     
     ` ``+;    `  `.,,,'';'+:'+;++;,,,'#`#@#@###@@#',+#+',;,;,:;::';;:.+; ;:'',##;:#@'.'#,;.,:@+##@'####;;+''##++#+++;;;;:'::;+;'';':'::'';:,'++#++;;;'',...,,:;,',::,.` .``:````` `..    ``     `;     
.        ``        .::;#''@++:#+#':.,:#@+#`;+#'@+,@++;'@;+'+;:;;'::'++++':+..:,#,,'#';#;;..,';+#++:+;@#+';+'#+++#++';:;';;:;;';'++';+';':''::'++++;;;;:;,.,.,,:::;,., ` ,``````  .`  .`. ``     `.;   ..
          `     `` .,:;''+#;':;; '.`'+@##@##;#+#+#+'';###+'++++'@ +@';:+;':;+;'..'#####`''';##'#;'#''@#','+;+#'#+''+;;;'';';';+'''+''++';;:,:'+++;;:;;;;,..:,;;;;:..``.`;,,`` ,`````   , . `    `   `   
   `  ``  `.   ```..,;''+#@;.`;;#'`.'##@#+#@;@+'++';;,#####+''+,;+##+;,@+++++#,:@##';#.;+.''@@##''#'###+;''#'+++++'';;;;';''+':;'+'++'';;;::;'+';;:::;',...:,::,+,`.```.;,`````;,,.   `.           `    
        `  `  `.``.::''''#.;:+.:;:,:##@@@+++#####';,++@#@##@#'+;+#'+#+:##@@@'++####+,,;+:'##+';+:'+'':`;+'###+';''''';'':';''+';'++'';;''+;;;';;;:,:;':,...:,,+#'.``., `.  `.``,.:. .``  `     ,`       
,     :  . . ``:..,:;+'+`+''':':',;+#+###';+##@;'';+'#@#@+@#.'#:+'+'+#'#+##++#+:'+#+',;;'@;;@;;''##:'',++#+@#;'++'';;;';;;;;++';'''+++;''++''::::,,';;,.,..,,,;:,```.```, `` ` . `` `.   ``             
  `. ,'       `,,,:''+#;@:@#''. ;:;++#@@+#::+++';;'##@#++##+##';#'+#+#++###'+;,,+#;,:''''';@+';##'+;:'''++#;#+'';''''+'';:;':+';+.#'+##+'+'+;::::,,:::.`.``.,:'',```..,.   ```   `   .`          ,      
      `` `  ` `..::'##,'#;#;:,,+';'#@+@##+;+;,''+++#@###'@+'@'+@#+#@+##@@#@+':,+,::##++@#@'+'++#';:'::':;+'#;++;;''';''+;;';#;,;+##++#++'+'';::,,::::.`.`:.,,.;:.`.````, `  .  ,` ` .;`` ` `  `  `      
 `  ,        `.,,::'#+ ;@+++ .''''##;#@##+;+::::;##@#'@#@'@@@@#@,'@@#@+@##:,:.;',;;#;#+++#;:,;+##::;::,:;'++'++':+';;;;;;;;'';;;'''#'#+;'#+;';,,,:;:;..``..;.,,,``` ,   .   ,. . ` ``   .` .     `   `  
` ` `        ,,,;++'##@#;#+:#'#::;'+@##@@#;;+;:+#+'##'@#@#@#@,#@#+#@@##;'',`,';:;;+#+#'##:'::+++:,,;,:''++'+++++';'':;;;'';'+;;;'''+'++;+#;:':,,,,:,`````.,.:,,.`````` ` . .. `            `            
`          .``.,,;++++@@'@##;#;::'+''+#+@'#;'+:++#+@###@++##@@#+@@###++',:.,,''+++@###:+,+''+'#+::;:::'''++''''';++;;:;;;;:'';;;+''''++:+;;;;:,,,,```.`.`...:.,,`.``,.``   `   `  `       .    . `     ,
    `  `` ```.,.'##+##+#'#@#;:',:'+#;@++#@';;'#'+'@#@#@##@@###;:#@@#+@.;;;,'++++#+''++#;+;:';;;''+:;';'#+'';';;'';';;;:;;':';:;;+'':++;:#';;::,:..``````.`.,,,:```` ```      `    `:       .  `      .  
       ` ````.::;+'@##',+@:'#;.:,;+:'++;+,'####'+@+'@@'##+###@@##+@#',.''+##'#+##'####,;:.:':;'+#'';:''+++'';:'';;;;:;::;;;;';:;'::';+;;#;;:::,.,```.,`.`.,.:;'``,.., ,` ` `` .     `                   
        `````,,:;;#@##';'+#'.;'':'''+#+,,;@+'#:+###+#@'#@@;++@+#+':,'#+#'+##@@+#++##+,;',:''''##+'::'++#+'''''';';:::;::;;;:;;''''''+';;';::;,.;.```.`.,:,.,:;:,`..,`.` `` , `` `      ,,    `          
     ,  ,`...:,;''+###,+#;:``'+;+';+'+.:'++#''+;++@:#'@#@',''::,:,,'@#++',;'@@@:;++'+'+'++#++###+';+++#`+'''''';;'';;:;;;,;;;;''+';;;:;''';:.``.``,.`.,,.,,,;,``...``````` `  `.     ` ;'               
  `  ` ``...,.:;;'#@@';+'+#,'#;::'#::;,:,'#+###'+';`#+:++#+'`.:'#,;@###+#+'++'+;;';:;:;++#'##+++,#+:+'+#'::''+';;;;;:':;':;';;;'++;';::;;':..````.,..,`,,.:..```...` `` .`  `.  .`                      
 `     .`.,,.,:;'+#+#+#@;;'+++`.,;+;:+.++`;,.+;#@:,'':@@@+;':.#':;++'+'+#;@:'+;:;',::''+##@+#+++##+'+''+';;;++';;:;:;;';';;'';'++';:::;'::,,.....,.,,:..``,```...,..``` ,  `                            
  `    ``.,:,::'''####;+#,##'':: +#+::,;.,`  ``+;+,;,@#;:,'+:;#+##;'##+;,;'+#',:;;;;;+,'@###;#'####'.''+'',:;'';;;;:;;;'+;;;;;'''';;;;::,,,..,..,.`,,#,`   ````....;``        `  `.                     
  ` ` .``.:,.:;'+#####+++.'#:::,#+#;+#+++;;   `.;+'''';;+,'#;@+'++'#';:,';';++::'+'#++#+@###@+###@#+++''';:::;;''';;;''@';;';;'''';:;;::,,,,...`.,,:'`.``  ```...:,+.`      .               `           
       `,,;;::'@#:+#++##:'+'#,'#';.#;`#+.':``.;#'':+#;'':'+;,;+:'@#++`;.'+#'';;+#+'#@@'@+###@#@###+''''';;:::;;:''';;;;'';+'':';'';:;';;,:,,.`````..,;` ``.`....,,.:`  ,  `    `:              .`       
 ``   .:':;'::'+###+###+;+'':+#''+';';+,#+:;,#'+::+;+'+'+##';'+'##'::.;:';;':,+;;#########++####++''.+'';:;::'';'+;;;'''''+'++;:;;';'#+'::;;...``` ``.`..:.``.```.`.` `,       `:                 `     
      .'::;,;;+#+##++#+#'#+#'.#+;',.+@++'+'##.'+#;:#'@#;;,;:;''@@',;.;:;''':.,'''+.+#@###;++#+++++++';'';;:::;';;'':'#'''#++:;::';';+ #;:;+;,``.```:`.```..,..       `., `  `  ``               .       
  ` `,:;;.:':++'###'+###+#'+;.,+'.:;@##+;#@##+#+,;#,:+#;#:++;++;#':,:,;;::,;;:;+'+''##++'##'#++++'++';;;;;:;;;;::'''''''+#:++';;';;;+`#;::++.````` ```` ``..`.`  `   .``                     .  .  `    
  ````:;',;;'+;+#+#+++,+ ;##'+:';+@@+#;:#';@##@;+++::++#+;'+'+#+:;;;;:;;,,:#',,+':+;'+#+##+#''+'+''';;::;;,::';::;;;;'+++##':;';;;:;'#;',,::``````.````..;+,`  `   ` ` `                 .              
 `',,,',:;'#+###++;;+##+;@;'',:';;'##+'+##+@@':;####@'+';'+#'++:;;+';;;,,:+#:','++'#####+#++''+';';;:,::';:,;:::;::;'+++#+';'';;':;::::;:,,..``` `` `` .,;'.  .       .            `                    
 `',:,'#+'':+'+#+''''++;@#';#++:';#@#+####+;;;#'#+:+:+:''#@:,,;''';;,.,,:;:''+,+#+#++#+;+#;+';+';::;:,,::::,:,,::,,:'+###+++++++';;:;;;;,....```.,`` ``,:``,    `      ``     .     `     ` `    `      
  ,,;::++++''';;+';'+'++++:@:;,#'++,;###,+;###.+#+:,:+#'+#;,,:';+;;:`.,;;::''+'';'+#++++'##++'+'':,;:,:,,::,,.,,:,,:;++++###+##+''':::.':..,..``````````.` `                             `           `  
`.::::+#+';';';''+'++####++++###+;:;+''##;##@#+;;;:+'';,;',:;+++''',,:,;;':':'';;'+'#+''''''++;';;:,;:..:::,',,.:,.::;'+#####@'##+;,,:::,,..,.`.``````         `                             `       `  
.+':,'';#'''.'';++#,++'#;+`+';;;@#;:#;'+'++#;,:;#++';';++'::'+#+';;:::;;'';'#+;';++++'++''''';':;:::,;,:,,,.,,,.`..:::;'+#@@@@@###';,::::,...``````.`,`           `  `                       `  . . `   
.+;..''+';:++;';;+'.##+#+,';:''# ### +#'';+,,,:+;+#++';+;::;+#@##;'#:;:;:;;;';:;'+,+++''';'''';:::,.,,.:,,,:,.,````.,,'++#@@#+#'##+';::,,:....`````.,,      `                               `     ..    
.:.`.,::;':++'.;++'+++#;;,:::';#.#'#.#++#+;::+#';+#'+'';'';;;+#+:';,:;',::;';+'''''+'';';;';'';;:,:,,,,.,...,.,````..,;'+@+##;+#@@#++::,..,:`.`.``..++  .    `        `                                 
..,';,;''+:;'';;;+'++::`:;+;;''#+#:;#''+:;'##@@##''+'#::+;+##;#;';.:+'''+''++':'';'';::';;++;;;:,,:,,:..:,.` `.````:.::'##+';;;;++@@@'';,.````.    `##`         `                  `              `  `  
,.,,',::#;;;+'+++'''''''++#+#+#+';+';,',+#++###+';'+;'##@++;;+;#;;'#.++#;';;#';';;:;;''';;+''';:::::.:.`.`  `````,``..;+##;;`,..,;+#@##':,``.:;   ` ``          `                                 `     
.::'':''+;''++''':.:;++''#@++'+'';+::;;:+###':#@#'#;;;'#,''',+#'','##+' ''';',+;;;'':''':;;;:;:::;,,,.```  . ` ` ` ``;;++'';:.` `.:+#@#':.```''    `            ` `     `                          .    
`,;:,.:'';+'+;:';'+'';+'#'#++#+:';.++;''####'####+@';;''..`+:;;'+##'+++'''#''++;';;;;;+#;;':;:';;;:;,..``` ` `.    `:,:'+@#+:,`   ,;+#@';,   .`  ` `                               `                    
`::;,;,;;;';:,:'':##'+##++@;+'++'''+####+;+#+#+#+@'#'',+;':,,,;'+##'#++'++`#'';:;''';';;:;:,:;#;:,:,,:.`.#`   `    ,.,;#+#@#+;.   .:;+@#':  `          `               `                              ` 
..:,':;:,:;,:''#+'+####'#'#+##+#''+##++'':'###+++'';++:+`:++'':+++##++':';++';;':'''';;':'',,,.;,,.,.,;.,'` ,``     `.'`++#@@+':,`,:;'+@':`                `                                         `  
`,.:';'+;;,;''+;++++#`+#+#++#;#;#+##@#+';';+#+'::..':''+'++:+''+++#+'+'';;+;;;;;;;;';;;;;;::,:;,...,..` `.``    `   ``:+;+#@#@#+;:,:;'+@+:`           ` .`                                            ` 
``.:':'#'+';+++#+'++#####++#'####+++##+#;+'#+;''':'';'++#+';'++'+++'';''';;':;;;'+';:::;:;;:,:,.`.`...` ``   `  `    `.,:;:;#@@@#+'+##@#+;.     `            :    `                           .      `  
,,,,.;,'+++',##''#+++++###:#@@`,#++#'+;;+#+#;;';';'+#+'';':;''++;+''''''';+;'##;;,::,,;,;::,,,,....,;,````. ``  `  ` ``.,,''++###'@@#@@#':`   ` ',       `                       `                      
`..,;++#+;;'#'+#'#@#+++####++'`;##@+#+'''#+:,;#+''+'+':'+;'+''+'+'+++'+''.+;'+#;:;,::,,,:;,,,:...`,.;,` ``    .       `.`,:';'+#+##@@##+':``  `        `       `              `                         
`.:.;,;':.''`':#+##;@++###+++#+###'#+#@''+;:'++,'++++''#'+;''++'++++'#'''+#+;'#:;::,;:,,,,,.,,,.......`   `     `     ```.,,;''''++'#+#++,  `` `                                `                       
`;:`:'';;:;''''+',@ ;+::#';#@##@##@##;#++',:'++++@+++''+'';;+;+++#'#@#';'+:+;'.;:,:,:,,..`..`........```   ```       `  `...:::''++++#';;,``                    ` `            `              `     `   
.,:,,;+;;++:'#;;;+#:###+';;#######'###++,;:'+'#'#:++'+;'':'+''''#;#:#'''+'+';;;;.,::,:,..,.``......`.``   `  `           ``.;,,::;;;;';:,.``                                                        `   
` .:,';'#++#',+;';#+++#:;'+''##+.'+#+'',';'++++'# #;;''''+'#'+'''++.#+';''';:::,,,,::,...`.`......``.   `        :`       `,,..,,,+;,,,,,..`                      `                          `          
 ..,,'''++:'+;+'':'#:+++;#;'':#####+#;+;#'+':+';#@#;+';;''+'','';'+###++';;:::,:,,.::.,,.``,.:`````      `    `  . ,    `  ``````.;;...`.,.  `     `     `  '                           `               
..,`;:';++''+#':;'+#';;#+'##;,##;+;#+#;;+;+++#+''+;#+'''+'';;'+;';'+`.;';:;::,:,,,,`:,.,:`,`,`.` `       `     .       ``   ` ``.```..````             `    . `                       . `    `          
....,:,:++:#'+#+#+#'+#++:#'';'#+#;+;'::;##'#+;;+;'+'@';+;'';'#;+#'''+'';;,,:;,,,,.,,,...,.````         .. .   .                 `````.` `    `                                        `                 
`.`.``.''+:+''###+'+;#+''#'##+@#++###@#+'# ++;;;+;''+'';'+;'++.#+;';;;:::,,.,......:.....```                              `   `                        .              `         `               `     . 
`,```,;++;'++:#;#+':+#++@''##;;++'#++#'###@#';'#+;+'+'+;;;'''#'.'';:::,,:.,,.,,``..,````.``  `  `               `    ``                 .              `              `  `                      `       
 `,``,''#+'.:;+#+#,'';+##+,##  '; '@+'##';#;''+#++''+''';;;'''+';;::',,,....,..`.`.``.`.`  ,``       `        `                         `        `                                           `          
`, .`.;#'+, ,+########+'; +## `#; :#+;+++'+:'''#+;:+;+;;'':;;;#;;:::::,,......`..`` `     `                      `    `.    ,` `     `       `     `       `        `                             .     
`````.,;:;, ##++++,##'### +#+'#+++'':+''''''''+##'+';'',##''::'::::;,,..,.,.`.`.,```     `        `            `  `        ``.                   `             `        `     . `                       
`.````.:''+#+'#+#++++++##@#+'+';+#+'++'+;';;''#,+';';''++';.:::,:,;:.,,':,,.```,``  `                        `             ` `                                 `               `           `            
``````,::++:+;'+++##';#+'+++##+;++'++';';:;';'#`+'':;;:::::::::,,,:,,,.;;:. `` ``  ` .   `           `                      .                                    .                              .       
`````:,:'#: .';''+#'+#+'+#;+:+++;#+++';':;;::;'+'+::::::,,:,:,,....;,,,:..``      ` `              .                       ` `                                                              `  `        
   `.:,,:+' ##.'':;++ #'++;''+''+++:;';;,::::,;:;':::::,,,,,,,,,,,,`,:,:..       ``                                       ``  `           `                                                  :,     `  `
    .::,;'#@+;#'','#,@';;#;;'+;;;:;:,,,:,,,,',,;:;::::,,,,,,;,,,:.::,,..,.`            ``     `    `                                    `          `     `               `                   ;+         
  ` `:,+;'+''+;'';+ #';';;::';;;::+,:,;,,,.,',:,;'';:,,:,,,,,,,,...:.,..`   `                .             `                   `                                          `                    .   `    
  ```.,.:;;':+;;;;',+#;;;;:';:,::.,,,:::....,,,,:';;:,::,,,,..,,.....```.                 `.              `  `                              `        `                                                  
 `,.`..,.,;,,;::;,:;;';:':;:::,,,.,,,:,,..`.:,,,,,,:,..,,,,...`.``.``.`       ` ,       `                                           `              .                                              .     
 ``,``.,....,:,,,:,,,,,,,,:':;.,,,,,,...,`..,,,..,,,,,..;,...``,```` .;`              `                              .                             ;`                              `                    
`   ``````.:...:,,:.,,,,.:.,,,.,....`.`,...,,.,..,,..,`.:,.`,````  ` .'       `       `                          `          `                                      `     `        .                     
      ````....,.,.,,,;.,....,,,.:.........',..,.....``.``,.``  ``.         `      `    .              `` ` `                         ,                `            `                    `               
  ` `  ``.,.,:`````.`.`.`......```.``````..````.```` ````  `   `                `     `  `           `             .            ``               `