( ( encode = indian roman cifr tenfoldroman letter tenfold . !arg:#?indian & :?roman & whl ' ( @(!indian:#%?cifr ?indian) & :?tenfoldroman & whl ' ( !roman:%?letter ?roman & !tenfoldroman ( (I.X) (V.L) (X.C) (L.D) (C.M) : ? (!letter.?tenfold) ? & !tenfold | "*" ) : ?tenfoldroman ) & !tenfoldroman:?roman & ( !cifr:9&!roman I X:?roman | !cifr:~<4 & !roman (!cifr:4&I|) V : ?roman & !cifr+-5:?cifr & ~ | whl ' ( !cifr+-1:~<0:?cifr & !roman I:?roman ) ) ) & ( !roman:? "*" ?&~` | str$!roman ) ) & 1990 2008 1666 3888 3999 4000:?NS & whl ' ( !NS:%?N ?NS & out $ ( encode$!N:?K&!N !K | str$("Can't convert " !N " to Roman numeral") ) ) );