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