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