semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
main()
{
	int m,n,k;
	int count;
	while(scanf("%d %d",&n,&m),m!=0&&n!=0)
	{
		int a[300][2];
		k=0;
		count=0;
		int x=1;
		for(int i=0;i<n;i++)
		{
			a[i][0]=i+1;
			a[i][1]=1;
		}
		while(x!=n)
		{
			if(a[k][1]==1)
			{
				count++;
			}
			if(count==m)
			{
				a[k][1]=0;
				count=0;
				x++;
			}
			k++;
			if(k>=n)
				k=0;
		}
		for(int i=0;i<n;i++)
		{
			if(a[i][1]==1)
			{
				printf("%d\n",a[i][0]);
				break;
			}
		}
	}
}
void main()
{   
	typedef struct {
     int data;
	 int next;
	}Link;

   Link a[Max];
   int n,m;
   int i;
   int p;
   
 while(1){
   scanf("%d%d",&n,&m);
   if(n==0||m==0)
	   exit(0);
   for(i=0;i<=n;i++)
	   a[i].data=i,a[i].next=i+1;
   a[n].next=1;
   a[0].data=n;
   p=n;
   while(a[0].data>1)
   {  
	  
      for(i=1;i<m;i++)
		  p=a[p].next;
      a[p].next=a[a[p].next].next;
	  a[0].data--;
      
   }
   
   printf("%d\n",a[p].data);
 }
	
}
int main(){
    int a[300];
    int n ,m ,d ,e ,f , i;//n m ?????? ?d???????
    
    e = 0;
    for(i = 0;i <= 299;i++){
        a[i] = 1;
    }
    do{
        
        
        scanf("%d %d",&n,&m);
        d = n;
        e = 0;
        for(i = 0;i <= 299;i++){
            a[i] = 1;
        }
        
        if(n != 0 || m != 0){//?????? d????
            
            for(i = 0;i <= (n - 1);i++){
                e = a[i] + e;
                if(e == m){
                    a[i] = 0;
                    d = d - 1;
                    e = 0;
                }
                if(i == n-1){
                    i = -1;
                    
                }
                if(d == 1)break;
                
            }//?????????
            for(f = 0;f <= n-1;f++){
                if(a[f] == 1)printf("%d\n",f+1);
                
            }
            }
    }
        
        
    
    while(n != 0||m != 0);
    return 0;    
}
int main()
{ 
  int a,n,m,i;
  while(cin>>n>>m&&m!=0)
  { a=0;
    for(i=2;i<=n;i++) a=(a+m)%i;
    cout<<a+1<<endl;
  }
  return 0;
}
int main()   
  {   
    int sum,test,i,last,j;   
    int mon[300];
    int num=0,count=0;   
    for(j=1; ;j++)
 {num=0;count=0;
 scanf("%d%d",&sum,&test);   
 if (sum==0&&test==0) break;
 for(i=0;i<sum;i++)   
        mon[i]=i+1;   
    while(num<sum)   
   {   for(i=0;i<sum;i++)   
   {   if(mon[i]!=0)   
                      {   count=count+1;   
                          if(count==test)   
                              {   num=num+1;   
                                  if(num==sum)   
                                  last=mon[i];   
                                  mon[i]=0;   
                                  count=0;   
                              }   
                      }   
 }
 }
   printf("%d\n",last);   
 }          
  return 0;
 }
