******************************************************************************************~
******************************************************************************************~
******************************************************************************************~
******************************************************************************************~
******************************************************************************************~
******************************************************************************************~
***********************************************+*****+**+*******+*************************~
********s*+*******^**^*************^*******+***+**+***************************************~
***********************************b***********+**********************++******#***********~
*****************F**F**F*****E*******************f************************++**b***********~
**********b******D********#********b*******D******^*H**********E**************************~
***************************************************F******************^^******D***********~
*******b**********************************************************************************~
**************************D********************^******I**********************ttt**********~
*****(*B****B*******B************B****B****##***F******************4***D*D*D*D*D*D********~
****a***********************u**************u********w************2************************~
v*******************************************v**********ttt*****2*********************>****~
6****************2**********3**************9********5********2**************3**9********2*~
******C*****C******C*****C*****C*****C*******************C************C*******************~
******************************************************************************************~