semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
struct hou
{int b;
struct hou * p;
}hou[400];
void main()
{
	int a[400][2],i,j,n=0,k,h,m,t;
	struct hou * q;
	struct hou * x;
	for(i=0;;i++)
	{
		scanf("%d %d",&a[i][0],&a[i][1]);
		n=n+1;
		if(a[i][0]==0&&a[i][1]==0)
			break;
	}
	for(i=0;i<n-1;i++)
	{
		if(a[i][0]==1)
			printf("1\n");
		if(a[i][1]==1)
			printf("%d\n",a[i][0]);
		if(a[i][0]!=1&&a[i][1]!=1)
		{
		k=a[i][0]-1;
		for(j=0;j<a[i][0]-1;j++)
		{
			hou[j].b=j+1;
		    hou[j].p=&hou[j+1];
		}
		hou[k].p=&hou[0];
		hou[k].b=k+1;
		q=&hou[0];
		for(h=0;h<a[i][0]-1;h++)
		{
			for(m=1;m<a[i][1]-1;m++)
			{
				q=q->p;
			}
			x=q->p;
			q->p=x->p;q=q->p;
		if(q==q->p)
			printf("%d\n",(*q).b);
		}
	}
	}
}
int main()
{
	int k,n,m,t,i,j,g[303]={0},count=0;
	while (1)
	{
		cin>>n>>m;
		k=0;
		t=0;
		count=0;
		for (i=1;i<=n;i++)
		{
			g[i]=0;
		}
		if (n==0)
			break;
		while (count<n-1)
		{
			k=k+1;
			if (k==n+1)
			{
				k=1;
			}
			if (g[k]==0&&t!=m)
			{
				
				t=t+1;
			}
			if (g[k]==0&&t==m)
			{
				g[k]=1;
				count=count+1;
				t=0;
			}
		}
		for (j=1;j<=n;j++)
		{
			if (g[j]==0)
				cout<<j<<endl;
		}

	}
	return 0;
}
int main()
{
	int a,p=0;
	int n[300],m[300];
	
	do
	{
		cin>>n[p]>>m[p];
		p++;
	}while(n[p-1]!=0&&m[p-1]!=0);
	for(int q=0;q<p-1;q++)
		{
			a=0;
			for(int i=2;i<=(n[q]);i++)
				a=(a+m[q])%i;
			cout<<a+1<<endl;
	}
	return 0;
}
int main()
{
    int i,a[1000],b[1000],j,s,p,m,n;
    for(i=0;;i++)
    {
      scanf("%d %d",&a[i],&b[i]);
      if(a[i]==0&&b[i]==0)break;
      }
      for(j=0;j<i;j++)
    {
     if(a[j]==1)
     printf("1\n");
     else
        {
         s=0;
         n=a[j];
          m=b[j];
          for (p=2; p<=n; p++)
          {
           s=(s+m)%p;
           }
           printf ("%d\n", s+1);
         }
    }
      
    getchar();
    getchar();
    getchar();
    }
main()
{
	for(;;)
	{
		int n,m,a[300]={0};
		scanf("%d %d",&n,&m);
		if(n==0) 
		break;
		int i,s,t=0;
		s=n;
		while(s!=1)
		for(i=0;i<n;i++)
		{
			if(a[i]==0) 
		    t++;
			if(t==m)
		   	{
				a[i]=1;
				s--;
				t=0;
			}
			if(s==1)     break;
		}	
		for(i=0;i<n;i++)
		if(a[i]!=1)  
		break;
		printf("%d\n",i+1);
	}
	
}
int  main()
{
	int n[300],m[300],t=0,i,j,k,p,a[300];
	for(i=0;;i++)
	{
		cin>>n[i]>>m[i];
		if(n[i]==0)
			break;
        else
        t++;
	}
	for(p=0;p<t;p++)
	{
		for(i=0;i<n[p];i++)
			a[i]=i+1;
		i=0;
		j=0;
		k=0;
		while(j<n[p])
		{
			if(a[i]!=0)
			{
				k++;
				if(k%m[p]==0)
				{
					j++;
					if(j==n[p])
					{
						cout<<a[i]<<"\n";
						break;
					}
					a[i]=0;
				}
			}
			i++;
			if(i==n[p])
				i=0;
		}
	}
	return 0;
}
int King(int a,int b)
{
  int monkey,num,i,j,countor;

/*scanf("%d%d",&monkey,&num);*/
monkey=a;num=b;
int*Monkey =(int*)malloc(monkey*sizeof(int));
for(i=0;i<monkey;i++)
{
    *(Monkey+i)=0;
   // printf("%d\n",*(Monkey+i));
   }

for(i=0,j=0,countor=1;j<monkey-1;)
 {
     if(*(Monkey+i%monkey)==-1){i++;continue;}
     if(countor==num)
        {
            *(Monkey+i%monkey)=-1;
           // printf("No.%d is %d\n",i%monkey+1,*(Monkey+i%monkey));
            j++;
            i++;
            countor=1;
            //printf("i=%d j=%d countor=%d\n",i,j,countor);
            continue;
            }
     i++;
     countor++;
     //printf("//i=%d j=%d countor=%d\n",i,j,countor);
     }



//for(i=0;i<monkey;i++) printf("%d\n",*(Monkey+i));
 for(i=0;i<monkey;i++)
 {
        if(*(Monkey+i)!=-1)
            return (i+1);
 }
free (Monkey);
}
int main(){
    int king[100];
    int a,b,n=0,k=0;
    scanf("%d%d",&a,&b);
    while(a!=0&&b!=0)
    {
       king[n]=King(a,b);
       n++;
        scanf("%d%d",&a,&b);

    }
    for(k=0;k<n;k++) printf("%d\n",*(king+k));
    return 0;
    }
