heap push function