solve this hard question