add 3 solutions, improve other two