int main()
{int m,n,i,j;
 int a[301][301];
 for(j=1;j<301;j++){
     a[1][j]=1;
     for(i=2;i<301;i++){
         a[i][j]=(a[i-1][j]+j-1)%i+1;
     }
 }
 for(i=0;i<1000;i++){
 scanf("%d%d",&n,&m);
 if(m==0&&n==0){
     break;
 }else{
    printf("%d\n",a[n][m]);}}
     return 0;
}
void main() 
{ 
	int n[100],m[100],i,j=0,s[100]={0}; 
	for(i=0;;i++)
	{
		scanf("%d",&n[i]); 
		scanf("%d",&m[i]); 
		if(n[i]==1)
			s[i]=0;
		if(m[i]==1)
			s[i]=n[i]-1;
		if(n[i]>1&&m[i]>1)
		{
	       for(j=2;j<=n[i];j++)
		   {
		      s[i]=(s[i]+m[i])%j;/*???????????????0?m-1?????????????k=m%n-1,
		 		  ???????????m%n?????0???????????n-1????????
				  ???????n-1???????????t???????????????????t
				  +k?%n???????*/
		   }
		}
		if(n[i]==0&&m[i]==0)
			break;
	}
	for(i=0;n[i]!=0;i++)
	{
		printf("%d\n",s[i]+1); 
	}
}
int main()
{
    int i,j,k,n,a[301],num,m,b[N],c[N],s,t;
    s=0;
    for(t=1;t<10000;t++)
    {
    scanf("%d%d",&(b[t]),&(c[t]));
    if(b[t]==0&&c[t]==0) break;
    s=s+1;
    }
for(t=1;t<=s;t++)
{
    j=0,k=0;
    for(i=1;i<=b[t];i++)
    {
     a[i]=1;
    }
    for(i=1;i<=b[t];i++)
    {
     if(a[i]==1)
     {
      j=j+a[i];
      if(j==c[t])
      {
       j=0;
       a[i]=0;
       k++;
      if(k==b[t])
       {
        num=i;
        break;
       }
      }
     }
    if(i==b[t])
    i=0;
   }
  printf("%d\n",num);
}
}
int main()
{
	int m,n,i,j=0,f[300],a[100];
	f[1]=0;
		while (cin>>n>>m)
		{
			if (n==0&&m==0)
				break;
			j++;
			for(i=2;i<=n;i++)
				f[i]=(f[i-1]+m)%i;
			a[j]=f[n]+1;

		}
		for(i=1;i<=j;i++)
			cout<<a[i]<<endl;
	return 0;
}
int chs(int *p0,int num,int *ptr,int skip);

int main()
{
  int n=0,m=0;
  int ppl[1000],king;
  int i;
  scanf("%d%d",&n,&m);
  while(n!=0&&m!=0)
  {
    for(i=0;i<n;i++)
    {
      ppl[i]=i+1;
    }
    for(i=n;i<1000;i++)
    {
      ppl[i]=0;
    }
    king=chs(ppl,n,ppl,m);
    printf("%d\n",king);
    scanf("%d%d",&n,&m);
  }
  return 0;
}

