let remove_and_getq el list =
let rec loop acc = function
| [] -> None
| (e, v) :: t when e == el -> Some (v, (List.rev acc @ t))
| h :: t -> loop (h :: acc) t
in
loop [] list