57. problem is so hard, go check my solution