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