main()
{
   int a=0;
   int b[20];int c[20];
    int l,i,j,k,e;
    for(e=0;;e++)
    {
        scanf("%d%d",&b[e],&c[e]);
    printf("\n");
    a++;
        if(b[e]==0||c[e]==0)
        break;
        }
  for(j=0;j<=a;j++)
  {
 
 
  if((0<b[j]&&b[j]<=300)&&(0<c[j]&&c[j]<=300)) 
 {  k=0;
    for(i=2;i<=b[j];i++)
    {k=((c[j]%i)+k)%i;}
     printf("%d\n",k+1);
             }
             } 
        
                       
                      getchar();
                       getchar();
      }
int main()   
{   
	int m,n;
	int a[400];
	int k,i;
	int temp;
	while(scanf("%d %d",&n,&m))
	{
		if(n==0)
			break;
		i=0;
		for(k=0;k<400;k++)
			a[k]=1;
		for(k=1;k<=n-1;k++)
		{
			temp=0;
			while(1)
			{	
				if(a[i%n]==1)
					temp++;
				if(temp==m)
				{
					while(a[i%n]==0)
						i++;
					a[i%n]=0;
					i++;
					break;
				}
				i++;
			}
		}
		for(k=0;k<n;k++)
		{
			if(a[k]==1)
			{
				printf("%d\n",k+1);
				break;
			}
		}
		
	}
	return 0;   
}
const int MAX_NUM=300;
int anLoop[MAX_NUM+10];
int main()
{
	int n,m;
	while(1)
	{
		cin>>n>>m;
		if(n==0&&m==0)break;
		for (int i=0;i<n;i++)
		anLoop[i]=i+1;
		int nPtr=0;
		for(int i=0;i<n;i++)
		{
			int nCounted=0;
			while(nCounted<m)
			{
				while(anLoop[nPtr]==0)
				nPtr=(nPtr+1)%n;
				nCounted++;
				
				nPtr=(nPtr+1)%n;	
			}
			nPtr--;
			if(nPtr<0) nPtr=n-1;
			if(i==n-1)
			cout<<anLoop[nPtr]<<endl;
			anLoop[nPtr]=0;	
		}	
	}
	
	return 0;	
}
/*
 * YueSeFuProblem.cpp
 *
 *  Created on: 2010-11-14
 *      Author: user
 */