int chs(int *p0,int num,int *pchs,int skip)
{
  int *i=NULL;
  
  //????
  pchs=pchs+skip-1;
  while(pchs-p0>=num)
  {
    pchs=pchs-num;
  }
  
  //????
  if(num==1)
  {
    return *pchs;
  }
  //????
  else
  {
    //??
    if(pchs-p0==num-1)
    {
      return chs(p0,num-1,p0,skip);
    }
    //???
    else
    {
      for(i=pchs;i-p0<num-1;i++)
      {
        *i=*(i+1);
      }
      return chs(p0,num-1,pchs,skip);
    }
  }
}
int baoshu(int n,int m)
{
	int i,k,*p,x,sum,j,last,num[1000];
	k=1;
	p=num;   /*??p??*/
	for(i=0;i<n;i++)
	{
		*(p+i)=i+1;}
	
	for(i=0;i<m*n*n;i++)    
	{
	    sum=0;
		for(j=0;j<n;j++) if(*(p+j)!=0) {sum=sum+1;last=j+1;}
		if(sum==1) break;
	    x=i%n;          /*?????*/
		if(*(p+x)!=0) 
		{if(k==m) {*(p+x)=0;k=0;}
		k=k+1;}
		
	}
  return last;
}
void main()
{
	int g,h,s,monkey;

	for(s=0;s<100;s++)
	{
	scanf("%d %d", &g,&h);
	if(g==0 && h==0)	break;
	else {monkey=baoshu(g,h);
	printf("%d\n",monkey);}
	}
	
}
int main()
{
	int n[10000] = {1},m[10000] = {1},win[10000],i,s=0;
	int a, b;
	for(i=1;n[i - 1]!=0&&m[i - 1]!=0;i++)
		scanf("%d%d",&n[i],&m[i]);
	i --;
	for(a=1;a<i;a++)
	{
		s = 0;
		for(b=2;b<=n[a];b++)
		{
			s=(s+m[a])%b;
		}
		win[a]=s+1;
	}
	for(int c=1;c<i;c++)
	{
		printf("%d\n",win[c]);
	}
	return 0;
}
void monkey(int n,int m)
{
	int s,i,j,a[301];
	for(i=1;i<=n;i++)
		a[i]=1;
	j=0;
	s=0;
	i=1;
	while(s<n-1)
	{
		if(a[i]==1)
		{
			j++;
			if(j==m)
			{
				a[i]=0;
				s++;
				j=0;
				if(s==n-1)
					break;
			}
		}
		if(i==n)
			i=0;
		i++;
	}
	for(i=1;i<=n;i++)
		if(a[i]==1)
		{
			printf("%d\n",i);
			break;
		}
}
void main()
{
	int i,k,m[200],n[200];
	for(i=0;i<200;i++)
	{
		scanf("%d%d",&n[i],&m[i]);
		if(m[i]==0 && n[i]==0)
		{
			k=i;
			break;
		}
	}
	for(i=0;i<k;i++)
		monkey(n[i],m[i]);
}
int remain(int start[],int n,int m)
{
	int k,i,j,d;
	d=n-1;
	for(i=0;i<n;i++)
		start[i]=1;
	for(k=1;k<=(n-1);k++)
	{
		for(i=0,j=0;j<m;)
		{++i;
		if(start[(d+i)%n]!=0)
			j++;
		}
		d+=i;
		start[d%n]=0;
	}
	for(i=0;i<n;i++)
	{if(start[i]!=0)
	break;
	}
	return(i+1);
}
int main()
{
	int k,n[100],m[100],i,j;
	scanf("%d %d",&n[0],&m[0]);
	for(k=1;n[k-1]!=0&&m[k-1]!=0;k++)
		scanf("%d %d",&n[k],&m[k]);
	int a[100][100];
	for(j=0;j<k-1;j++)
	{
		for(i=0;i<n[j];i++)
			a[j][i]=1;
	}
	for(i=0;i<k-1;i++)
		printf("%d\n",remain(a[i],n[i],m[i]));
	return(0);
}
int main()
{
          int x,y,z,a,b,i,j;
          int n[100],m[100],o[1000];
          i=0;
          do
          {
              scanf("%d %d",&a,&b);
              if(a==0&&b==0) break;
              n[i]=a;
              m[i]=b;
              i++;
          }while(a!=0&&b!=0);
          for(j=0;j<i;j++)
          {
                          for(x=0;x<n[j];x++)
                          {
                                             o[x]=1;
                          }
                          x=-1;
                          y=0;
                          z=0;
                          do
                          {                            
                                                       if(x==(n[j]-1)) x=0;
                                                       else x++;  
                                                       if(o[x]>0) y++;
                                                       if(y==m[j])
                                                       {
                                                                  o[x]=o[x]-100;
                                                                  y=0;
                                                                  z++;
                                                       }
                          }while(z!=(n[j]-1));
                          for(x=0;x<n[j];x++)
                          {
                                             if(o[x]>0) printf("%d\n",x+1);
                          }
          }         
}
int check(int N,int p)
{
	int k[400];
	int i,j,count=0;
	for(i=0;i<N;i++)
		k[i]=1;
	i=-1;
	for(j=1;j<N;j++)
	{
		count=0;
		do
		{
			i=(i+1)%N;
			count=count+k[i];
		}while(count<p);
		count=0;
		k[i]=0;
	}
	j=0;
	while(k[j]!=1)j++;
	return(j+1);
}

void main()
{
	int n,m,res,i;
	while(scanf("%d %d", &n, &m) && n != 0 && m != 0)
	{
		res=check(n,m);
		printf("%d\n",res);
	}
}
int main(){
    int i,j,n,m,k,t,sz[300];
    while(1){
        scanf("%d %d",&n,&m);
        if (n==0&&m==0) break;
        for (i=0;i<n;i++) sz[i]=0;
        k=n,j=0;
        for(i=0;i<n;i=t){
            t=(i+1)%n;
            if (sz[i]){
                continue;
            }
            if (j++==m-1){
                sz[i]=1;
                k--;
                j=0;
            }
            if (k==0){
                printf("%d\n",i+1);
                break;
            }
        }
    }
    return 0;
}
int main()
{
    int n=1,m,a[300],b[300],i,k,j;
    for (;;)
    {
        scanf("%d %d",&n,&m);
        if (n==0) break;
        for (i=0;i<n;i++) a[i]=i+1;
        while (n>1)
        {
              if (m%n==0) k=n;
              else k=m%n;
              for (i=k,j=0;i<n;i++,j++) b[j]=a[i];
              for (i=0;i<k-1;i++,j++) b[j]=a[i];
              n-=1;
              for (i=0;i<n;i++) a[i]=b[i];
              }
        printf("%d\n",a[0]);
        }
        }
