Write a program that extracts n different numbers from the numbers 0 to 100 and outputs the number of combinations that add up to s. Each n number is from 0 to 100, and the same number cannot be used in one combination. For example, if n is 3 and s is 6, the combination of the three numbers totaling 6 is


1 + 2 + 3 = 6
0 + 1 + 5 = 6
0 + 2 + 4 = 6


There are three ways.



Input

Given multiple datasets. For each dataset, n (1 ≤ n ≤ 9) and s (0 ≤ s ≤ 1000) are given on one line, separated by a space. When both n and s are 0, it is the end of the input.

The number of datasets does not exceed 50.

Output

For each dataset, output the number of combinations in which the sum of n integers is s on one line.

No input is given with more than 1010 combinations.

Example

Input

3 6
3 1
0 0


Output

3
0
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <algorithm>

using namespace std;

#define rep(i,j) REP((i), 0, (j))
#define REP(i,j,k) for(int i=(j);(i)<(k);++i)
#define between(a,x,b) ((a)<=(x)&&(x)<=(b))
#define F first
#define S second
#define INF 1 << 30

long long dp[10][1001];

int main(){
  dp[0][0] = 1;
  for(int k = 0; k <= 100; ++k){
    for(int j = 1000; j >= 0; --j){
      for(int i = 9; i > 0; --i){
	if( (j - k) < 0) break;
	dp[i][j] += dp[i-1][j-k];
      }
    }
  }

 
  int n, s;
  while(scanf("%d%d", &n, &s) && n+s)
    printf("%lld\n", dp[n][s]);

  return 0;
}