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