Go: package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

var (
	sc = bufio.NewScanner(os.Stdin)
)

func main() {
	for sc.Scan() {
		if sc.Text() == "0 0" {
			break
		}
		chunks := strings.Split(sc.Text(), " ")
		n, _ := strconv.Atoi(chunks[0])
		p, _ := strconv.Atoi(chunks[1])
		cnts := make([]int, n, n)
		for i := 0; true; i++ {
			j := i % n
			if p == 0 {
				p, cnts[j] = cnts[j], 0
			} else {
				cnts[j]++
				p--
			}

			if p == 0 {
				noneCnt := 0
				winner := 0
				for j, c := range cnts {
					if c == 0 {
						noneCnt++
					} else {
						winner = j
					}
				}
				if noneCnt == n-1 {
					fmt.Println(winner)
					break
				}
			}
		}
	}
}

C++: // warm heart, wagging tail,and a smile just for you!
//                                                                     ███████████
//                                                                   ███╬╬╬╬╬╬╬╬╬╬███
//                                                                ███╬╬╬╬╬████╬╬╬╬╬╬███
//                                            ███████████       ██╬╬╬╬╬████╬╬████╬╬╬╬╬██
//                                      █████████╬╬╬╬╬████████████╬╬╬╬╬██╬╬╬╬╬╬███╬╬╬╬╬██
//                               ████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█████████╬╬╬╬╬╬██╬╬╬╬╬╬╬██
//                             ████╬██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█████████╬╬╬╬╬╬╬╬╬╬╬██
//                           ███╬╬╬█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██╬╬███╬╬╬╬╬╬╬█████
//                         ███╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██╬╬╬████████╬╬╬╬╬██
//                       ███╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬███╬╬╬╬╬╬╬╬╬███
//                     ███╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█████╬╬╬╬╬╬╬██
//                 ████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬████╬╬╬╬╬████
//     █████████████╬╬╬╬╬╬╬╬██╬╬╬╬╬████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬███╬╬╬╬██████
//   ████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██╬╬██████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██████╬╬╬╬╬╬╬███████████╬╬╬╬╬╬╬╬██╬╬╬██╬╬╬██
// ███╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬████╬╬╬╬╬╬╬╬╬╬╬█╬╬╬╬╬╬╬██╬╬╬╬╬╬╬╬██
// ██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██╬╬╬╬▓▓▓▓▓▓╬╬╬████╬╬████╬╬╬╬╬╬╬▓▓▓▓▓▓▓▓██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██╬╬╬╬╬╬╬███
// ██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██████▓▓▓▓▓▓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▓▓▓▓▓▓██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██╬╬╬╬█████
// ███╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬███╬╬╬╬╬██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬████████
//   ███╬╬╬╬╬╬╬╬╬╬╬╬╬█████╬╬╬╬╬╬╬╬██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬███╬╬██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██
//       ██████████████  ████╬╬╬╬╬╬███████████████████████████╬╬╬╬╬██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬████
//                         ███████                           █████  ███████████████████
#include "bits/stdc++.h"
using namespace std;
#define MOD 1000000007
//#define MOD 998244353
const double EPS = 1e-9;
#define INF (1LL<<60)
#define D double
#define fs first
#define sc second
#define int long long
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define RFOR(i,a,b) for(int i = (b-1);i>=(a);i--)
#define REP(i,n)  FOR(i,0,(n))
#define RREP(i,n) RFOR(i,0,(n))
#define ITR(itr,mp) for(auto itr = (mp).begin(); itr != (mp).end(); ++itr)
#define RITR(itr,mp) for(auto itr = (mp).rbegin(); itr != (mp).rend(); ++itr)
#define range(i,a,b) ((a)<=(i) && (i)<(b))
#define debug(x)  cout << #x << " = " << (x) << endl;
#define SP << " " << 
typedef pair<int,int> P;
typedef vector<vector<P> > Graph;
typedef vector<int> vec;
typedef vector<vector<int>> mat;

int n,p;
void solve(){
  int cnt[55] = {};
  int id = 0, tmp = p;
  while(1){
    if(tmp){
      cnt[id]++;
      tmp--;
    }
    else{
      tmp += cnt[id];
      cnt[id] = 0;
    }
    if(cnt[id] == p){
      cout << id << endl;
      break;
    }
    id = (id+1)%n;
  }
}