int main() {
	while (true) {
		int n, m, i;
		cin >> n >> m;
		if (n == 0 && m == 0)
			break;
		int f[n + 1];
		for (i = 1; i < n; i++) {
			f[i] = i + 1;
		}
		f[n] = 1;

		int t = 1;

		while (true) {
			if (m == 1) {
				cout << n << endl;
				break;
			} else {
				for (i = 1; i < m - 1; i++) {
					t = f[t];
				}
				f[t] = f[f[t]];
				t = f[t];
				if (f[t] == t) {
					cout << t << endl;
					break;
				}
			}
		}
	}

	return 0;
}
int main()
{
   int i, j;
   int a[1000],b[1000],c[1000]={0};
   for(i=0;;i++)
   {
       scanf("%d%d",&a[i],&b[i]);
	   if(b[i]==0&&a[i]==0)
	   {
		   break;
	   }
	   else
	   {
	   for(j=2;j<=a[i];j++)
	   {
		   c[i]=(c[i]+b[i])%j;
	   }
	   }
   }
   for(i=0;;i++)
   {
	   if(a[i]==0&&b[i]==0)
	   {
		   break;
	   }
	   else 
	   {
		   printf ("%d\n", c[i]+1);
	   }
   }
   return 0;
}
int f(int m,int n)
{
	int i;
	int k=0;
	for(i=2;i<=n;i++)
		k=((m%i)+k)%i;
	return k;
}
int main(void)
{
	int m[100],n[100];
	int i=0;
	scanf("%d%d",&n[i],&m[i]);
	i++;
	while(n[i-1]!=0||m[i-1]!=0)
	{
	    scanf("%d%d",&n[i],&m[i]);
		i++;
	}

    for(int j=0;j<i-1;j++)
	{
    	printf("%d\n",f(m[j],n[j])+1);
	}
		return 0;
}
void main()
{int m,n,i=0,j=0,k,l,x,y;
int a[301];int b[301];int c[301];int d[301];
scanf("%d %d",&a[0],&b[0]);
for(i=0;a[i]!=0&&b[i]!=0;i++)
   {scanf("%d %d",&a[i+1],&b[i+1]);}
y=i-1;for(i=0;i<=y;i++)
       {n=a[i];m=b[i];x=n;
           for(j=1;j<=n;j++)
              {c[j-1]=j;}
         for(k=1;k<x;k++)
           { for(j=(m%n)+1;j<=n;j++){d[j-(m%n)-1]=c[j-1];}
             for(j=0;j<(m%n);j++){d[j+n-(m%n)]=c[j];}n--;
            for(l=0;l<=n;l++)c[l]=d[l];}
          printf("%d\n",c[0]);}
}
void main()
{
	int a[301]={0};int c[21];
    int k,n,m,i,x,j;
    for(k=1;;k++)
	{
	    scanf("%d %d",&n,&m);
	    for(i=1;i<=n;i++)
		{
		    a[i]=1;
		}
	    x=0;
	    for(i=1;i<=n-1;i++)
		{
		   for(j=0;j<m;)
		   {
			   if(x==n)x=1;
			   else x++;
			   if(a[x]==1)j++;
			   else continue;
		   }
		   a[x]=0;
		}
	    for(i=1;i<=n;i++)
		{
		    if(a[i]==1)c[k]=i;
		}
	    if((n==0)||(m==0))break;
	}
	for(m=1;m<k;m++)
		printf("%d\n",c[m]);
}
int number(int x,int y)
{
	int k,num;
	if(x==1) num=1;
	k=y%x;
	if(x==2)
	{
		if(k==1) num=2;
	    else num=1;
	}
	if(x>2)
	{
	    num=number(x-1,y)-x+k;
		if(num<=0) num+=x;
	}
	return num;
}

