Came up with the idea easily, but get a complete solution in a long period, FINISHED by self in 1 h and 15 mins