sig
  type t = Mpa.Q.t
  val euclid : t -> t -> t * t * t
  val solve : t list -> t -> (t * t list) option
end