program SzamBetuvel;
{$mode objfpc}{$H+}
uses SysUtils;
const
Egyesek: array[0..9] of string = (\'\',\'egy\',\'kettő\',\'három\',\'négy\',\'öt\',\'hat\',\'hét\',\'nyolc\',\'kilenc\');
Tizesek: array[0..9] of string = (\'\',\'tíz\',\'húsz\',\'harminc\',\'negyven\',\'ötven\',\'hatvan\',\'hetven\',\'nyolcvan\',\'kilencven\');
Extra: array[0..2] of string = (\'\',\'tizen\',\'huszon\');
function szazas(szam:integer):string;
var
tmp: string;
begin
if szam>999 then
begin
Result:=\'#\';
exit;
end;
tmp:=\'\';
case Length(IntToStr(szam)) of
1: Result:=Egyesek[szam];
2: begin
if (((szam div 10)=1) or ((szam div 10)=2)) and (szam-((szam div 10)*10)<>0) then tmp:=Extra[szam div 10]
else tmp:=Tizesek[szam div 10];
Result:=tmp+Egyesek[szam-((szam div 10)*10)];
end;
3: begin
tmp:=Egyesek[szam div 100]+\'száz\';
if (((szam-((szam div 100)*100)) div 10) in [1,2]) and (((szam-((szam div 100)*100)) mod 10)>0) then tmp:=tmp+Extra[((szam-((szam div 100)*100)) div 10)]
else tmp:=tmp+Tizesek[((szam-((szam div 100)*100)) div 10)];
Result:=tmp+Egyesek[((szam-((szam div 100)*100)) mod 10)];
end;
end;
end;
function SzambolBetu(szam:longint): string;
var
tmpstr: string=\'\';
tmpint: integer=0;
tmpszam: longint=0;
begin
if szam=0 then
begin
Result:=\'nulla\';
exit;
end;
tmpszam:=szam;
if Length(IntToStr(tmpszam))>9 then
begin
Result:=\'A szám túl nagy\';
exit;
end;
tmpint:=tmpszam div 1000000;
if tmpint<>0 then
begin
tmpstr:=tmpstr+szazas(tmpint);
if szam mod 1000000 > 0 then tmpstr:=tmpstr+\'millió - \'
else
begin
Result:=tmpstr+\'millió\';
exit;
end;
end;
tmpszam:=tmpszam-(tmpint*1000000);
tmpint:=tmpszam div 1000;
if tmpint<>0 then
begin
tmpstr:=tmpstr+szazas(tmpint);
if (szam > 2000) and (tmpszam mod 1000 <> 0) then tmpstr:=tmpstr+\'ezer - \'
else
begin
tmpstr:=tmpstr+\'ezer\';
if tmpszam mod 1000 = 0 then
begin
Result:=tmpstr;
exit;
end;
end;
end;
tmpszam:=tmpszam-(tmpint*1000);
tmpstr:=tmpstr+szazas(tmpszam);
Result:=tmpstr;
end;
begin
writeln(SzambolBetu(1234553));
end.