import std.stdio;
import std.algorithm;
import std.string;
import std.range;
import std.array;
import std.conv;
import std.complex;
import std.math;


void main() {
	long dp[][][] = new long[][][](10, 101, 1001);
	//dp[i][j][k]: i個の数字の和で、最大の数がjで、ｋを作る場合の数
	for(int j = 0; j <= 100; ++j) {
		dp[1][j][j] = 1;
	}
	for(int i = 2; i < 10; ++i) {
		for(int j = 0; j <= 100; ++j) {
			for(int k = 0; k <= 1000; ++k) {
				if(k >= j) {
					for(int l; l < j; ++l) {
						dp[i][j][k] += dp[i-1][l][k-j];
					}
				}
			}
		}
	}
	while(true){
		auto ns = readln().strip().split();
		int n = to!int(ns[0]);
		int s = to!int(ns[1]);
		if((n|s) == 0)
			break;
		long sum = 0;
		for(int j = 0; j <= 100; ++j) {
			sum += dp[n][j][s];
		}
		writeln(sum);
	}
}