problem #48
problem #49
problem #50