#include
using namespace std;
string stringAdd(string a, string b) {
while(a.length() < b.length()) {
a = "0" + a;
}
while(b.length() < a.length()) {
b = "0" + b;
}
string tmp = "";
int carry = 0;
for(int i = a.length() - 1; i >= 0; i--) {
int bitsum = static_cast(a[i] - '0') + static_cast(b[i] - '0') + carry;
carry = bitsum / 10;
bitsum %= 10;
tmp = static_cast(bitsum + '0') + tmp;
}
if(carry) {
tmp = static_cast(carry + '0') + tmp;
}
return tmp;
}
int main() {
int m, d;
while(cin >> m >> d) {
if(m == 0 && d == 0) {
break;
}
string child[m];
for(int i = 0; i < m; i++) {
child[i] = "0";
}
string adult = "1";
for(int i = 1; i <= d; i++) {
adult = stringAdd(adult, child[m-1]);
for(int j = m - 1; j > 0; j--) {
child[j] = child[j-1];
}
child[0] = adult;
}
string total = adult;
for(int i = 0; i < m; i++) {
total = stringAdd(total, child[i]);
}
cout << total << endl;
}
return 0;
}