#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vi;
typedef vector<long long> vl;
#define pb push_back
#define ff first
#define ss second
#define forn(n) for (ll i = 0; i < n; i++)
#define forc(cn, abc) ((cn).find(abc) != (cn).end())
#define yes cout << "YES\n";
#define no cout << "NO\n";
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define poin(x) cout << fixed << setprecision(x);
int dp[35][35];
ll n, r;
ll combination(ll n, ll r)
{
if (n == r)
return 1;
if (r == 1)
return n;
if(dp[n][r] != -1)
return dp[n][r];
return dp[n][r] = combination(n - 1, r) + combination(n - 1, r - 1);
}
void solve()
{
memset(dp, -1, sizeof(dp));
cin >> n >> r;
ll output = combination(n, r);
cout << output << endl;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
ll t = 1;
while (t--)
{
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZpOwp0eXBlZGVmIHZlY3Rvcjxsb25nIGxvbmc+IHZsOwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgZm9ybihuKSBmb3IgKGxsIGkgPSAwOyBpIDwgbjsgaSsrKQojZGVmaW5lIGZvcmMoY24sIGFiYykgKChjbikuZmluZChhYmMpICE9IChjbikuZW5kKCkpCiNkZWZpbmUgeWVzIGNvdXQgPDwgIllFU1xuIjsKI2RlZmluZSBubyBjb3V0IDw8ICJOT1xuIjsKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLCBhLmVuZCgpCiNkZWZpbmUgcmFsbChhKSBhLnJiZWdpbigpLCBhLnJlbmQoKQojZGVmaW5lIHBvaW4oeCkgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oeCk7CgppbnQgZHBbMzVdWzM1XTsKbGwgbiwgcjsKbGwgY29tYmluYXRpb24obGwgbiwgbGwgcikKewogICAgaWYgKG4gPT0gcikKICAgICAgICByZXR1cm4gMTsKCiAgICBpZiAociA9PSAxKQogICAgICAgIHJldHVybiBuOwoKICAgIGlmKGRwW25dW3JdICE9IC0xKQogICAgICAgIHJldHVybiBkcFtuXVtyXTsKCiAgICByZXR1cm4gZHBbbl1bcl0gPSBjb21iaW5hdGlvbihuIC0gMSwgcikgKyBjb21iaW5hdGlvbihuIC0gMSwgciAtIDEpOwp9CnZvaWQgc29sdmUoKQp7CiAgICBtZW1zZXQoZHAsIC0xLCBzaXplb2YoZHApKTsKICAgIGNpbiA+PiBuID4+IHI7CgogICAgbGwgb3V0cHV0ID0gY29tYmluYXRpb24obiwgcik7CiAgICBjb3V0IDw8IG91dHB1dCA8PCBlbmRsOwp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIGxsIHQgPSAxOwogICAgd2hpbGUgKHQtLSkKICAgIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==