main()
{
    int a[300];
    int i,j,k,m,n;
    for(;;)
    {
        memset(a,0,sizeof(a));
        scanf("%d %d",&n,&m);
        if(m==0&&n==0)
        break;
        for(i=0,j=0,k=0;i<n-1;j++)
        {
            if(j>=n)
            j-=n;
            if(a[j]==0)
            k++;
            if(k==m)
            {
                a[j]=1;
                k=0;
                i++;
            }
        }
        for(i=0;i<n;i++)
        {
            if(a[i]==0)
            printf("%d\n",i+1);
        }
    }
}
void main()
{
	int a[301],b[50],i,j,k,x,n[50],m[50],c,d;
	for(k=1;k<=50;k++)
	{
		scanf("%d %d",&n[k],&m[k]);
		if(n[k]==0) break;
	}
	for(k=1;;k++)
	{	
		if(n[k]==0) break;
		for(i=1;i<=n[k];i++)
		{
			a[i]=i;
		}
		i=1;
		for(j=n[k];j>=2;j--)
		{
			i=(i+m[k]-2)%j+1;
			for(x=i;x<=j-1;x++)
			{
				a[x]=a[x+1];
			}
		}
		b[k]=a[1];
	}
	for(i=1;i<=k-1;i++)
	{
		printf("%d\n",b[i]);
	}
}
void main()
{int n,m,a[1000],i,t=0,k;
for(;;)
{scanf("%d%d",&n,&m);
if(n==0&&m==0)
break;
k=n;
for(i=1;i<=n;i++)
a[i]=1;
for(i=1;;i++)
{if(i==n+1)
i=1;
if(a[i]==1)
t++;
   if(t==m)
   { a[i]=0;
   k--;
   t=0;
   }
if(k==0)
break;


}
printf("%d\n",i);




}





}
int main(){
    int n,m,x,y;
    int sz[300];
    while(1){
        scanf("%d %d",&n,&m);
        if(n==0&&m==0){
            break;
        }
        for(int i=0;i<n;i++){
            sz[i]=0;
        }
        x=n;
        y=1;
        for(int t=0;t<n;t=(t+1)%n){
            if(sz[t]){
                continue;
            }
            if(y++==m){
                sz[t]=1;
                x--;
                y=1;
            }
            if(x==0){
                printf("%d\n",t+1);
                break;
            }
        }
    }
    return 0;
}
main()
{
   int k,j,i,l,m,n;
  int a[20][2];
  int p=0;
  for(j=0;;j++)
  {
  for(l=0;l<=1;l++)
  {
  scanf("%d",&a[j][l]);
  }
  printf("\n");
  p++;
  if((a[j][0]==0)||a[j][1]==0)
   break;
  }
  for(j=0;j<=p;j++)
  {
  if((0<a[j][0]&&a[j][0]<=300)&& (0<a[j][1]&&a[j][1]<=300)) 
  {  k=0;
    for(i=2;i<=a[j][0];i++)
    {
     k=((a[j][1]%i)+k)%i;
    }
            printf("%d\n",k+1);
  }          
  }
}
void main()
{
   int n, m, i, s,j=-1;
   while(j!=0)
   {
	   s=0;
	   scanf("%d %d", &n,&m);
	   if(m==0)j=0;
	   else
		   if(n==1)printf("1\n");

	       else
		   {
		       j=-1;
	           for(i=2; i<=n; i++)s=(s+m)%i;
               printf ("%d\n", s+1);
		   } 
   }

}
main()
{
    int m,n,count,j;
    scanf("%d %d",&m,&n);
    while (m != 0)
    {
        int monkey[310] = {0};
        for (int i = 0;i <= m-1;i ++)
            monkey[i]=2;
        j = -1;
        for (int i = 1;i <= m-1;i ++)
        {
            count = 1;
            while (count <= n)
            {
                j ++;
                switch(monkey[j])
                {
                    case 0:j = -1;break;
                    case 1:break;
                    case 2:count++;break;
                }
                
            }
            monkey[j] = 1;
        }
        for (int i = 0;i <= m - 1;i ++)
        {
             if (monkey[i]==2)
                printf("%d\n",i+1);
        }
        scanf("%d %d",&m,&n);
    }
}
int main()
{
    int m[300],n[300],a[300];
    int i=0,j=0,k=0,r=0,t=0,l,p=1,q=0;
    for (k=0;k<300;k++)
    {
    scanf("%d %d",&n[k],&m[k]);
    if (n[k]==0){k=300;}
    else r=r+1;
    }
    for (k=0;k<r;k++)
    {
t=0;q=0;
        for (i=1;i<=n[k]+1;i++)
        {
            a[i]=i;
        }
        
        for (i=1;i<=n[k]+1;i++)
    {
            if (i==n[k]+1){i=1;}
            if (a[i]!=0){t=t+1;}
            if (t==m[k]){a[i]=0;t=0;q=q+1;}
            if (q==n[k]-1){i=n[k]+2;q=0;}
        }
        for (j=1;j<=n[k];j++)
        {
            if (a[j]!=0)
            {
               printf("%d\n",a[j]);
            }
        }
    }
    return 0;
}
int main()
{
	int n,i,j,m,a[300];
	while(1){
		scanf("%d %d",&n,&m);
		if(n==0||m==0)
			break;
		for(i=0;i<n;i++)
			a[i]=i+1;
		i=0;
		while(n!=0){
			i=i+m-1;
			for(j=i%n;j<n-1;j++)
				a[j]=a[j+1];
			i=i%n;
			n--;
		}
		printf("%d\n",a[0]);
	}
	return 0;
}
int main()
{
	int a[1000],b[1000];
	int n,m,i=1,j=1,k=1,l=1;
	while(1)
	{
		i=1,j=1,k=1,l=1;
	scanf("%d %d",&n,&m);
	if(n==0&&m==0)
		break;
	for(i=1;i<n;i++)
	{
		a[i]=i;
	}
	i=1;
	while(j<n)
	{
		while(k%m!=0)
		{
			for(l=1;l<j;l++)
			{
				if(a[(i-1)%n+1]==b[l])
					goto xunhuan;
			}
			k=k+1;
xunhuan:i=i+1;
		}
		while(1)
		{
			for(l=1;l<j;l++)
			{
				if(a[(i-1)%n+1]==b[l])
				{
					i=i+1;
					break;
				}
			}
			if(l==j)
				break;
		}
		b[j]=a[(i-1)%n+1];
		j=j+1;
		k=k+1;
		i=i+1;
		while(1)
		{
			for(l=1;l<j;l++)
			{
				if(a[(i-1)%n+1]==b[l])
				{
					i=i+1;
					break;
				}
			}
			if(l==j)
				break;
		}
	}
	for(l=1;l<=n;l++)
	{
		k=1;
		for(i=1;i<n;i++)
		{
			if(l!=b[i])
				k=k+1;
		}
		if(k==n)
			break;
	}
	printf("%d\n",l);
	}
	return 0;
}
void main()
{
int a[320];int b[2][20],g=0,q;
int i,j,m,n,mj=0;
do
{
	scanf("%d%d",&b[0][g],&b[1][g]);
	g++;
}while(b[0][g-1]!=0&&b[1][g-1]!=0);

q=g-1;
for(g=0;g<q;g++)
{
	m=b[1][g];n=b[0][g];
        for(i=1;i<=n;i++)
			a[i]=i;
		for(i=1,j=0,mj=0;j<n-1;i++)  
		{
			if(i>n)i=i-n;
			if(a[i]!=0)
			{
				mj=mj+1;
				if(mj%m==0)
				{
					a[i]=0;j++;
				}
			}
		}
		for(i=1;i<=n;i++)
			if(a[i]!=0)printf("%d\n",a[i]);
}
}
int main(int argc, char* argv[])
{
	int n,m;
	int*p;
	int i,j,k;
   for(int a=0;a<344;i++)
   {
	 scanf("%d%d",&n,&m);
	p=(int*)malloc(sizeof(int)*n);
	for(i=0;i<n;i++)
		p[i]=0;
	k=n;
	j=1;
	for(i=0;i<n;i=(i+1)%n)
	{
		if(p[i])
			continue;
		if(j++==m)
		{
			p[i]=1;
			k--;
			j=1;
		}
		if(k==0)
		{
			printf("%d\n",i+1);
			break;
		}
	}
    if(n==0||m==0) break;
	free(p);
   }
	return 0;
}
int fun(int m,int n)
{
	int i,j=0,k,e;
	int r[300]={0};
	k=m;
	while(k>0)
	{
		for(i=0;i<m;i++)
	   {	
		  if(r[i]<0)continue;
   	           r[i]=0;
	   }
		for(i=0;i<m;i++)
		{
			if(r[i]<0)continue;
			j++;
			r[i]=r[i]+j;
			if(r[i]%n==0)
			{
				r[i]=-1;
				k--;e=i;
			}
		}

	}
	return e+1;
}
int main()
{
int m,n,k;
while(1){
scanf("%d %d",&m,&n);
if(m==0&&n==0)break;
printf("%d\n",fun(m,n));
}
return 0;
}
int main ()  {
   int k,n,x,i,s;
   for(i=1;1;i++) {
   scanf("%d %d",&k,&n) ;
   if(k==0&&n==0) {break ; }
   int a[k] ;
   for(i=1;i<=k;i++) {
       a[i]=i;
   }
   s=k; x=0 ;
   for(i=0;s>1;i++) {
       if(a[i%k+1]!=-1) {x++;}
       if(x==n&&a[i%k+1]!=-1) {a[i%k+1]=-1;
       s--;x=0; }
   }
   for(i=1;i<=k;i++) {
       if(a[i]!=-1) {printf("%d\n",i);}
   } }
   return 0;}
