program nth; loop for r in [[0..25], [250..265], [1000..1025]] do showrange(r); end loop; proc showrange(r); i := 0; loop for s in [nth(n) : n in r] do putchar(rpad(s, 8)); if (i +:= 1) mod 6 = 0 then print(); end if; end loop; print(); end proc; proc nth(n); sfx := {[1,"st"], [2,"nd"], [3,"rd"]}; return str n + if n div 10 mod 10 = 1 then "th" else sfx(n mod 10) ? "th" end if; end proc; end program;