##################################################
##################################################
##############                       #############
##########                              ##########
#######                                    #######
######  a   b   #################           ######
#####^^^^^^^^^^###################           #####
#####          ###################           #####
######          #################           ######
#######                                    #######
##########                              ##########
##############                      ##############
##################################################
##################################################
