#include <stdio.h>
long silnia(int a)
{
int i;
long s = 1;
if (a > 1)
{
for (i = 1; i <= a; i++)
{
s *= i;
}
}
return s;
}
long newton(int n, int k)
{
return silnia(n)/(silnia(k)*silnia(n-k));
}
unsigned long int newton_rek(long int n ,long int k)
{
if ( n == k || k == 0 )
{
return 1;
}
if (k > n)
{
return 0;
}
else return newton_rek(n-1,k-1) + newton_rek(n-1,k);
}
int main(void) {
const long nmax = 12;
long n, k;
unsigned long x;
for( n = 0; n < nmax; n++ ) {
for( k = 0; k <= n; k++ ) {
x = newton_rek(n,k);
}
}
for( n = 0; n < nmax; n++ ) {
for( k = 0; k <= n; k++ ) {
x = (unsigned long)newton(n,k);
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgpsb25nIHNpbG5pYShpbnQgYSkKewogICAgaW50IGk7CiAgICBsb25nIHMgPSAxOwogICAgaWYgKGEgPiAxKQogICAgewogICAgICAgIGZvciAoaSA9IDE7IGkgPD0gYTsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgcyAqPSBpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBzOwp9Cgpsb25nIG5ld3RvbihpbnQgbiwgaW50IGspCnsKICAgIHJldHVybiBzaWxuaWEobikvKHNpbG5pYShrKSpzaWxuaWEobi1rKSk7Cn0KCnVuc2lnbmVkIGxvbmcgaW50IG5ld3Rvbl9yZWsobG9uZyBpbnQgbiAsbG9uZyBpbnQgaykKewogICAgaWYgKCBuID09IGsgfHwgayA9PSAwICkKICAgIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoayA+IG4pCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgZWxzZSByZXR1cm4gbmV3dG9uX3JlayhuLTEsay0xKSArIG5ld3Rvbl9yZWsobi0xLGspOwp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBjb25zdCBsb25nIG5tYXggPSAxMjsKICAgIGxvbmcgbiwgazsKICAgIHVuc2lnbmVkIGxvbmcgeDsKCiAgICBwcmludGYoICJuZXd0b25fcmVrOlxuIik7CiAgICBmb3IoIG4gPSAwOyBuIDwgbm1heDsgbisrICkgewogICAgICAgIGZvciggayA9IDA7IGsgPD0gbjsgaysrICkgewogICAgICAgICAgICB4ID0gbmV3dG9uX3JlayhuLGspOwogICAgICAgICAgICBwcmludGYoICIldSAiLCB4ICk7CiAgICAgICAgfQogICAgICAgIHByaW50ZiggIlxuIiApOwogICAgfQogICAgCiAgICBwcmludGYoICJcbm5ld3RvbjpcbiIpOwogICAgZm9yKCBuID0gMDsgbiA8IG5tYXg7IG4rKyApIHsKICAgICAgICBmb3IoIGsgPSAwOyBrIDw9IG47IGsrKyApIHsKICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBsb25nKW5ld3RvbihuLGspOwogICAgICAgICAgICBwcmludGYoICIldSAiLCB4ICk7CiAgICAgICAgfQogICAgICAgIHByaW50ZiggIlxuIiApOwogICAgfQoKcmV0dXJuIDA7Cn0=