#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
string k[11];
string add(string s, string b)
{
reverse(s.begin(), s.end());
reverse(b.begin(), b.end());
int max = s.size() > b.size() ? s.size() : b.size();
if (s.size() < b.size())
swap(s, b);
for (int i = 0; i < max; i++)
{
int s2 = 0, b2 = 0, sum = 0;
if (i < s.size())
s2 = s[i] - '0';
if (i < b.size())
b2 = b[i] - '0';
if (i+1 < s.size())
sum = s[i+1] -'0';
s2 += b2;
sum += s2/10;
s2 %= 10;
s[i] = s2 + '0';
if (i+1 == s.size() && sum != 0)
s.insert(s.end(),sum + '0');
else
s[i+1] = sum + '0';
}
reverse(s.begin(), s.end());
return s;
}
string sum;
int m, d;
void solve()
{
while (d--) {
int i;
for (i = m; i >= 1; i--)
k[i] = k[i-1];
sum = add(sum, k[m]);
k[0] = sum;
}
//汇总
for (int i = 0; i < m; i++)
sum = add(sum, k[i]);
}
int main()
{
while (cin >> m >> d)
{
if (m == 0 && d == 0)
break;
sum = "1";
for (int i = 0; i < 11; i++)
k[i] = "0";
solve();
cout << sum << endl;
}
return 0;
}