#include "bits/stdc++.h"

#define REP(i,num) for(int i=0;i<(num);++i)
#define ALL(c) c.begin(),c.end()
#define LOOP(i) while(i--)
#define PRINTALL(c) for(auto& x:c){cout<<x<<' ';}cout<<endl;
#define PAIRCOMP(c,comp) [](const pair<ll,ll>& lhs,const pair<ll,ll>& rhs){return lhs.c comp rhs.c;}

using namespace std;
using ll = long long;

constexpr ll atcoder_mod = 1e9+7;

template<typename T=int>
T in(){T x; cin >> x; return (x);}
template<typename T=int,typename C=vector<T>>
C vecin(int N){C x(N);REP(i,N){x[i]=in<T>();}return move(x);}

void vout(){cout << endl;}
template<typename Head,typename... Tail>
void vout(Head&& h,Tail&&... t){cout << ' ' << h;vout(forward<Tail>(t)...);}
void out(){cout << endl;}
template<typename Head,typename... Tail>
void out(Head&& h,Tail&&... t){cout << h;vout(forward<Tail>(t)...);}

ll dp[101][10][1001];

// i以下の数字をk個使って総和をtにする場合の数
ll dfs(int i,int k,int t){
	if(t<0 || k<0) return 0;
	if(i<0){
		if(!k && !t) return 1;
		return 0;
	}
	if(dp[i][k][t]>=0) return dp[i][k][t];

	dp[i][k][t] = dfs(i-1,k,t)+dfs(i-1,k-1,t-i);
	return dp[i][k][t];
}

int main(){
	cin.tie(0);
	ios::sync_with_stdio(false);
	cout<<fixed<<setprecision(10);

	while(true){
		int K=in(),N=in();
		if(!K && !N) break;
		
		for(auto& x:dp){
			for(auto& y:x){
				for(auto& z:y) z=-1;
			}
		}
		out(dfs(100,K,N));
	}

	return 0;
}