void main()
{
	int q[300],w[300],j=0,e,i,*p,a[500],k,t;
	do
	{
		scanf("%d%d",&q[j],&w[j]);
		j++;
	}
	while(q[j-1]!=0);
	e=j-1;
	j=0;
	for(j=0;j<e;j++)
	{
		p=a;
	for(i=0;i<q[j];i++)
		*(p+i)=i+1;
	i=0;
	k=0;
	t=0;
	while(t<q[j]-1)
	{
		if(*(p+i)!=0)
			k++;
		if(k==w[j])
		{
			*(p+i)=0;
			k=0;
			t++;
		}
		i++;
		if(i==q[j])
			i=0;
	}
	while(*p==0)
		p++;
	printf("%d\n",*p);
	}
}
int main()
{
	int n,m,i,j,a,k;
	while(cin>>n>>m&&m!=0)
	{
		a=0;
		for(i=2;i<=n;i++)
		{
			a=(a+m)%i;
		}
		cout<<a+1<<endl;
	}
    return 0;
}
void main()
{
	int exin(int n,int m);int king;
	int a[20]={0};  
    int b[20]={0};   
   
    int i,j,l;

    for(i=0;;i++)
    {
	  scanf("%d%d",&a[i],&b[i]);
	  if(a[i]==0)
	  {
		j=i;
		break;
	  }
   }
	l=j;
	for(i=0;i<l;i++)
	{
		king=exin(a[i],b[i]);
		printf("%d\n",king);
	}
}


