use a proper pairing heap