void main()
{
	int a[1000],b[1000],n=0,i;
    for(n=0;;n++)
	
	{	scanf("%d %d",&a[n],&b[n]);	
		if(a[n]==0&&b[n]==0)break;}		
    for(i=0;i<n;i++) 
		printf("%d\n",number(a[i],b[i]));
}
main(){
	int n, m, mon[301], i, j, p, k;
	for(;;){
		p=1;
		for(i=0; i<301; i++) mon[i]=2;
		scanf("%d%d", &n, &m);
		if(n==0) break;
		else{
			for(i=1; i<=n; i++) mon[i]=1;
			for(k=0; k<n-1; k++){ 
				for(i=p%n, j=1; j<=m; i++, j++){
					i=i%n+(i%n==0)*n;
					if(mon[i]==0) j-=1;
					else;
					if(j==m) mon[i]=0;
					else;
				}
				p=i;
			}
			for(i=1; i<=n; i++){
				if(mon[i]==1){
					printf("%d\n", i);
					break;
				}
				else;
			}
		}
	}
}
int main()
{
	int a[301], n, m, i, count = 0, zong = 0;
	while(1)
	{
		cin >> n >> m;
		if (n == 0 && m == 0)
			break;
		for (i = 1; i <= n; i++)
			a[i] = 1;
		i = 1;
		while(1)
		{
			if (a[i] == 1)
			{
				count++;
				if (zong == n - 1)
				{
					cout << i << endl;
					count = 0;
					zong = 0;
					break;
				}
				if(count == m)
				{
					zong++;
					a[i] = 0;
					count = 0;
					if (i < n)
						i++;
					else if (i == n)
							i = 1;
				}
				else
				{
					if (i < n)
						i++;
					else if (i == n)
							i = 1;
				}
			}
			else if (i == n)
				i = 1;
				 else	
					i++;
		}
	}
	return 0;
}
void main()
{
	int ha(int n,int m);
	int a[100],b[100],i,n;
	for(i=0;i<100;i++)
	{
		scanf("%d %d",&a[i],&b[i]);
		if(a[i]==0&&b[i]==0)
		{n=i;break;}
	}
    for(i=0;i<n;i++)
		printf("%d\n",ha(a[i],b[i]));
}
int ha(int n,int m)
{
	int a[300],i,t=0,k=0,l;
	for(i=0;i<n;i++)
		a[i]=i+1;
	if(n==1) k=1;
	else
	{
		i=0;l=1;
	do
	{
			if(a[i]!=0&&l==m)	
		{
			a[i]=0;
			t++;
			l=1;
		}
		else if(a[i]!=0) l++;
		if(i<n-1) i++;
		else i=0;

	}while(t<n-1);
	for(i=0;i<n;i++)
		k=k+a[i];
	}
	return(k);
}
int main()
{
	int n,m;
	cin>>n>>m;
	int a[1000];
	int i,l;
	while(n!=0)
	{

		i=1;
		for(i=1;i<=n;i++)
			a[i]=i;
		i=1;
		while(n>1)
		{


			i=i+m-1;
			while(i>n)
				i=i-n;


				for(l=i;l<n;l++)
					a[l]=a[l+1];
				n--;

		}
		cout<<a[1]<<endl;
		cin>>n>>m;
	}
	return 0;
}
int a[30],b[30];
int f(int n,int m)
{
	int i,p[301],q=1,r=0;
	for(i=1;i<=n;i++)	p[i]=1;
	i=0;
	while(r<n)
	{
		i++;
		if(i<=n)
		{
		  if(p[i]) 
		  {
			 if(q==m) 
			 {
				 p[i]=0;
			     q=1;
			     r++;
			 }
			 else q++;
		  }
		}
		else i=0;
	}
	return(i);
}
void main()
{
	int j,i=0;
	do
	{
		scanf("%d%d",&a[i],&b[i]);
		i=i+1;
	} while(a[i-1]!=0&&b[i-1]!=0);
	for(j=0;j<i-1;j++)
	  printf("%d\n",f(a[j],b[j]));
}
int main(){
    int n, m, a[MAX], i, j, b[MAX][MAX], t, p;
    n = -1;
    m = -1;
    while(n!=0&&m!=0){

    scanf("%d%d", &n, &m);
	if(n!=0&&m!=0){
    t = n;
    for(i = 0; i < n; i++){
        a[i] = i+1;
    }
    
    int k = 0;
    for(i = 0; i < n; i++){
        if(k == 0){
            for(j = 0; j < m; j++){
            if(k!=t-1){
                b[i][j]=a[k];
                k++;
            }else{
                b[i][j]=a[k];
                k=k-t+1;
            }
        }
        }else{
            k--;
            for(j = 0; j < m; j++){
                if(k!=t-1){
                    b[i][j]=a[k];
                    k++;
                }else{
                    b[i][j]=a[k];
                    k=k-t+1;   
                }
            }            
        }
        if(i != n){
            for(j = 0; j < t; j++){
            if(b[i][m-1]==a[j]){
                for(p = j; p < t-1; p++){
                    a[p] = a[p+1];
                }
                t--;
            }
        }
        }
    }
    printf("%d\n", b[n-1][0]);
	}

	}
    return 0;

}
int f(int x,int y)
{
    int k=0,i;
    for(i=2;i<=x;i++)
    {
        k=(k+y)%i;
    }
    return k+1;
}
main()
{
      int n[20],m[20],i,king;
      for(i=0;i<=19;i++)
      {
           scanf("%d %d",&n[i],&m[i]);
           king=f(n[i],m[i]);
           if(n[i]!=0)
              printf("%d\n",king);
           else
              break;
      }
}
int main()
{	
	int a[301],m,n;
	while(1)
	{
		cin>>n>>m;
		for(int i=1;i<=n;i++) a[i]=1;
		int j=0,k=n;
		if(n==0)break;
		while(1)
		{
			for(int i=1;i<=n;i++)
			{
				j += a[i];
				if(j==m)
				{
					a[i]=0;
					j=0;
					k--;
					if(k==0)
					{
						cout<<i<<endl;
						break;
					}
				}
			}
			if(k==0)break;
		}
	}
	return 0;
}
int f(int x,int y);
int main()
{
    int i,a,d,m,n;
    int ad[999];
    int sd[999];
    for(i=1;i>0;i++)
    {
        scanf("%d%d\n",&ad[i],&sd[i]);
        if(ad[i]==0&&sd[i]==0)
        {
            break;
        }
        
         printf("%d\n",f(ad[i],sd[i]));
    }
    return 0;
}
    
