#include<iostream>
#include<vector>
#include<algorithm>
#include<utility>
#include<string>
#include<cmath>
#include<cstring>
#include<queue>
#include<map>
#include<climits>
#include<set>
#include<tuple>
#include<stack>


using namespace std;
typedef pair<int, int> pii;
typedef long long int ll;
typedef pair<ll, ll> pll;
typedef tuple<int, int, int> tpl;
int dx[4] = { 1,0,0,-1 };
int dy[4] = { 0,1,-1,0 };

#define ARRAY_MAX 300

const int INF = 1 << 30;
const int MOD = 1e9 + 7;

ll dp[105][15][1005];

ll dfs(ll rest, ll n, ll s) {

	//restまでの整数のなかで残りn個を選んで和をsにする組み合わせ

	if (rest < 0)
	{
		//0まで見た時
		if (n == 0 && s == 0)
		{
			//和がsになっている場合は組み合わせとして適する
			return 1;
		}
		else
		{
			//n個選んでない場合や和がsになっていない場合
			return 0;
		}
	}
	if (n < 0 || s < 0)
	{
		//もう選べない場合か和が負になる組み合わせはない
		return 0;
	}
	if (dp[rest][n][s] != -1)
	{
		return dp[rest][n][s];
	}

	ll ret = 0;
	ret += dfs(rest - 1, n, s);//数字restを選ばない場合
	ret += dfs(rest - 1, n - 1, s - rest);//数字restを選ぶ場合
	
	return dp[rest][n][s] = ret;
}

int main() {

	ll n, s;
	while (cin >> n >> s, n|s)
	{
		for (int i = 0; i < 105; i++)
		{
			for (int j = 0; j < 15; j++)
			{
				for (int k = 0; k < 1005; k++)
				{
					dp[i][j][k] = -1LL;
				}
			}
		}
		cout << dfs(100, n, s) << endl;
	}


	

	return 0;
}
