Scanf.scanf "%d" (fun k -> let dump a = if a > 10 then Printf.printf "%c%c\n" "@ABCDE".[a mod 10] "@ABCDE".[a / 10] else Printf.printf "%c\n" "@ABCDE".[a] in let rec loop i q0 q1 q2 q3 = if i = k then (dump q0; dump q1; dump q2; dump q3) else match i mod 4 with | 0 -> loop (i + 1) (q0 / 10) (q1 + (q0 mod 10) * 10) q2 q3 | 1 -> loop (i + 1) q0 (q1 / 10) (q2 + (q1 mod 10) * 10) q3 | 2 -> loop (i + 1) q0 q1 (q2 / 10) (q3 + (q2 mod 10) * 10) | _ -> loop (i + 1) (q0 + (q3 mod 10) * 10) q1 q2 (q3 / 10) in loop 0 51 2 3 4 )