problem #1
problem #2
problem #3
problem #4
problem #5
problem #6
problem #7