int f(int x,int y) {
   int i;
   int k=0;
   for(i=2;i<=x;i++)
   {k=((y%i)+k)%i;}
  return k+1;
}
long int num(int a,int b)
{
    long int i;
    if(a==1) i=1;
    if(a==2) 
    {
        if(b%2==0) i=1;
        else i=2;
    }
    if(a>2)
        i = (num(a-1,b)+b%a)%a;
    if(i==0) i=a;
    return i;
}
int main()
{
   int c;
   for(c=1;c!=0;)
   {
    long int n,m,k;
    scanf("%ld%ld",&n,&m);
    c=n;
    if(c==0) break;
    k=num(n,m);
    if(k==0)
       printf("%ld\n",n);
    else
       printf("%ld\n",k);
    }
    
}
void main()
{
	int houwang(int n,int m);
	int n,m,i,c[1000];
	
	for(i=0;;i++)
	{
		scanf("%d %d",&n,&m);
		if(n==0)
		break;
        c[i]=houwang(n,m);
	}
	for(n=0;n<=i-1;n++)
		printf("%d\n",c[n]);

}
int houwang(int n,int m)
{

	int a[301],i,k,b=0;
	
    for(i=1;i<=n;i++)
	{
		a[i]=i;
	}
	for(i=1;;i++)

	{  
		b++;
		if(i==n+1) i=1;
		if(b==m)
		{
			for(k=i;k<n;k++)
			{
				a[k]=a[k+1];
				
				
				
			}
			n=n-1;b=0;i=i-1;
		}
		if(n==1) break;
	}
	return(a[1]);
}
int main()
{
 int *num;
 int n,m,i,j;
 while(scanf("%d %d",&n,&m),n!=0||m!=0){
  if(n==1){
   printf("1\n");
  }
  else if(m==1){
   printf("%d\n",n);
  }
  else{
   
   num = (int *)malloc((m*(n-1)+3)*sizeof(int));
   for(i=1;i<=n;i++)
   {
    num[i] = i;
   }
      for(j=1; j<(m*(n-1)+2); j++)
   {
    if(j%m!=0)
     num[i++]=num[j];
   }
   printf("%d\n",num[m*(n-1)+2]);
  }
 }
 return 0;
}
main()
{
 int s[20][2],a[300],i=-1,j,t,d,k;
 do
 {
  i++;
  scanf("%d%d",&s[i][0],&s[i][1]);
 }while(s[i][1]!=0);
 t=i;
 //printf("%d\n",t);
 for(i=0;i<t;i++)
 { //  printf("test:%d\n",i+1);
	 for(j=0;j<s[i][0];++j)
		 a[j]=1;
     d=1; k=0; j=0;
  while(d<s[i][0])
  {
   
   if(a[j]!=0)
   {
      k++;
 
      if(k==s[i][1])
      {k=0;a[j]=0;d++;}
     
   }
j=(j+1)%s[i][0];

  }
  for(j=0;j<s[i][0];j++)
  if(a[j]!=0)printf("%d\n",j+1);
 }
}
int main()
{
  int dawang(int n,int m);
  int a,b,boss;
  scanf("%d %d",&a,&b);
  while (a!=0)
  {
     boss=dawang(a,b);
  printf("%d\n",boss);
  scanf("%d %d",&a,&b);
  }
//  scanf("\n");
}
int dawang(int n,int m)
{
 int after[400];
 int i,j,pre,t;
 for (i=0;i<n;i++) after[i]=i+1;
 after[n]=1;
 pre=n;
 t=1;
 while (after[pre]!=pre)
 {
    for (i=1;i<m;i++)
    {
      pre=t;
      t=after[pre];
    }
    after[pre]=after[t];
	t=after[pre];
 }
return(t);
}
int ysf(int n,int m)
{
 int i,s=0;
 for(i=2;i<=n;i++)
  s=(s+m)%i;
 return(s+1);
}
main()
{
 int a[300][2];
 int i,x=0;
 do
  {
   scanf("%d %d",&a[x][0],&a[x][1]);
   x++;
  }
 while(a[x-1][0]!=0||a[x-1][1]!=0);
 for(i=0;i<x-1;i++)
  printf("%d\n",ysf(a[i][0],a[i][1]));
}
void Left(int *ptr,int hd,int tl);

int main()
{
    int n,m,m1;
    int a[301],result[100];
    int i,j=0,k;
    while(1)
    {
       scanf("%d%d",&n,&m);
       if(n==0&&m==0) break;

       for(i=1;i<=n;i++) a[i]=i;

       k=1;
       for(i=n;i>1;i--)
       {
          if(m%n!=0) m1=m%n;
          else m1=n;
          if(k-1+m1<=n) k+=m1-1;
          else k=k-1+m1-n;
          Left(a,k,n);
          n--;
       }
       j++;
       result[j]=a[1];
    }
    
    for(i=1;i<=j;i++) printf("%d\n",result[i]);
    
  return 0;
}

