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