
import std.stdio, std.conv, std.string, std.algorithm, std.array, std.conv, std.c.string;

int[101][101][101] table;

// 全探索で解く
int solve(int comb, int limit, int start) {
  int counter = 0;
  if (comb < 0 || limit < 0) return 0;
  if (table[comb][limit][start] >= 0)
    return table[comb][limit][start];
  if (limit == 0 && comb == 0) return 1;
  for(int i = start; i <= limit; i++) {
    counter += solve(comb - 1, limit - i, i + 1);
  }
  return table[comb][limit][start] = counter;
}

void main() {
  while(true) {
    int[] line = readln.chomp.split(" ").map!(to!(int)).array;
    if (line[0] == 0 && line[1] == 0) break;
    memset(cast(void*)table, -1, table.sizeof);
    solve(line[0], line[1], 0).writeln;
  }
}