recursion, dynamic programming
simple problem