dfs and recursion, combination sum