let ( /- ) = List.mem;; let surname_of_name s = String.sub s 0 (String.index s ' ');; let rec read_list n = if n > 0 then (read_line ())::(read_list (n - 1)) else [];; let new_name nam except = let rec nn name n = if (name /- except) then nn (String.sub name 0 ((String.length name) - 1)) (n + 1) else name in nn (nam ^ "1") 1;; let logins surnames = let rec logs surns acc = match surns with [] -> acc |l1::ls -> if (l1 /- acc) then logs ls ((new_name l1 acc)::acc) else (logs ls (l1::acc)) in logs surnames [];; let name_list = List.map surname_of_name (read_list (read_int ()));; List.iter (fun x -> print_string (x ^ "\n")) (logins name_list);;