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