recursion and dp, kind of like modified subset
kind of like merge 2 lists, TODO priority queue solution
recursive is still difficult to understand