int exin(int n,int m)
{
	int i,k=0,a=0,*p,num[300];
	p=num;
	for(i=0;i<n;i++)
		*(p+i)=i+1;
	i=0;
	while(a<n-1)
	{
		if(*(p+i)!=0) k++;
		if(k==m)
		{
			*(p+i)=0;
			k=0;
			a++;
		}
		i++;
		if(i==n) i=0;
	}
	while(*p==0) p++;
	return(*p);
}
/*****************************************************************/
/* ????????                                              */
/*    ???c[i][j]??????????????????????  */
/* c[i][j]=(c[i-1][j]+j) mod i???i??????j??????? */
/* ?????????                                            */
/*    ??i?1?N???????O(n)                              */
/* ??????c[N][M]                                           */
/* ?? 2010-11-29                                               */
/*****************************************************************/


//????????

//?????????
typedef struct inputandoutput{
	int n;
	int m;
	int king;
	struct inputandoutput  * next;
}LinkIO;

//??????????
typedef struct{
	LinkIO * head;
	LinkIO * tail;
	int    total;
}LinkIOHead;

//n????m??
int n,m;

//????????
int CheckInput(int num,int total){
	if (num<0)
	{
		return ISNOT_POSITIVEINT;
	} 
	else if (num>total)
	{
		return ISMORETHAN_THREEHUNDRED;
	} 
	else
	{
		return ISCORRECT;
	}	
}

