#include <iostream>

#define MAX_SUM 900

int main()
{
	unsigned long long*** DP = new unsigned long long**[9];
	for (int i=0; i<9; i++) {
		DP[i] = new unsigned long long*[901];
		for (int j=0; j<MAX_SUM+1; j++) DP[i][j] = new unsigned long long[901];
	}
	
	for (int j=0; j<MAX_SUM+1; j++) {
		for (int k=0; k<MAX_SUM+1; k++) DP[0][j][k] = (j<=k && k<=100) ? 1 : 0;
	}
	
	for (int i=1; i<9; i++) {
		for (int j=0; j<MAX_SUM+1; j++) {
			for (int k=0; k<MAX_SUM+1; k++) {
				unsigned long long sum = 0;
				for (int m=j; m<MAX_SUM+1 && m<=(k-1)/2; m++) sum += DP[i-1][m+1][k-m];
				DP[i][j][k] = sum;
			}
		}
	}
	
	int n, s;
	while (std::cin >> n >> s) {
		//std::cout << n << " " << s << std::endl;
		if (n == 0 && s == 0) break;
		if (s>MAX_SUM) std::cout << 0 << std::endl;
		else std::cout << DP[n-1][0][s] << std::endl;
	}
	
	for (int i=0; i<9; i++) {
		for (int j=0; j<MAX_SUM+1; j++) delete[] DP[i][j];
		delete[] DP[i];
		
	}
	
	return 0;
}