void Left(int *ptr,int hd,int tl)
{
   int i;
   for(i=hd;i<tl;i++)
   {
      ptr[i]=ptr[i+1];
   }
   ptr[tl]=0;
}
int num,a[301],b[1000];
void P(int m,int n)
{
	int i,k,j;
	for (i=1;i<=n;i++)
		a[i]=i;
	k=0;
	i=1;
	j=0;
	while (k<n-1)
	{
		if (a[i]!=0) 
			j++;
		if (j==m)
		{
			a[i]=0;
			j=0;
			k++;
		}
		i++;
		if (i==n+1)
			i=1;
	}	
	for (i=1;i<=n;i++)
		if (a[i]!=0)
			b[num]=i;
};	

void main()
{
	int i,m,n;
	for (num=0;;num++)
	{
		scanf("%d %d",&n,&m);
		if (m==0 && n==0)
			break;
		else
			P(m,n);
	}
	for (i=0;i<num;i++)
		printf("%d\n",b[i]);
}
int king(int n,int m)
{
	int num,k,i,j,total=0;
	int a[300];
	
	for(i=1;i<=n;i++)
		a[i]=i;
    for(j=1;;j++)
	{
			k=j;
	
		num=0;
		do
		{
			
			if(j%n!=0)
			{
	           if(a[j%n]!=0)
				num++;
			}
			else
			{
				if(a[n]!=0)
					num++;
			}
		    if(num<m) 
				j++;
		}while(num<m);
		if(j%n!=0)
		
		{
			a[j%n]=0;total++;
		}
		else
		{
			a[n]=0;total++;
		}
	if(total==n) break;
	}
	if(j%n!=0)
        return(j%n);
	else
	    return(n);
}
void main()
{
	int l,n,m,c[20],s;
	for(l=0;;l++)
	{
		scanf("%d %d",&n,&m);
	
		if(n==0) {s=l;c[l]=0;break;}
		c[l]=king(n,m);
		
		
	}
	l=0;
	for(l=0;l<s;l++)
	{
	
		printf("%d\n",c[l]);
	}
	
	
	
	
}
void main()
{
	int n[20],m[20];
	int k,z;
	int a[1000];
    int i,now; //i?r??,now??????"?????????-

    int j;
	for(k=0;;k++)
	{
	 scanf("%d%d",&n[k],&m[k]);
	 if(n[k]==0&&m[k]==0)
		 break;
	}
	for(z=0;z<k+1;z++)
	{
    
    for(j=1;j<=n[z];j++) //???????a[1]??

        a[j]=j;
    now=1;
    for(j=1;j<n[z];j++)
	{                           //??n-1????????????

        i=0;
        while(i<m[z])
		{
            if (a[now]==0) 
			{
                ++now; //?????0?????????????

                if (now>n[z])
                    now=1;
                //continue;

            }
            else 
			{ //??????

                i++; //i??????????

                if(i==m[z])
                    a[now]=0;
                ++now;
                if (now>n[z])
                    now=1;
            }
        }
    }

    for(j=1;j<=n[z];j++)
	{
		if (a[j]!=0)
			printf("%d\n",a[j]);
	}
	}
}
int num(int n,int m);
void main()
{   int x,y;
	while(scanf("%d%d",&x,&y)==2)
	{
       if(x==0&&y==0)
		   break;
	  else
		  printf("%d\n",num(x,y));
	  

	}




}

