let remove_index (index : int) (l : 'a list) : 'a list =
        let rec aux index l res =
                match l with [] -> List.rev res
                        |(x::ls) ->         if (index=0)
                                        then (List.rev res)@ls
                                        else aux (index-1) ls (x::res);
        in
        aux index l []