#    :
#
# ?????????????????????????????????????????????????????????????????????????????????????????????????
# ?????????????????????????????????????????????????????????????????????????????????????????????????
# ?????????????????????????????????????????????????????????????????????????????????????????????????
# ?????????????????????????????????????????????????????????????????????????????????????????????????
# ?????????????????????????????????????????????????????????????????????????????????????????????????
# ?????????????????????????????????????????????????????????????????????????????????????????????????
#
#    :
#
# ???????????????????????????????????????????????????????????????????
# ???????????????????????????????????????????????????????????????????
# ???????????????????????????????????????????????????????????????????
# ???????????????????????????????????????????????????????????????????
# ???????????????????????????????????????????????????????????????????
# ??????????????????????????????????????????????????????????????????? 
#
#     !  