int num(int n,int m)
{
	int x=0,i=0,flag=0;
	int str[301];


	for(i=1;i<=n;i++)
		str[i]=1;
	while(flag<n)
	{
		i=1;
		for(i=1;i<=n;i++)
		{
			if(str[i]==1)
			{	x+=1;
		    	if(x==m)
				{
				  str[i]=0;
		   	      x=0;
			      flag+=1;
				}
			}
			if(flag==n)
			{
			    return(i);
				break;
			}

		}
	}
	



}
int main()
{
int i,j,m,n,k,t,N,a[300]; 
while(1){ 
	k=0;
   scanf("%d%d",&N,&n);
   for(i=0;i<N;i++)
		a[i]=i+1;
	
	
    if(N==0&&n==0)
		break;
	
	for(j=0,m=1;;j++,m++){
	   if(j==N) 
		j=0;
	   while(a[j]==0) {
		j++;
        if(j==N) 
		j=0;
	   }
	   if(m==n) {
		a[j]=0;
		m=0;
		k++;
	   }
	   if(k==N-1) 
		break;
	}
	
	for(t=0;t<N;t++){
       if(a[t]!=0) 
	   printf("%d\n",a[t]);
	} 

}
	return 0;
}
main()
{
	int a[300],b[300];
	int m,n,c=0,d=1,i,k,j=0,l,p;
	
   for(j=0;;j++) 
   {
	   scanf("%d %d",&n,&m);
	   if ((m==0)&&(n==0)) 
		   break;
	   for (i=1;i<=n;)
	{
        a[i]=i;
		i++;
	}
	i=n;
	a[n+1]=0;
		for (d=1;i>1;)
		{
			l=d+m-1;
			c=l/i;
			d=-i*c+l;
		while(d<=0)	 
			d=d+i;
			for (k=d;k<i;)
			{
				a[k]=a[k+1];
				k++;
			}
			a[i]=0;
			i--;
		}
		b[j]=a[1];
   }
   for (p=0;p<j;p++)
       printf("%d\n",b[p]);
	return 0;
}
void main()
{
	int m,n,i,j,k,t,h,a[301]={0};
	for(i=1;;i++)
	{
		scanf("%d%d",&n,&m);
		if(n==0||m==0)break;
		else
		{
			for(j=1;j<=n;j++)
			a[j]=1;
			k=0;t=n;
			for(j=1;;j++)
			{
				if(j%n==0)h=n;
				else h=j%n;
				if(a[h]!=0)k++;
				if(k==m)
				{
					a[h]=0;
					k=0;
					t--;
				}
				if(t==0)
				{
					printf("%d\n",h);
					break;
				}
			}
		}
	}				
}
int main()
{
    int n,m,i,s;
    for(;;)
    {
     scanf("%d %d",&n,&m);
     if(n==0)
        break;
     else
        if(n==1)
          printf("1\n");
        else
         {
          for(i=2,s=0;i<=n;i++)
            {
             s=(s+m)%i;
            }               
           printf("%d\n",s+1);
          }  
    } 
}
int main()
{
    int n,i,l,m,s;
    for(s=0;s<10000;s=s+1){
        scanf("%d%d",&n,&m);
        if(n>0&&m>0){
            int a[1000000];
            for(i=0;i<n;i=i+1){
                a[i]=i+1;
            }
            for(l=n;l>1;l=l-1){
                if((m%l-1)>0){
                for(i=0;i<(m%l-1);i=i+1){
                     a[l+i]=a[i];
                }
                }
                for(i=0;i<l;i=i+1){
                    a[i]=a[m%l+i];
               }
            }
            printf("%d\n",a[0]);
        }
    }
    return 0;
}
int findking(int m,int n);
int main(){
	int m[300];
	int n[300];
	int king[300];
	int i;
	for(i=0;i<300;i++){
		scanf("%d%d",&n[i],&m[i]);
		if((m[i]==0)&&(n[i]==0)){
			break;
		}
	}
	for(i=0;i<300;i++){
		if(m[i]==0&&n[i]==0){
			break;
		}
		king[i]=findking(m[i],n[i]);
	}
	for(i=0;i<300;i++){
		if((m[i]==0)&&(n[i]==0)){
			break;
		}
		printf("%d\n",king[i]);
	}
	return 0;
}
int findking(int m,int n){
	int i=0,num=0,zero=0,king;
	int sz[300]={0};
	while(1){
		zero=0;
		for(int j=0;j<n;j++){
			if(sz[j]==0){
				zero++;
			}
		}
		if(zero==1){
			break;
		}
		if(sz[i]==1){
				if(i==(n-1)){
			i=0;
		}else{
			i++;
		}
			continue;
		}
		num++;
		if(num==m){
			sz[i]=1;
			num=0;
		}
		if(i==(n-1)){
			i=0;
		}else{
			i++;
		}
	}
	for(i=0;i<n;i++){
		if(sz[i]==0){
			king=i+1;
		}
	}
	return king;
}
int f(int m,int n){
    int i,k=0;
    for(i=2;i<=n;i++)
    k=((m%i)+k)%i;
    return k;
}
int main(void){
int a[300][2],i;
for(i=0;i<300;i++){
scanf("%d%d",&a[i][0],&a[i][1]);
if(a[i][0]==0) break;
else printf("%d\n",f(a[i][1],a[i][0])+1);
}
return 0;
}
int main()
{   
    int n[100],m[100],i;
    int cho(int m,int n);n[0]=1;m[0]=1;
    for (i=1;n[i-1]!=0&&m[i-1]!=0;i++)
    scanf("%d %d",&n[i],&m[i]);
    for (i=1;n[i]!=0&&m[i]!=0;i++) printf("%d\n",cho(m[i],n[i]));
}
int cho(int m,int n)
{   
    int t=1,i,j,k,s,temp=1;int a[301];
    for (i=0;i<301;i++) a[i]=1;
    if (n!=1)
    {for (k=1;s!=1;k++)
    {for (i=1,t=temp;i<=m;) {if (t>n) t=1;if (a[t]==1) i++;t++;}a[t-1]=0;temp=t;
    for (j=1,s=0;j<=n;j++) if(a[j]==1) s++;} 
    for (j=1;j<=n;j++) if (a[j]==1) return (j);}
    else j=1;return (j);
}
int main()
{
	int n,m,a,b;
	int i,j,k,l,x,y;
	int bh[400]={0};
	int jishu=0;

	for(k=0;;k++)
	{
		
		scanf("%d%d",&n,&m);
		if(n==0&&m==0)
		{
			break;
		}
		else
		{
			for(i=0;i<400;i++)
			{
				bh[i]=0;
			}
			
			
			
			
			
			jishu=n;
			for(i=0;i<n;i++)
			{
				bh[i]=1;
			}



			for(i=0;jishu>1;)
			{
				if(bh[(i%n)]==0)
				{
					/*printf("%djiji\n",i);*/
					i=(i+1)%n;
					
				}
				else
				{

					for(x=0,y=0;x<m;)
					{
						if(bh[((i+x+y)%n)]!=0)
						{
							x++;
							
						}
						else
						{
							y++;
						}
					}
					bh[((i+x+y-1)%n)]=0;
					i=(i+x+y-1)%n;
					jishu--;
					/*printf("%d\n",i);*/
				}
			}

			for(i=0;i<n;i++)
			{
				if(bh[i]!=0)
				{
					printf("%d\n",i+1);
				}
			}




		}
	}



	return 0;
}
void main()
{
	int n[15],m[15],i;
	for(i=1;;i++)
	{
		scanf("%d%d",&n[i],&m[i]);
		if(n[i]==0&&m[i]==0) break;
	}
	int j,k,f;
	for(j=1;j<i;j++)
	{
		f=0;
		for(k=1;k<=n[j];k++)
		{
			f=(f+m[j])%k;
		}
		printf("%d\n",f+1);
	}

}
struct mon
{
	int num;
	struct mon*next;
};
void monkey(int m,int n)
{
	struct mon a[300],*p1,*p2;
	int i,j;
	for(i=1;i<=n;i++)
	{
		a[i].num=i;
		a[i].next=a+i+1;
	}
	a[n].next=a+1;
	p1=a+1;
	for(;n>1;n--)
	{
		for(j=1;j<m;j++)
		{
			p2=p1;
			p1=(*p2).next;
		}
		(*p2).next=(*p1).next;
		p1=(*p1).next;
	}
	printf("%d\n",(*p1).num);
}
int main()
{
	int n,m;
	while(1)
	{
		scanf("%d%d",&n,&m);
		if(m==0&&n==0) break;
		monkey(m,n);
	}
	return 0;
}
int main(){

	int n, m, id[N], num_monkey;

	int i;
	
	while(1){
		scanf("%d %d", &n, &m);

		if(n != 0 && m != 0){

			for(i = 0; i < n; i++){
				id[i] = i+1;
			}

			num_monkey = n;
			int index = 0;
			int count = 1;
			while(true){
				while(num_monkey > 1){
					if(id[index] != 0){
						if(count != m){
							count++;
							index = (index+1)%n;	
						}else{
							id[index] = 0;
							count = 1;
							num_monkey--;
						}
					}else{
						index = (index+1)%n;	
					}
				}

				for(i = 0; i < n; i++){
					if(id[i] != 0){
						printf("%d\n", id[i]);
						break;
					}
				}

				break;
			}
		}else{
			break;
		}
	}

	return 0;
}
int main()
{
	int n[100],m[100];
	int i, num = 0;
	for (i = 0; i<100; i++)
	{
		cin >> n[i] >> m[i];
		if (n[i]==0 && m[i]==0)
		{
			break;
		}
		num++;
	}
	int j = 0;
	for (j; j<num; j++)
	{
		int s = 0;
		for (int k = 2; k<=n[j]; k++)
		{
			s = (s+m[j])%k;
		}
		cout << s+1 << endl; 
	}
	
	return 0;
}
void main()
{
	int i,j,n,t,a[300],b[300];int N,M;
	do
	{
		scanf("%d %d",&N,&M);
		if(N==0&&M==0)break;
        for(i=1;i<=N;i++){b[i]=i;a[i]=i;}
        for(;N>1;)
		   {
             for(i=1;i<=N;i++)b[i]=a[i];
			 t=M%N;N--;
			 for(j=1;j<=N;j++)
			 {
				if(t+j<=N+1)a[j]=b[t+j];
				if(t+j>N+1)a[j]=b[t+j-N-1];
			 }
		   }
		   printf("%d\n",a[1]);
		   
	}while(N!=0&&M!=0);
}