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