signed main(){
  ios::sync_with_stdio(false);
  cin.tie(0);

  while(cin >> n >> p, n) solve();

  return 0;
}

C++: #include<iostream>
#include<vector>
using namespace std;

int main()
{
	int n,p;
	while(cin>>n>>p){
		if(n==0 && p==0) return 0;
		vector<int> have(n,0);
		int now=0;
		while(true){
			if(p>0){
				have[now]++;
				p--;
				if(p==0){
					bool ok=true;
					for(int i=0;i<n;i++){
						if(i==now) continue;
						if(have[i]>0){
							ok=false;
							break;
						}
					}
					if(ok){
						cout<<now<<endl;
						break;
					}
				}
			}
			else{
				p+=have[now];
				have[now]=0;
			}
			now++;
			if(now==n) now=0;
		}

	}
	return 0;
}

C++: #include<cstdio>
using namespace std;

int main(){
int n,p;
int c[50];
for(;;){
scanf("%d,%d",&n,&p);
if(!n && !p)break;
for(int i=0;i<n;i++)c[i] = 0;

int cnt = 0;
int pos = -1;
for(;;){
pos = (pos+1)%n;
if(p){
if(!c[pos])cnt++;
c[pos]++;
p--;
}else{
if(c[pos])cnt--;
p = c[pos];
c[pos] = 0;
}
if(!p && cnt==1)break;
}
printf("%d\n",pos);
}
}

C++: #include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include <string>
#include <sstream>

#define rep(i, j) for(int i = 0; i < j; i++)
#define all(i) i.begin(), i.end()
#define ll long long
#define bl bool
#define nn printf("\n");
#define mod 1000000007

using namespace std;

int main()
{
	cin.tie(0);
	ios::sync_with_stdio(false);

	while (1)
	{
		int n = 0, p = 0; cin >> n >> p;
		if (n == 0 && p == 0) { return 0; }
		vector<int> man(n, 0);
		int stn = p, win = -1;
		while (1)
		{
			rep(i, n)
			{
				if (stn > 0)
				{
					man[i] += 1;
					stn -= 1;
				}
				else if (stn == 0)
				{
					stn = man[i];
					man[i] = 0;
				}
				if (*max_element(all(man)) == p)
				{
					win = i;
					break;
				}
			}
			if (win >= 0) { break; }
		}
		printf("%d\n", win);
	}
}

C++: #include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
  int nn,pp;
  while(cin >> nn >> pp,nn || pp){
    int i;
    vector<int>n(50),p(50);
    int wan=pp;
    for(i=0;;i++){
      if(i==nn)
	i=0;
      if(wan==0){
	wan=n[i];
	n[i]=0;
      }else{
	wan--;
	n[i]++;
      }
      if(pp==n[i])
	break;
    }
    cout << i << endl;

  }
}

C++: #include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

bool solve1159(int a[],int n);

int main() {
	int n=0,p=0;
	while(cin >> n >> p){
		if((n|p)==0)	break;
		int a[n];
		memset(a,0,sizeof(a));
		bool f=false;
		while(true){
			f=false;
			for(int i=0; i<n; i++){
				if(p>0){
					p--;	a[i]++;
					int temp=a[i];	a[i]=0;
					if(p==0 && solve1159(a,n)){
						cout << i << endl;
						f=true;
						break;
					}
					a[i]=temp;
				}else{
					p+=a[i];
					a[i]=0;
				}
			}
			if(f)	break;
		}
	}
	return 0;
}

bool solve1159(int a[],int n){
	for(int i=0; i<n; i++)	if(a[i]!=0)	return false;
	return true;
}

C++: #include <iostream>
#include <algorithm>
using namespace std;
int main(){
	int n,p;
	while(cin>>n>>p){
		if(n==0 && p==0) break;
		int hv[100]={},tn=0,cp=p;
		while(1){
			if(cp==1 && hv[tn]==p-1){
				cout<<tn<<endl;
				break;
			}
			if(cp==0){
				swap(cp,hv[tn]);
			}
			else {
				hv[tn]++; 
				cp--;
			}

			tn=(tn+1)%n;
		}
	}
	return 0;
}