diff --git a/CoolUtils.ml b/CoolUtils.ml
index bcd50436c7fa9dbb42074062312a87441a0d69b1..13d5ed52cb1b1b5984ded3290b3f556f7645a026 100644
--- a/CoolUtils.ml
+++ b/CoolUtils.ml
@@ -11,10 +11,21 @@ module TArray = struct
         any (fun y -> x == y) arr
     let included sub sup = all (fun x -> elem x sup) sub
     let to_string ts arr = "[| " ^ (Array.fold_right (fun i str -> (ts i) ^" "^ str) arr "|]")
+    let uniq arr =
+        let combine n l =
+            match l with
+            | [] -> [n]
+            | m::tail -> if n == m then l else n::l
+        in
+        Array.of_list (Array.fold_right combine arr [])
 end
 
 let agents = ref ([|1;2;3;4;5;6;7;8;9;10|])
 
 let cl_get_agents () = !agents
-let cl_set_agents arr = ignore (agents := arr)
+let cl_set_agents arr = ignore (
+    agents := arr;
+    Array.fast_sort compare !agents;
+    agents := TArray.uniq !agents)
+
 
diff --git a/CoolUtils.mli b/CoolUtils.mli
index bc2dfe9c234d09b44c13d24b4b2cd2edd34bac3e..f0f060575cbc98f01f25f2c03271e40a2b800f49 100644
--- a/CoolUtils.mli
+++ b/CoolUtils.mli
@@ -7,6 +7,7 @@ module TArray : sig
     val elem : 'a -> 'a array -> bool
     val included : 'a array -> 'a array -> bool
     val to_string : ('a -> string) -> 'a array -> string
+    val uniq : 'a array -> 'a array (* delete consecutive duplicates *)
 end
 
 val cl_get_agents : unit -> int array