sig
  val init : int -> (int -> 'a) -> 'a list
  val nb_distinct : 'a list -> int
  val merge_lists : ('a -> 'a -> int) -> 'a list list -> 'a list
  val max : ('a -> 'a -> bool) -> 'a list -> 'a
  val iteri : (int -> 'a -> 'b) -> 'a list -> unit
  val dedoublonne : 'a list -> 'a list
  val stable_dedoublonne : 'a list -> 'a list
  val stable_dedoublonne_fast : 'a list -> 'a list
end