solve 3 problems, very good, TODO