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