program Cat;
uses SysUtils;
var
i: Integer ;
s: String ;
function Catalan ( n : Integer ) : Integer ;
function Binom ( n, k : Integer ) : Longint ;
function Factorial ( n : Integer ) : Longint ;
begin
if ( n < 2 ) then
Factorial : = 1
else
Factorial : = n * Factorial( n - 1 ) ;
end ;
begin
(* The / character does real division. To do integer division, use div *)
writeln ( Factorial( n) div ( Factorial( k) * Factorial( n - k) ) ) ;
Binom : = Factorial( n) div ( Factorial( k) * Factorial( n - k) ) ;
end ;
begin
n : = Binom( 2 * n, n) div ( n + 1 ) ;
end ;
begin
for i : = 0 to 9 do
begin
s : = format( 'Catalan number %d is %d' , [ i, Catalan( i) ] ) ;
writeln ( s) ;
end ;
end .
cHJvZ3JhbSBDYXQ7Cgp1c2VzIFN5c1V0aWxzOwp2YXIKCWk6IEludGVnZXI7CglzOiBTdHJpbmc7CglmdW5jdGlvbiBDYXRhbGFuIChuIDogSW50ZWdlcikgOiBJbnRlZ2VyOwoJCWZ1bmN0aW9uIEJpbm9tIChuLCBrIDogSW50ZWdlcikgOiBMb25naW50OwoJCQlmdW5jdGlvbiBGYWN0b3JpYWwgKG4gOiBJbnRlZ2VyKSA6IExvbmdpbnQ7CgkJCWJlZ2luCgkJCQlpZiAobiA8IDIpIHRoZW4KCQkJCQlGYWN0b3JpYWwgOj0gMQoJCQkJZWxzZQoJCQkJCUZhY3RvcmlhbCA6PSBuICogRmFjdG9yaWFsKG4gLSAxKTsKCQkJZW5kOwoJCWJlZ2luCgkJICAgICgqIFRoZSAvIGNoYXJhY3RlciBkb2VzIHJlYWwgZGl2aXNpb24uIFRvIGRvIGludGVnZXIgZGl2aXNpb24sIHVzZSBkaXYgKikKCQkgICAgd3JpdGVsbihGYWN0b3JpYWwobikgZGl2IChGYWN0b3JpYWwoaykgKiBGYWN0b3JpYWwobiAtIGspKSk7CgkJCUJpbm9tIDo9IEZhY3RvcmlhbChuKSBkaXYgKEZhY3RvcmlhbChrKSAqIEZhY3RvcmlhbChuIC0gaykpOwoJCWVuZDsKCWJlZ2luCgkJbiA6PSBCaW5vbSgyICogbiwgbikgZGl2IChuICsgMSk7CgllbmQ7CmJlZ2luCglmb3IgaSA6PSAwIHRvIDkgZG8KCWJlZ2luCgkJcyA6PSBmb3JtYXQoJ0NhdGFsYW4gbnVtYmVyICVkIGlzICVkJywgW2ksIENhdGFsYW4oaSldKTsKCQl3cml0ZWxuKHMpOwoJZW5kOwplbmQuCgo=