//???????
int GetUserInput(int * n,int * m){
	int checkresult=0;
	scanf("%d %d",n,m);
    checkresult=CheckInput(*n,300);
	if (checkresult==ISNOT_POSITIVEINT)
	{
	
		printf("error!\n");
	} 
	else if (checkresult==ISMORETHAN_THREEHUNDRED)
	{
		
		printf("error!\n");
	} 
	else
	{
		checkresult=CheckInput(*m,300);
		if (checkresult==ISNOT_POSITIVEINT)
		{
			printf("error!\n");
		} 
		else if (checkresult==ISMORETHAN_THREEHUNDRED)
		{
			
			printf("error!\n");
		} 
		else
		{
			if (*n==0 && *m==0)
			{
			
			} 
			else if (*n==0 || *m==0)
			{
				printf("error!\n");
			}
			else{
				return 1;
			}	
		}
	}
	return 0;
}

//??????n?m?????
void InsertIntoLinkIO( LinkIOHead * iohead ,int n,int m) 
{
	LinkIO *p;
	p=(LinkIO *) malloc(sizeof(LinkIO));
	if (p==NULL)
	{
		printf("error!");
		printf("error,n=%d,m=%d!\n",n,m);
		return;
	}
	p->n=n;
	p->m=m;
	p->king=0;
	p->next =NULL;
	if (iohead->head==NULL && iohead->tail==NULL)
	{
		iohead->head=p;
		iohead->tail=p;
		iohead->total=1;
	} 
	else
	{
		iohead->tail->next=p;
		iohead->tail=p;
		iohead->total=iohead->total+1;
	}
}

//????
int GetKing( int kn, int km ) 
{
	int king=0,i=0,j=0;
	int kresult=0;
	for (i=2;i<=kn;i++)
	{
		kresult=(kresult+km) % i;
	}
	return kresult+1;
}

//???
int main(){
	int inputresult=0;
	int king=0;
	LinkIOHead *iohead;
	LinkIO *p;
	
	iohead=(LinkIOHead *)malloc(sizeof(LinkIOHead));
	if (iohead==NULL)
	{
		printf("error!");
		return 0;
	}
	iohead->head=NULL;
	iohead->tail=NULL;
	iohead->total=0;

	inputresult=GetUserInput(&n,&m);
	while (inputresult==1)
	{
		InsertIntoLinkIO(iohead,n,m);
		inputresult=GetUserInput(&n,&m);
	}
	
	p=iohead->head;
	while (p!=NULL)
	{		  
		king=GetKing(p->n,p->m);
		p->king=king;
		p=p->next;
	}
	
	p=iohead->head;
	while (p!=NULL)
	{
		printf("%d\n",p->king);
		p=p->next;
	}
	
	if (iohead!=NULL)
	{
		free(iohead);
	}
	if (p!=NULL)
	{
		free(p);
	}

	return 0;
}
struct number{
  int num;
  struct number *next;
};
int main(void)
{
  int n,m,i;
  struct number *p,*head,*q;
  while(scanf("%d%d",&n,&m)&&n>0&&m>0){
    p=(struct number *) malloc(LEN);
    head=p; 
    for(i=0;i<n-1;i++){
      p->num=i+1;
      p->next=(struct number *) malloc(LEN);
      p=p->next;
    }
    p->num=n;
    p->next=head;
    q=p;
    while(p->next!=p){
      for(i=0;i<m-1;i++) p=p->next;
      q=p;
      p=p->next;
      q->next=p->next;
      p=q;
    }
    printf("%d\n",p->num);
  }
  return 0;
}
void hehe(int n,int m)
  {
  int a[300],b[300],c,i,j;
  for(i=1;i<=n;i++)
  a[i]=i;
  for(i=n;i>1;i--)
    {
	  c=(m%i);
	  for(j=c+1;j<=i;j++)
	  b[j-c]=a[j];
	  for(j=1;j<c;j++)
	  b[i-c+j]=a[j];
      for(j=1;j<i;j++)
	  a[j]=b[j];
	}
	printf("%d\n",a[1]);
}
  void main()
  {int n[15],m[15],i,j;
for(i=0;i<15;i++)
	{
		scanf("%d %d",&n[i],&m[i]);
		if(m[i]==0&&n[i]==0)
		break;
		else
		scanf("\n");
	}
    for(j=0;j<i;j++)
		hehe(n[j],m[j]);
  }
