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 <bits/stdc++.h>

using namespace std;

#define INF 1001000100010001000
#define MOD 1000000007
#define EPS 1e-10
#define int long long
#define rep(i, N) for (int i = 0; i < N; i++)
#define Rep(i, N) for (int i = 1; i < N; i++)
#define For(i, a, b) for (int i = (a); i < (b); i++)
#define pb push_back
#define eb emplece_back
#define mp make_pair
#define i_i pair<int, int>
#define vi vector<int>
#define vvi vector<vi >
#define vb vector<bool>
#define vvb vector<vb >
#define vp vector< i_i >
#define Edge pair< i_i, int>
#define all(a) (a).begin(), (a).end()
#define Int(x) int x; scanf("%lld", &x);
#define int2(x, y) int x, y; scanf("%lld %lld", &x, &y);
#define fir first
#define sec second
#define ffir first.first
#define fsec first.second
#define sfir second.first
#define ssec second.second

//int dxy[5] = {0, 1, 0, -1, 0};
//

int dp[10][1000];

signed main()
{
    int n, s;
    dp[0][0] = 1;
    rep(add, 101) {
        for (int i = 8; i >= 0; i--) {
            rep(j, 900) {
                dp[i+1][j+add] += dp[i][j];
                //dp[i+1][j] += dp[i][j];
            }
        }
    }

    while (cin >> n >> s, n) {
        cout << dp[n][s] << endl;
    }

    return 0;
}