program Zahlen;

{ Gibt Zahlenwerte in Worten aus.
 (c) Sebastian Koppehel, 8/99 }

type
   Strs	= array[1..9] of String;

const
   Einer : Strs	     = ('ein','zwei','drei','vier','fünf','sechs','sieben','acht','neun');
   Zehner :	Strs = ('elf','zwölf','dreizehn','vierzehn','fünfzehn','sechzehn','siebzehn',
			'achtzehn','neunzehn');
   Zehner2 : Strs = ('zehn','zwanzig','dreißig','vierzig','fünfzig','sechzig','siebzig',
		     'achtzig','neunzig');

var
   Number  : LongInt;

function Convert2(Num : LongInt) : String;
var
   We1, We2 : Integer;
begin	    
   We1 := Num mod 10;
   We2 := Num div 10;
   case We2 of
     0 : 
	 begin
	    if We1 = 0 then Convert2 := ''
	    else if We1 = 1 then Convert2 := Einer[We1] + 's'
	    else Convert2 := Einer[We1];
	 end;
     1 : 
	 begin
	    if We1 = 0 then Convert2 := Zehner2[We2]
	    else Convert2 := Zehner[We1];
	 end;
   else
   begin
      if We1 = 0 then Convert2 := Zehner2[We2]
      else Convert2 := Einer[We1] + 'und' + Zehner2[We2];
   end;
   end;
end;
   
function Convert3(Num : LongInt) : String;
var
   We3, We21 : Integer;
begin
   We21 := Num mod 100;
   We3 := Num div 100;
   if We3 = 0 then Convert3 := Convert2(We21)
   else begin
      if We21 = 0 then Convert3 := Einer[We3] + 'hundert'
      else Convert3 := Einer[We3] + 'hundert' + Convert2(We21);
   end;
end;
   
function Convert6(Num : LongInt) : String;
var
   We654, We321	: Integer;
begin		
   We654 := Num div 1000;
   We321 := Num mod 1000;
   if We654 = 0 then Convert6 := Convert3(We321)
   else Convert6 := Convert3(We654) + 'tausend' + Convert3(We321);
end;

function Convert9(Num : LongInt) : String;
var
   We987, We654321 : LongInt;
begin
   We987 := Num div 1000000;
   We654321 := Num mod 1000000;
   if We987 = 0 then Convert9 := Convert6(We654321)
   else Convert9 := Convert3(We987) + 'millionen' + Convert6(We654321);
end;
   
begin
   Write('> ');
   Readln(Number);
   Writeln(Convert9(Number));
end.

