#include <iostream>
#include <vector>
#include <string>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <algorithm>	// require sort next_permutation count __gcd reverse etc.
#include <cstdlib>	// require abs exit
#include <cstdio>	// require scanf printf
#include <functional>
#include <numeric>	// require accumulate
#include <cmath>
#include <climits>
#include <limits>
#include <cfloat>
#include <iomanip>	// require setw
#include <sstream>	// require stringstream 
#include <cstring>	// require memset
#include <cctype>	// require tolower, toupper
#include <fstream>	// require freopen
#include <ctime>
#define rep(i,n) for(int i=0;i<(n);i++)
#define ALL(A) A.begin(), A.end()
#define DEBUG 0

using namespace std;

typedef long long ll;
typedef pair<int, int> P;
string FILE_NAME = "testcase.0097";
string NAME;
string itos (int n )
{
	stringstream ss;
	ss << n;

	return ss.str();
}

ll dp[101][1001];

int main()
{
//	cut here before submit 
#if DEBUG
	NAME = FILE_NAME;
	int CNT = 1;
	NAME += itos (CNT );
	while (freopen (NAME.c_str() , "r", stdin ) != NULL ) {
#endif
	ios_base::sync_with_stdio(0);
	int n, s;
	while (cin >> n >> s, n  ){
		memset (dp, 0LL, sizeof (dp ) );
		dp[0][0] = 1LL;
		for (int i = 0; i <= 100; i++ ){
			for (int j = 9; j >= 0; j-- ){
				for (int k = 0; i + k <= 1000; k++ ){
					dp[j+1][i+k] += dp[j][k];
				} // end for
			} // end for
		} // end for
		cout << dp[n][s] << endl;
	} // end rep
#if DEBUG
	CNT++;	// cut here before submit
	NAME = FILE_NAME;
	NAME += itos (CNT );
	} // end loop; cut here before submit
#endif			
	return 0;
}