reasonable solution
divide and conquer
update to clean
clear solution
non-recursive approach