int main()
{
    int m,n;
    int a[1000];
    int i,k;
    scanf("%d %d",&n,&m);    
    while(m!=0&&n!=0)
    {
    int j=1;
    a[0]=0;
    for(i=1;i<=n;i++)
      a[i]=i;
    for(i=1;i<=n-1;i++)
    {
      j=(m+j-2)%(n-i+1)+1;
      for(k=1;k<=n-i;k++)
        if(k>=j)
          a[k]=a[k+1];
    }
    printf("%d\n",a[1]);
    scanf("%d %d",&n,&m);    
    }
    
    getchar();
    getchar();
}
int main()
{
	while(1)
	{
		int n,m;int a[310]={0};
		scanf("%d %d",&n,&m);
		if(n==0&&m==0) break;
		int i=0,j=-1;
		while(1)
		{
			i=i+1;
			j=j+1;
			if(j==n)
			{
				j=j-n;
			}
			if(a[j]==1)
			{
				i=i-1;
				continue;
			}
			if(i==m)
			{
				a[j]=1;	
				i=i-m;
			}
			int s=0,win=0,q=0;
			for(q=0;q<n;q++)
			{
				if(a[q]==0)
				{
					s+=1;
					win=q;
				}
				if(s>1)
				{
					break;
				}
			}
			if(q==n)
			{
				printf("%d\n",win+1);
				break;
			}
		}
	}
}
int queue[90010];//?? 

int main()
{
   // freopen("1.in","r",stdin);
   // freopen("1.out","w",stdout);
    int n,m;
    while(1)
    {
    cin>>n>>m;
    if(n==0&&m==0)  break;
    int front=0,rear=n;//??????????????????? 
    for(int i=0;i<n;i++)
      queue[i]=i+1;
    for(int i=0;i<n-1;i++)
    {
            for(int j=1;j<m;j++)
            {
                    queue[rear++]=queue[front];
                    front++;
            }
            front++;
    }
    cout<<queue[front]<<endl;//??????????????? 
    }
    return 0;
}
struct mon
{
	int a;
	struct mon *next;
};

struct mon *app(int n)
{
	struct mon *newnode, *head, *thisnode;
	int i;
	
	for(i=1;i<=n;i++)
	{
		newnode=(struct mon *)malloc(sizeof(struct mon));
		newnode->a =i;
		if(i==1)
		{
			head=newnode;
			thisnode=head;
		}
		else
		{
			thisnode->next =newnode;
			thisnode=newnode;
		}
		
	}
	thisnode->next =head;
	return head;
}

void shuchu(int n, int m)
{
	struct mon *head;
	int i;
	head=app(n);

	do
	{
	for(i=1;i<m-1;i++)
		head=head->next ;
	head->next =head->next ->next ;
	head=head->next ;
	}while(head->next !=head);

	printf("%d\n",head->a );

}


int main()
{
	int n,m,sign=1;

	for(;sign;)
	{
		scanf("%d%d",&n, &m);
		if(m==1)
			printf("%d\n",n);
		else
		{
		if(n!=0)
			shuchu(n, m);
		else sign=0;
		}
	}
	
	return 0;
}
/*??*/
int king;
int monkeynum(int [],int);
void main()
{
	int m[20],n[20],i,j,k,start,casenum,monkey[300];
	for(i=0;;i++)
	{
		scanf("%d %d",&n[i],&m[i]);
		if(!m[i]) break;
	}
	casenum=i;
	for(i=0;i<casenum;i++)
	{
		for(j=0;j<300;j++)
			monkey[j]=0;
		for(j=0;j<n[i];j++)
			monkey[j]=1;
		start=0;
		while(monkeynum(monkey,n[i])!=1)
		{
				/*printf("%d\n",monkeynum(monkey,n[i]));*/
			k=m[i];
			while(k>0)
			{
				if(start==n[i]) start=0;
					/*printf("start=%d",start);
					getchar();*/
				if(monkey[start]) --k;
					/*printf("k=%d",k);
					getchar();*/
				++start;
			}
			monkey[start-1]=0;
				/*printf("kill monkey %d",start);
				getchar();
				printf("start=%d",start);
				getchar();*/
		}
		printf("%d",king);
		if(i<casenum-1) printf("\n");
	}
}
int monkeynum(int monkey[],int a)
{
	int i,num=0;
	for(i=0;i<a;i++)
		if(monkey[i])
		{
			num++;
			king=i+1;
		}
	return num;
}