
...................``````````````````````....`````````````````````````````````........``````........................................................................................
..................``````````````````````.......``````````````````````````````..........````.......;;;;.....;........................................................................
.................```````````````````````.......``````````````````````````````..........```......;;;;;;;;;;;;;;..........;;;;........................................................
.................``````````````````````........``````````````````````````````...............;;;;;;;;;;+;;;;;;;;;;;;....;;;;;........................................................
.................``````````````````````........``````````````````````````````............;;;;.;;;;;;++++;;;;;;;;;;;;..;;;;;;........................................................
..................`````````````````````........`````````````````````````````.........;;;;;;;;;;;;;;+++++++;;;;+;;;;;;;;;;;;;;;....;.................................................
.....................`````````````````.........````````````````````````````....;;;;.;;;;;;;;;;;;;;++++++++++++++++;;;;;;+++;;;..;;;;;...............................................
.....................`````````````````.........```````````.`````.``````.``.......;;;;;;;;;;;;+++;;+++++++++++++++++;;;;;++;;;;;;;;;;;...............................................
..................`..`````````````````........````````````````````````````.......;;;;;;;;;;++++;;;++++++++++++++++++++++;;;;;;;++;;;;...............................................
..................`````````````````````.......````````````````````````...........;;;;;;+++++++;;;+++++++++++++++++++++++++;+++++++;;;...............................................
.................``.``````````````````........````````````````````````...........;;;;++++++++;;;;+++++++++++++++++++++++++++++++++++;;;;;;..........................................
.................``.``````````````````.......````````````````````````............;;+++;;+++;;;;;++;;++++++++++++++++++++++++++++++++++;;;;;;;;;.....................................
....................``````````````````.......```````````````````````.............;;+++;;++;;;;+++++;;++++++++++++++++++++++++++++++++++;;;+++++;;;;;................................
.......................`..`````.````.........``````````````````````..............;++++;;;+;;;+++++++++++++++**++++*+++++++++++++++++++++;;;++++;;+;;;...............................
....................`````````````````........````````````.`````.`.............;;;;+++++++++++++++**+++++++++**+**++*+++++++++++++++++++++;;;+++++;;;;;..............................
....................`````````````````........````````````````````........;...;;;;++++++++++++++++*****+++++++****++*+++*++++++++++++++++++;;;+++++;;;;;.............................
....................`````````````````........```````````````````.......;;;;;;;;++++++*++++++****+*****+++++++*+*+++++++++++++++++++++++++++;;;;+++++;;;.............................
...................`````````````````........```````````````````......;;;+;;;;;++++++***++****+**+*****+++++++++++++++++++++++++++++++++++++++;;;;+++++;;............................
...................`````````````````........``````````````````.......;++++;;;+++++++********+++*+++*++++++++++++++++++++++++++++++++++++++++++;;;;;;++;;;...........................
...................`````````````````..........`....`................;+++++;+++++++++*********++**+++++++++++++++++++++++++;++++++++++++++++++++;;;;;;;;;;...........................
...................`.`.....``.`````...............................;;;+++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++;;;++++;;;;;;;;;;...........................
..................`````````````````.............................;;;;;+++++++++++++**++++*****+++++++++++++;+++++++++++++++++++++++++++++++++++++;;;;;;;;;;..........................
......``````.```..`````````````````..........................;.;;;;;;+++++++++++++**++++****++++++++++++++;++++++++++++++++++++++++++++++++++++++;;;;;;;;;;.........................
````.```````````..`````````````````..........................;;;;;;;;;;+++++++++++**+++++***++++++++++++++++++++++++*+++++++++++++++++++++++++++++;;;;;;;;;.........................
````````````````.``````````````````..........................;;;+;;.;;;+++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++;;;;;;;;;.........................
```````````````````````````````````..........................;;+++;.;;;++++++++++++++++++++**++++++++++++++++++++++*+++++++++++++++++++++++++++++++;;..;;;;.........................
``````````````````````````````````............................;;+++;;++++++++++++++++++++++**++++++++++*++++++++++**+++++++++++++++*++++++++++++++++;;..;;;;........................
`````````````````````````````````.............................;;++++++++++++++++++++++++++*+***++++++++*++++++++++**+++++++++++***++++++++++++++++++++;....;........................
``````````````````````````````````.........````...............;;++++++++++++++++++++++++***+++**+++++++*+++++++++**++++++++++***+++++++++++++++++++++++;;;;;........................
``````````````````````````````````........``````````..........;;;++++++++++++++++++++++++***+++*+++++++*++++++++***+++++++++****+++++++****+++++++++++++;;;;........................
``````````````````````````````````........`````````............;;++++++++++++++++++++++++****++***++++++++++++++++++++++++****+++++++*******+++++++++++++;;;........................
`````````````````````````````````........````````...............;;++++++++++++++++++++++++********++++++++++++++++++++++++***++++++++********+++++++++++++;;........................
`````````````````````````````````........``````.................;;++++++++++++++++++++++*+*********+++++++++++++++++++++++++++++++++++********+++++++++++++;;.......................
`````````````````````````````````.........`````..................;;++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++*******+++++++++++++;;;......................
````````````````````.```..................````...................;;+++++++++++++++++++++************+++++++++++++++++++++++++++++++++++********++++++++++++;;;......................
`````````````````````````````````.........````...................;;;+++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++*****++++++++++++;;;......................
`````````````````````````````````........```.....................;;;;++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++**+++++++++++++;;;......................
`````````````````````````````````................................;;;;++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;;;......................
````````````````````````````````..................................;;;++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++****++++++++++++;;;......................
````````````````````````````````.........................`........;;;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++;;;;......................
````````````````````````````````........................```........;;;;++++++++++++++++++++++++++++++++++++;;;;;;;;;;;;;+++++++++++++++++++****+++++++++++;;;;......................
````````````````````````````````.......................````.........;;;++++++++++++++++++++++++++++++++++;;;;;;;;;;;;;;;;+++++++++++++++++++***+++++++++++;;;;......................
```````````````````````````````.......................``````.........;;;+++++++++++++++++++++++++++++++;;;;;;;;;;;;;;;;;;;+++++++++++++++++++++++++++++++;;;;;;.....................
````````````````` ``````````````......................``.````........;;;++++++++++++++++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;++++++++++++++++++++++++++++++;;;;;;.....................
``````````````` ` ``    ``    ``..................```....````.........;;;++++++++++++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++++++++++++++++++++;;;;;.....................
```````````````   ``    ``   ```..................``````.````..........;;;+++++++++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++++++++++++++++++++;;;;;.....................
````````````````````    `` ` ```.................````````````...........;;;;;+++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++++++++++++++++++++;;;;;.....................
```````````````` ``     `    ````...............`````````````...........;;;;;;;;++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;....;;;;+++++++++++++++++++++++++++++;;;;;.................```.
```````````````````    ``    ````...............`````````````...........;;;;;;;;;;++++++;;;;;;;;;;;;;;;;;;;;;;;;;........;;;;+++++++++++++++++++++++++++++;;;;;................````.
``````````````````````````````````...............```````````............;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........;;;;+++++++++++++++++++++++++++;++;;;;...............`````.
`````````````    `     `     ```````............````````````............;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..;......;;;;;++++++++++++++++++++++++++;;+;;;;...............`````.
``````````````````     `    ````````...........```````````````..........;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;+++++++++++++++++++++++++++;;;;;;...............`````.
``````````````````````````````````.........```````````````````..`......;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....;;;;;;++++++++++++++++++++++++++;;;;;;...............`````.
``````````````  ``    ````` ```````.....````.....``....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;;+++++++++++++++++++++++++++;;;;;.....................
`````````````````` ` `````` ````````.```````````````````````...........;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;;+++++++++++++++++++++++++++;;;;;................`....
````````````````````````````````.```..`````````````````````````...`....;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;;;++++++++++++++++++++++++++;;;;;..............``````.
````````````````````````````````.`...``````````````````````````........;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;;;+++++++++++++++++++++++++;;;;;;...............`````.
````````````````````````````````````.`````````````````````````````.`...;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;+++++++++++++++++++++++++;;;;;.....................
`````````````` ``````````` ```````.....................................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;++++++++++++++++++++++++;;;;;;.....................
`````````````  `` `  ``    `````````````````````.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;++++++++++++++++++++++;;;;;;;...................``.
``````````````````` ```````````````````````````````````````````````....;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;;;++++++++++++++++++++++++;;;;;;.....................
```````````````````````````````.....```````````````````````````````....;;;;;;;;;;;;;;;;;;;;+++;;;;;;;;;;;;;;;;;;;;;;;.....;;;;;;;++++++++++++++++++++++++;;;;;;.....................
```````````````````````````````......````..``.....`````````````````....;;;;;;;;;;;;;;;;;;;;+++;;;;;;;;;;;;;;;;;;;;;;;......;;;;;++++++++++++++++++++++++++;;;;;.....................
````````````  ````  ``    `````......```````````.```...................;;;;;;;;;;;;;;;;;;;;+++;;;;;;;;;;;;;;;;;;;;;;;;.....;;;;;++++++++++++++++++++++++++;;;;;.....................
```````````````````````````````......`````````````````````````````.....;;;;;;;;;;;;;;;;;;;;;+;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;+++++++;+++++++++++++++++;;;;;.....................
```````````` ``````````````````.`...```````````````````````````````....;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........;;;;++++++++++++++++++++++++;;;++;................```..
````````````  `     ``    `````.```````````````````````````````````.....;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........;;;;+++++++++++++++++++++++;;;++;.................`...
```````````` ``     `     ``````...````````````````````````````````.....;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........;;;;++++++++++++++++++++++;;+++;.....................
```````````  ``    ``     `````...`````````````````````````````````....;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........;;;+++++++++++++++++++++;;+++;...............`````.
```````````  `     ``    `````....`````````````````````````````````....;;;;;;;++;;;;;;;++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........;;;;+;+++++++++++++++++;;;;++;..........`...``````.
``````````` ``     ``    ````.....`````````````````````````````````...;;;;;;+++++;;;;;;++++;;;;;;;;;;;;;;;;;;;;;;;;;;;............;;;;;++++++++++++++;+;;;;;+++.....................
``````````` ``     ``    ```......`````````````````````````````````..;;;;;;+++++++;;;+++++++++++++++;;;;;;;;;;;;;;;;;;.............;;;;+++++++++++;;;;;;;;;;;++.........```..`````..
``````````````````````````........`````````````````````````````````..;;++++++++++++++++++++++++++++++++++++;;;;;;;;;;;.............;;;;;++++++++;;;;;;;;;....;+........````.```````.
``````````  ``    ``    ``........````````````````````````````````...;;+++++++++++++++++++++++++++++++++++++;;;;;;;;;;;;...........;;;;;;++++++++;;;;;;;;.....;........````.```````.
``````````  `     ``    ``........````````````````````````````````....;+++++++++++++++++++++++++++++++++++++++++;;;;;;;;;..........;;;;;;++++++;+;;;;;;;;;....;.......`````````````.
``````````  `     ````````........``````````````    ````` ````````.....;;;++++++++++;+++++++++++++++++++++++++++++;;;;;;;;.........;;;;;;++++++;+;;;;;;;;;;;;.........`````..`````..
`````````   `     `` `````........`````````` ```    ``````````````.....;;;;+++++++++++++++++++++++++++++++++++++++;;;;;;;;.........;;;;;;++;;;;;;;;;;;;;;;;;;.........`````.``````..
`````````   `     ```````........``````````````    ```````````````.....;;;;+++++++++++++++++++++++++++++++++;++++;;;;;;;;;;........;;;;;;++;;;;;;;;;;;;;;;;+;;.........```...`````..
`````````         `` ````........``````````  ``    ```````````````......;;++++++++++++++;;+++++++++++++++++;;;;;;;;;;;;;;;;........;;;;;;;;;;;;;;;;;;;;;;.;;;;......................
````````````````````````.........``````````````  `````````````````......;;+++++++++++;;;;;++++++++++++++++++;;;;;;;;;;;;;;;.........;;;;;;;;;;;;;;;;;;;;;.;;;;......................
````````````````````````...................```````````````````````......;;+++++++++++;;;;;++++;;+++++++++++++;;;;;;;;;;;;;;.........;;;;;;;;;;;;;;;;;;;;;..;;;........````..``````..
````````   `     `` `````........``````````````````......................;;+++++++++++;;;;;++++;++++++++++++++;;;;;;;;;;;;;.........;;;;;;;;;.;;;;;++;;;;;.;;;........````..``````..
````````` ``     `` ````........``````````  ``     ``   `````````........;;;+++;++++++;;;;;++++++++++++++++++;;;;;;;;;;;;;;..........;;;;;;....;;;;+++;;;;.;;;........````..``````..
````````` ``    ````````........``````````` ``     `` `` ```  ` ``.......;;;;;;;+++++;;;;;;+++++++++++++++++;;;;;;;;;;;;;;;............;;;......;;;;+;;;;;.;;........`````..``````.`
````````````    ````````........```````````````    `` `  ```  ````.......;;;;;;;+++++;;;;;;;+;;+++++++++++++;;;;;;;;;;;;;;;.....................;;;;;;;;;;.;;........```````````````
```````````     ````````........`````````` `` `   `````` ````````........;;;;;;;++++;;;;;;;;;;;+++++++++++++;;;;;;;;;;;;;;;......................;;;;;;;;;.;...........```..``````..
````````````   ````````........````````````````   ````` `````````.......;;;;;;;;;;++;;;;;;;;;;;;;++++++++++;;;;;;;;;;;;;;;;......................;;;;;;;;;.;........................
```````````````````````........``````````` ```   ````````````````.......;;;;;;;;;;++;;;;;;;;;;;;;;+++++++++;;;;;;;;;;;;;;;;......................;;;;;;;;;..........................
```````` `````````````.........``````````````````````````````````.......;;;;;;;;;;+;;;;;.;;;;;;;;;;++++++++;;;;;;;;;;;;;;;;;......;;............;;;;;;;;;;...........`````..````````
````````````   ````````........``````````````````````````````````.......;;;;;;;;;;;;;;;..;;;;;;;;;;++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;........;;;;;;;;;;;;;...........`````..````````
```````` ````` ````````.......````````     `````````````````````........;;;;;;;;;;;;;;;....;;;;;;;;++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;........;;;;;;;..;;;............`````..````````
```````````````````````.......````````     ````  ``     `````````.......;;;;;;;;;;;;;;;....;;;;;;;++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;..;;;............````..`````````
`````````` ```````````........```  ``      ``    ```    ```` ```........;;;;;;;;;;;;;;;.....;;;;;+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;.................`````.`````````
``````````` ``````````........```` ``     ```    ``     ```    `........;;;;;;;;;;;;;;......;;;;;++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;................``````.`````````
``````````````````````.......````````     ``     ``    `````````........;;;;;;;.;;;;;;;.....;;;;++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;;;;;;................```````````````
``````````````````````.......````` ``   ````     ``     ``    ``.........;;;;;..;;;;;;;;....;;;;++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;;;;;;;;...`....................``````
`````````````````````........`````````` ````    ```    `````` ``.........;;;;;..;;;;;;;;;;;...;;++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;......;;;;;;;;;;;;;.``..............`...........
`````````````````````........``````````````````````  ` ```` ` ``.........;;;;;.;;;;;;;;;;;;...;;+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;;;.``...........````..````````.
`````````````````````.......```    `      `     ```````````````..........;;;;;;;;;;;;;;;;;;;;..;+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;.......;++;;;;;;;;;;.``..........`````..`````````
`````````````````````.`....````    `      `     ``     ``  ````...........;;;;;;;;;;;;;;;;;;;;;;++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;;;.`............````..````````.
`````````````````````.`.`..````   ``      `     ``     ``     `.........`.;;+++;;;;;;;;;+++;;;;;++++++++;;;;;;;;;;;;;;;;;;;;;;;;;.........;;;;;;;...;;;.`.............```..````````.
`````````````````````...```````  ```     ``     ``     ``     `........``.;;+++;;;+;;;+++++++;;;++++++++;;;;;;;;;;;;;;;;;;;;;;;;;.........;;;;;;;...;;;.`............```....`````.`.
..```````````````````..``````` ````      ``     `      ``     `........``.;;++++++++;+++++++++;;+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;.........;;;;;....;;;...............```....````.`.
..............``````....````````  `      ``    ``      ``     `........``.;;++++++++++++;;;++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;.........;;;;......................```....````.``
.```````````````````...`````````````````````   ``     `````````........``.;;++++++++++++;;;;;;;;;;++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;..................``...........................
...`````````````````..`````````````````````````````````````````........```.;++++++++++++;;;;;;;;;;+;++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;..................``.............``............
...```.`````````````..````````   ``     ``````````````.................```.;++++++;;++++;;;;;;;;;;;;;++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;................```..................````````.
.``````````````````...`````````  ``     `      ``    `````````.............;;+++++;;+++++;;;;;;;;;;;;;+++++;;;;;;;;;;;;;;;;;;;;;;;;;;;........;;.....```..............`.....````....
.`````````````````````````````````````````     ``     `      `........`````;;;+++;;;+++++;;;;;;;;;;;;;++;+++;;;;;;;;;;;;;;;;;;;;;;;;;;...............```.....................```....
.````````````````````````````````````````````````````````   ``........`````.;+++++++++++++;;;;;;;;;;;;++;;;++;;;;;;;;;;;;;;;;;;;;;;;;..........................................``...
.`````````````````````````````` ``      `     ```````````````.........`````.;;+++++++++++++;;;;;;;;;;+++;;;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................................`..`.
..````````````````````````````````     ``     ``     ````````.........`..``..;+++++++++++++;;;;;;;;;;++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................................`.
.```````````````````.`````````````     ``     ``  ` ````    ``........`````..;;++++++++++++++;;;;;;;++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................................
.````````````````````.`````````````````````   ``    ```     ``........``````..;++++++++++++++++++;;;+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..;;......................................
.``````````````````.`...```````````````````````````````   ```.........``````..;++++++++++++++++++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;...;;......................................
```````````````````....````` `` ``    ```    ````````````````.........````````.;+++++++++++++++++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;...;;..................................``..
``````````````````...`.`.```  ````    ``     ```    ```  ````........``````.``.;;+++++++++++++;;;;;;;+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;.;;.;................;.....................
``````````````````...`.`.```  ```` `  ``     ``     ```  ````........`````````;;+++++;;;;;;+;;;;;;;;;;+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................;;....................
`````````````````........```  ````    ``     ``     `````````........```````.;+++++++++++++++++;;.;;;;;;;++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................;+;...................
`````````````````........``````````  ```     ``     ````````.........```````.+++++++;;;;;;;;;;;...;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................;+;;..................
`````````````````........``````````  ```    ```    `````````.........```````.++++++++;;;;;;;;;;...;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................;++;;;................
````````````````.........```````````````    ```    `````````.........```````.++++++++++++;;;;;;.;.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........;;......++++;;...............
````````````````.........```````````````````````````````````........`````````;;.;++++++**+++*+;++*+++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........;;;.....+++++;;..............
````````````````........```` ```` `````````````````````````.........`````````;;;++;;++++;++++...;+;+++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........;;;.....+++++++;;............
````````````````........````````   ````     ```````````````.........````````.;;++;++++++++++++;;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........;;;;.....;+++++++;;...........
````````````````........````````   `````   ````    ```  ` ```.......``````.`.;;;;++++;++++++++;;;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........;+;;.....;+++++++++;..........
````````````````........````````    ``````````````````  ````........````````..;+++;;++++;++++;;;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........;;+;;.....+++++++++++;.........
.```````````````........`````````````````````````````    ```........````````.;;+;;++++;+++++++;;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........;++;;.....;+++++++++++;........
``````......```.........```````````````````````````````````........`````````.;;+;+++;;++++;+++;;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........;;++;......;++++++++++++;;......
``````````````..........```````````````````````````````````........``````````.;+++;;+++;;++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........;;++;......;++++++++++++++;;;...
```````````````.........```````````````````````````````````........`````````.;++;+++++;++++;++;;;;;;;;;;;;;;;;;;;;;+++;;;;;;;;;.;;;;;;;;;;..........;+++;......;++++++++++++++++++;;
```````````````.........`````````````````.`..``````````````........``````````;+++++++;++++;;++;;;+;;;;;;;;;;;;;;;++++;;;;;;;;;;;;;;;;;;;;;.........;;;+;;......;++++++++++++++++++++
```````````````........```````````````````````````````````.........`````````.;;+++;;+++;;+++;;;;;+.;;;;;;;;;;;;++++++;;;;;;;;;;;;;;;;;;;;;.........;+++;.......;++++++++++++++++++++