recursion seems to work for almost the whole list, need to check case for last element of heap