add solution
add currying solution: not finish yet