let extract_min heap = 
  let (min,h) = 
    List.fold_left
      (fun ((lmin,min),h) (lcur,cur) -> 
         if lmin<=lcur then
           ((lmin,min),(lcur,cur)::h) 
         else
           ((lcur,cur),(lmin,min)::h) 
      )
      ((List.hd heap),[])
      (List.tl heap)
  in
  (min,h)