semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main(){
	int i,j,row=0,count=0,check,zeronum,n[100],m[300],arr[300];
	for(i=0;i<300;i++){
		scanf("%d%d",&n[i],&m[i]);
		if(n[i]==0||m[i]==0){
			break;
		}
		row++;
	}
	for(i=0;i<row;i++){
		for(j=0;j<n[i];j++){
			arr[j]=j+1;
		}
		count=0;
		check=100;
		zeronum=0;
		while(check!=0){
			for(j=0;j<n[i];j++){
				if(arr[j]!=0){
					count++;
					if(count==m[i]){
						count=0;
						arr[j]=0;
						zeronum++;
					}
					if(zeronum==n[i]-1){
						check=0;
						break;
					}
				}
			}
		}

		for(j=0;j<n[i];j++){
			if(arr[j]!=0){
				printf("%d\n",arr[j]);
			}
		}
	}
	return 0;
}
int main()
{
	int i,j,k,m,n,num[500],*p;
	while(cin>>n>>m)
	{
		if(n==0&&m==0)
			break;
		if (n==1)
			cout<<1<<endl;
		if (n<m)
			continue;
		p=num;
		for(i=0;i<n;i++)
		{
			*(p+i)=i+1;
		}
		i=0;
		j=0;
		k=0;
		while(k<n-1)
		{
			if(*(p+i)!=0)
				j++;
			if(j==m)
			{
				*(p+i)=0;
				j=0;
				k++;
			}
			i++;
			if(i==n)
				i=0;
		}
		while(*p==0)
			p++;
		cout<<*p<<endl;
	}
	return 0;
}
int king(int N,int M)
{
	int A[300]={0};
	int B[300]={0};
	int m0;
	int i,j;
	for(i=0;i<N;i++)
		A[i]=i+1;
	for(i=1;i<N;i++)
	{
		for(j=0;j<(N-i);j++)
		{
			
			m0=M%(N+1-i);
			if(j<N-i+1-m0)
				B[j]=A[m0+j];
			else if(j>=N-i+1-m0)
				B[j]=A[j+m0-N+i-1];
		}
		for(j=0;j<(N-i);j++)
			A[j]=B[j];
	}
		return A[0];
}
void main()
{
	int a[100],b[100];
	int i;
	int n=0;
	for(i=0;;i++)
	{
		scanf("%d%d",&a[i],&b[i]);
		n=n+1;
		if(a[i]==0&&b[i]==0)
			break;
	}
	n=n-1;
	for(i=0;i<n;i++)
	printf("%d\n",king(a[i],b[i]));

}
int main(){
    int c;
    for(c=0;c<31221;c++){
        int sz[300],a,s,i,k,n,m,b;
        scanf("%d%d",&n,&m);
        if(n==0&&m==0){break;}
        a=0,b=0,s=0;
        for(i=0;i<n;i++){
            sz[i]=1;
        }
        k=0;
        while(b<n-1){
                s=s+sz[k];
                if(s==m){
                    sz[k]=0;s=0;b=b+1;
                }
            
        k=k+1;
        if(k==n){k=0;}
        }
        for(i=0;i<n;i++){
            if(sz[i]==1){
                printf("%d\n",i+1);
            }
        }
    }
return 0;}
int f(int m,int n)
{
 int i,a[300];
 int k=n;
    for(i=0;i<n;i++){
  a[i]=0;
 }
 int j=1;
 for(i=0;i<n;i=(i+1)%n){
  if(a[i]){
   continue;
  }
  if(j++==m){
   a[i]=1;
   k--;
   j=1;
  }
  if(k==0){
   return i+1;
      break;
  }
 }
 
}
int main()
{
 int m,n,i,a[1000],num=0;
 for(i=0;;i++){
	  if(m==0&&n==0){
		 break;
	 }
	 scanf("%d%d",&n,&m);
	 if(m==0&&n==0){
		 break;
	 }
	 a[i]=f(m,n);
	 num++;
 }
 for(i=0;i<num;i++){
	 printf("%d\n",a[i]);
 }
 return 0;
}
void main()
{
	int k,t,n,m,i,mon[300],pri[300],h=0,*p;
	scanf("%d%d",&n,&m);
	  while(m!=0&&n!=0)
	  {
		t=0;
		k=0;
		p=mon;
		for(i=0;i<n;i++)
		{
			*(p+i)=i+1;
		}
		i=0;
		while(t<n-1)
		{
			if(*(p+i)!=0) k++;
			if(k==m)
			{
				*(p+i)=0;
				k=0;
				t++;
			}
			i++;
			if(i==n) i=0;
		}
		while(*p==0)p++;
		pri[h]=*p;
		h++;
		scanf("%d%d",&n,&m);
	}
	for(i=0;i<h;i++)
	{
		printf("%d\n",pri[i]);
	}
}
int josephus0(int n, int m)
{
	if (n == 2) return (m%2) ? 2 : 1;
	int v = (m+josephus0(n-1,m)) % n;
	if (v == 0) v = n;
	return v;
}
int josephus(int n, int m)
{
	if (m == 1) return n;
	if (n == 1) return 1;
	if (m >=n) return josephus0(n,m);
	int l = (n/m)*m;
	int j = josephus(n - (n/m), m);
	if (j <= n-l) return l+j;
	j -= n-l;
	int t = (j/(m-1))*m;
	if ((j % (m-1)) == 0) return t-1;
	return t + (j % (m-1));
}
int main()
{
int n , k;
while(2 == scanf("%d %d",&n ,&k))
{
   if(n == 0 && k == 0)break;
    printf("%d\n",josephus(n , k));
}
 return 0;
}
int main()
{
	int count,a[300],n,m,i,exist;
	while(1)
	{
	scanf("%d%d",&n,&m);
	if (n==0&&m==0) break;
	exist=n;
	for (i=0;i<n;i++)
		 a[i]=1;
	i=0;count=0;
	while(exist>1)
	{
		if(a[i]!=0) {count++;}
		if (count==m) {a[i]=0;exist--;count=0;}
		i++;
		if (i==n) i=0;
	}
	for (i=0;i<n;i++)
		 if (a[i]!=0) printf("%d\n",i+1);
	}
	return 0;
}
int main()
{
	int m,n,k,i,j,count=0;
	for(k=0;;k++)
	{
		scanf("%d%d",&n,&m);
		if(m!=0&&n!=0)
		{
			int *num=(int*)malloc(sizeof(int)*n);//????
			for(i=0;i<n;i++)
				*(num+i)=i+1;

			i=0;
			for(j=0;j<n-1;j++)                    //??n-1?
			{
				for(;;){
					if(*(num+i)==0)
						i=(i+1)%n;              //??0????
					else{
				        count++;
				        if(count==m)
						{
							*(num+i)=0;
							count=0;
							i=(i+1)%n;
						    break;
						}
					    else i=(i+1)%n;
					}                          //count??????????m???
				}
			}
		   for(i=0;i<n;i++)
		   {
			   if(*(num+i)!=0){
				   printf("%d\n",num[i]);         //????0???
				   break;
			   }
		   }
		   free(num);
		}
		else
			break;
	}
	
	return 0;
}
main()
{
	int m,n,a[300],i,j,k,p;
	for(;;)
	{
		scanf("%d%d",&n,&m);
		if(m==0&&n==0)
			break;
		for(i=0;i<n;i++)
		{
			a[i]=i+1;
		}
		p=0;
		for(k=1;k<n;k++)
		{
			for(i=0;i<m;)
			{
				p=p%n;
				if(a[p]!=0)
					i++;
				if(i==m)
					a[p]=0;
				p++;
			}
		}
		for(j=0;j<n;j++)
		{
			if(a[j]!=0)
	printf("%d\n",a[j]);
	}

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

		b=(k+m)%l;
		if(b==0) b=l;
		for(i=b-1;i<l;i++)
			a[i]=a[i+1];
		l--;
		k=b-1;
		if(a[1]==0) break;
	}

	printf("%d\n",a[0]);

}
}
void main()
{
	int i,j,n,m,t,a[300][2],s;for(;;){
	scanf("%d%d",&n,&m);if(n==0)break;
	for(i=0;i<n;i++)a[i][0]=i;
	for(t=n,s=0;t>1;t--,s=!s)for(i=m%t,j=0;j<t-1;i++,j++)a[j][!s]=a[i%t][s];
	printf("%d\n",a[0][s]+1);
}}
void main()
{
	int a[301],b[301];
	int i,j,n,m,p,t;
	int line,num;
	for(;;)
	{
	scanf("%d %d",&n,&m);
	if(n==0&&m==0)break;
	else
	{
	for(i=1;i<=n;i++)
		a[i]=i;
	for(num=0;num<n-1;num++)
	{
	    p=n-num;
	    for(i=1;;i++)
		{
			if(p>=m)break;
		    p=p+n-num;
		}
		if(i==1) line=m;
		else line=n-num-p%m;
	    for(j=1;j<=n-num-1;j++)
		{
	 	   if(line+j>n-num)
		    	t=line+j-(n-num);
		   else t=line+j;
		   b[j]=a[t];
		}
		for(j=1;j<=n-num-1;j++)
			a[j]=b[j];
	}
    printf("%d\n",a[1]);
	}
	}
}
//#include<stdlib.h>
//#include<math.h>
int main()
{
	int n,m,i,j;
	int a[301];
	while(true){
		scanf("%d %d",&n,&m);
		if(n==0)
			break;
		for(i=1;i<n;i++)
			a[i]=i;
		a[0]=n;
		j=1;
		while(n>1){
			j=(m+j-1)%n;
			
			
			for(i=j;i<n-1;i++)
				a[i]=a[i+1];
			n--;
		}
		printf("%d\n",a[0]);
	}
	return 0;
}
int s(int x,int y)
{
   int t;
   t=x%y;
   return t;
}

int main()
{
      int i=0,j=0,k=0,n=0,m=0,x=0,y=0,z=0,p=0,q=0;
      int a[300],b[300],c[300];
   
  for(p=0;p<100;p++)
  {         
     int i=0,j=0,k=0,n=0,m=0,x=0,y=0,z=0,p=0,q=0;       
     memset(a,0,300*sizeof(int));
     memset(b,0,300*sizeof(int));
     memset(c,0,300*sizeof(int));
        
     scanf("%d %d\n",&n,&m);
     if (n==0 &&m==0)
     break;
     
     else
  {     
     
     
     for (i=0;i<n;i++)
     {
        a[i]=i+1;
        b[i]=a[i];
        c[i]=a[i];
     }

     
   for (j=n;j>1;j--)   
   {  
       k=0;
       if (j>=m)
        {
          k=m-1;
          a[k]=0;
          
         } 
       else 
       {
            k=s(m,j)-1;
            a[k]=0;
       }
      
      for(x=k+1,y=0;x<j;x++,y++)
      {
               a[y]=c[x];     
      }
         
      for(x=0,z=y;x<k;x++,z++)     
      {
            a[z]=c[x];
      }    
      
      for(i=0;i<j;i++)
      c[i]=a[i];
      
   }  
 
  for( i=0;i<n;i++)
   if (b[i]==a[0])
   printf("%d\n",i+1);
} 
}

 
}
main()
{
      int a[1000][1000];
      int n,m,i,p,q,k,j,l,b;
      for(i=1;;i++)
      {
              scanf("%d %d",&n,&m);
              if(n==0)
              break;
               for(l=0;l<n;l++)
              {
                              a[0][l]=l+1;//?????????? 
              }
              for(k=1;k<n;k++)
              {
                               p=m%(n-k+1);//???K??????????? 
                               for(j=0;j<=n-k;j++)
                               {
                                             
                                             q=(p+j)%(n-k+1);//???????????? 
                                             a[k][j]=a[k-1][q];
                                             b=a[k][0];
                               }
              }
              printf("\n%d",a[n-1][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 a,b,i,re;
	for(i=0;;i++){
		scanf("%d%d",&b,&a);
		if(a==0)
			break;
		re=f(a,b)+1;
		printf("%d\n",re);
	}
	return 0;

}
main()
{
      int m,n,i,j,k,l,a[300];
      for(i=1;;i++)
      {   scanf("%d %d",&n,&m);
          if(m==0&&n==0)
            break;
          else
          {for(j=0;j<n;j++)
              a[j]=j+1;
           
           for(k=1,j=0;k<=n-1;k++)
              { 
                 
                    if((m-1)%(n-k+1)+j<=n-k)
                      {for(l=(m-1)%(n-k+1)+j+1;l<=n-k;l++)
                         a[l-1]=a[l];
                       if( (m-1)%(n-k+1)+j==n-k)
                          j=0;
                       else
                          j=(m-1)%(n-k+1)+j;
                      }
                    else
                       {  for(l=((m-1)%(n-k+1)+j)-(n-k);l<=n-k;l++)
                             a[l-1]=a[l];
                          j= ((m-1)%(n-k+1)+j)-(n-k)-1; 
                       }
              }  
              
           printf("%d\n",a[0]);
          }  
      }
      
}
int main()
{
int i,p,w,j;
int n[300]={0};
int m[300]={0};
p=0;
w=0;
do
{
	scanf("%d %d",&n[p],&m[p]);
	p++;
}
while(n[p-1]!=0);
p=p-1;
for(i=0;i<p;i++)
{
for(j=2;j<=n[i];j++)
{ 
w=(w+m[i])%j;
}
   printf ("%d\n", w+1);
   w=0;
}
return 0;
}
int main(int argc, char* argv[])
{
	int n,m,k,i,j,p,num;
	int a[301];
	for(;;)
	{
		scanf("%d%d",&n,&m);
		if(n==0&&m==0)
			break;
		else if(m==1)
			printf("%d\n",n);
		else
		{
    	    k=n+1;num=0;
   	        for(i=1;i<n+1;i++)
			{
		        a[i]=i;
			}
	        while(num<n-1)
			{
	            for(j=1;j<n+1;j++)
				{
		            if(a[j]!=0&&a[j]%m==0)
					{
	                     a[j]=0;
				         num++;
					}
				    else;
				}
	            for(p=1;p<n+1;p++)
				{
	                if(a[p]==0)
					{
		   	              continue;
					}
	   	            else
					{
			             a[p]=k;
	        	         k++;
					}
				}	
			}
            for(i=2;i<n+2;i++)
			{
	        	if(a[i-1]!=0)
				{
		        	break;
				}
			}
	        printf("%d\n",i-1);
		}
	}
	return 0;
}
struct hz
{
    int num;
struct hz *next;
}hz[300];
void main()
{
struct hz *head, *p1, *p2;
    int i,j,t=0,k;
int n[300],m[300];
for(i=0;i<300;i++)
{
scanf("%d%d",&n[i],&m[i]);
t++;
if(n[i]==0&&m[i]==0)
break;
}

for(i=0;i<t-1;i++)
{
for(j=0;j<n[i]-1;j++)
{
    hz[j].num=j+1;
    hz[j].next=&hz[j+1];
}
hz[n[i]-1].num=n[i];
hz[n[i]-1].next=&hz[0];
        
if(m[i]!=1)
{
    head=&hz[0];
    for(j=0;j<n[i]-1;j++)
{ 
    p1=head;

                for(k=0;k<m[i]-2;k++)
  p1=p1->next;

     p2=p1;
     p1=p1->next;
     p2->next=p1->next;
     head=p1->next;
}
    printf("%d\n",head->num);
}
else
printf("%d\n",n[i]);
}


}
int main(){
	int n=1,m=1,a,j;
	
    while(n!=0 && m!=0){
		a=0;
		scanf("%d %d",&n,&m);
		
		int i;
		int *p=(int*)malloc(sizeof(int)*(n+1));
		for(i=1;i<=n;i++){
			p[i]=i;
		}
		int k=n;
	
		while(k>1){             //k\n??
			for(i=1;i<=n;i++){
				if(p[i]!=0){
			         a++;
				     if(a%m==0){
			       	   p[i]=0;
				       k--;
				     if(k==1){
						break;
					  }
					   a=0;
					 }
				}
			}
		}
		
	   for(j=1;j<=n;j++){
		   if(p[j]!=0){
	       printf("%d\n",p[j]);
		   }
		}
	   free(p);
	}
	
	return 0;
}
void main()
{
	int n,m,i,a[300]={0},j,k,h;
	for(h=0;h<=99;h++)
	{
		scanf("%d %d",&n,&m);
		if(n==0&&m==0)
			break;
		else
		{   
			k=0;
			if(n==1)
				printf("1\n");
			else
			{
			    for(i=0;i<n-1;i++)
				{
					j=1;
					while(j<=m)
					{
						if(a[k]==1)
							k++;
						else
						{
							j++;
							k++;
						}
						k=k%n;
					}
					if(k==0)
						a[n-1]=1;
					else
						a[k-1]=1;

				}
				for(i=0;i<n;i++)
				{
					if(a[i]==0)
						printf("%d\n",i+1);
					a[i]=0;
						
				}
			}
		}
		
	}
	
}
int m;
void main()
{
	int n,a[300],i;
	void sear(int a[300],int n);
	for(;;)
	{scanf("%d%d",&n,&m);
	if(n==0)break;
	for(i=0;i<300;i++)
		a[i]=i+1;
	sear(a,n);
	}
}
	
void sear(int a[300],int n)
{
	int i,k,b[300];
	if(n>0)
	{
		for(i=0,k=m%n;i<n-1;i++,k++)
			b[i]=a[k%n];
		    sear(b,n-1);
	}
	if(n==1)
		printf("%d\n",a[0]);
}
main()
{
      int m=1,n=1,x,a[300];
      while(m!=0 || n!=0)
      {
                 scanf("%d %d",&n,&m);
                 if(m!=0 || n!=0)
                 {
                         x=n;
                         int i;
                         for(i=0;i<300;i++)
                         a[i]=0;
                         int k=0,l=1;
                         while(x!=0)
                         {
                                    if(k>=n)
                                    k=0;
                                    if(l>m)
                                    l=1;
                                    while(k<n && l<=m)
                                    {
                                              if(a[k]!=m)
                                              {
                                                         a[k]=l;
                                                         if(l==m)
                                                         x=x-1;
                                                         if(x==0)
                                                         {
                                                                 printf("%d\n",k+1);
                                                                 break;
                                                         }        
                                                         l++;
                                                         
                                              }
                                              k++;
                                              if(m==0)
                                              break;
                                    }
                         }
                 }
                 
      }
      getchar();
      getchar();
}
main()
{
int n,m,i,k,s[1000];
memset(s,0,sizeof(s));
for(k=0;k<1000;k++) 
{scanf("%d %d",&n,&m);
for (i=2;i<=n;i++) 
s[i]=(s[i-1]+m)%i;
if(m==0)
break;
if(n==1)
printf("1\n");
else
printf("%d\n",s[n]+1);
}}
int main()
{
	int n,m,i,k,a[301],b;
	while(1)
	{
		scanf("%d %d",&n,&m);
		k=1;
		if(n==0&&m==0) break;
		for(i=1;i<=n;i++) a[i]=i;
		for(i=0;i<=n-2;i++)
		{
			k=(m+k-1)%(n-i);
			if(k==0) k=n-i;
			else for(b=k;b<=n-i-1;b++) a[b]=a[b+1];
		}
		printf("%d\n",a[1]);
	}
}
void main()
{
   int m,n,a[300],i,j,k;
   for(;;)
   {
    scanf("%d %d",&n,&m);
    if(n==0&&m==0) break;
    else
     {for(i=1;i<=n;i++)
        a[i]=i;
       for(i=1,j=1,k=0;i<n;)
      {
       if(a[j]!=0)  k++;
       if(k==m) {a[j]=0;k=0;i++;}
       if(j==n) j=1;
          else j++;
       }  
      for(i=1;i<=n;i++)
        if(a[i]!=0) printf("%d\n",a[i]);
      }
   }
}
int killer(int n,int m)
{
    int a[301]={0},i=0,j=1,k=n;
    while(k>1)
    {
        if(a[i]==0)
            if(j==m) {a[i]=1;k--;j=1;}
            else j++;
        i++;
        if(i>=n) i=0;
    }
        for(i=0;i<n;i++)
            if(a[i]==0)  return i+1;
}

main()
{
      int n,m;
      scanf("%d %d",&n,&m);
      while(n!=0)
      {
          printf("%d\n",killer(n,m));
          scanf("%d %d",&n,&m);
      }
}
int main(){
    int m,n,i,a[MAX],count,p;
    while(scanf("%d%d",&n,&m)!=EOF){
        if(m==0&&n==0)
        break;
        for(i=0;i<n;i++){
            a[i]=1;
        }
        count=0;
        p=-1;
        while(count!=(n-1)){
            for(i=0;i<m;){
                p++;
                if(a[p%n]!=0)
                i++;
            }
            a[p%n]=0;
            count++;
        }
        for(i=0;i<n;i++)
        if(a[i]!=0)
        break;
        printf("%d\n",i+1);
    }
    return 0;
}
int main(){
	int zs[300],js[300];
	int i,n,m,j,p,x,y,k;
	scanf("%d %d",&n,&m);
	zs[0]=n;
	js[0]=m;
	i=1;
	while((n!=0)||(m!=0)){
		scanf("%d %d",&n,&m);
		zs[i]=n;
		js[i]=m;
		i++;
	}
	for(j=0;j<i-1;j++){
		int a[300],b[300];
		for(k=0;k<zs[j];k++){
			a[k]=k+1;
		}
		y=zs[j];
		for(k=0;k<zs[j]-1;k++){
			p=js[j]%y;
			for(x=0;x<y-1;x++){
				if(x<y-p){
					b[x]=a[p+x];
				}else{
					b[x]=a[x-y+p];
				}
			}
			for(x=0;x<y-1;x++){
				a[x]=b[x];
			}
			y--;
		}
		printf("%d\n",a[0]);
	}
	return 0;
}
int main()
{
	int n,m,i,k,cnt;
	int num[330];
	while(1)
	{
		cin >> n >> m;
		if(!n)
			break;
		cnt = n;
		for(i = 1; i <= n; i++)
			num[i] = 1;
		k = 1;
		i = 1;
		while(cnt > 1)
		{
			if(i > n)
				i = 1;
			if (num[i] == 0)
				i++;
			else
				if(k == m)
				{
					num[i] = 0;
				    cnt --;
				    k = 1;
				    i++;
				}
				else
				{
					i++;
					k++;
				}
		}
		for(i = 1; i <= n; i++)
			if(num[i] != 0)
			{
				cout << i << endl;
				break;
			}
	}		
    return 0;
}
void main()
{
	int n[300],m,i,j,k,r;
    while(1)
	{
       scanf("%d%d",&r,&m);
	   j=r;
	   if(r==0&&m==0)
		   break;
	   else
	   {
	   for(i=0;i<r;i++)
		   n[i]=i+1;
	   i=0;
	   while(j>1)
	   {
		   for(k=1;k<m;k++)
		   {
					while(n[i]==0)
					{
					if(i<r-1)
					i=i+1;
					else i=0;
					}
                    if(i<r-1)
					i=i+1;
					else i=0;
			}
				while(n[i]==0)
					{
					if(i<r-1)
					i=i+1;
					else i=0;
					}	  
					n[i]=0;
					j=j-1;
		}
	   
		   for(i=0;i<r;i++)
		   {
				if(n[i]!=0)
					printf("%d",n[i]);
		   }
		   printf("\n");
	   
	   }
	   }
}
int yuesefu(int a[],int sum,int k)
{
	int i,j,count;
	for(count=0,i=0,j=0;count<sum-1;)
	{
		if(a[i]!=0)
			j++;
		if(j==k)
		{
			a[i]=0;
			count++;
			j=0;
		}
		i++;
		if(i==sum)
			i=0;
	}
	for(i=0;i<sum;i++)
	{
		if(a[i]!=0)
			break;
	}
	return a[i];
}
void ascanf (int a[],int n)
{
	int i;
	for (i=0;i<n;i++)
		a[i]=i+1;
}
int main ()
{
	int a[100][300],p[100][2];
	int i,j,num=0;
	for (i=0;i<100;i++)
	{
		scanf ("%d%d",&p[i][0],&p[i][1]);
		num++;
		if(p[i][0]==0&&p[i][1]==0)
			break;
	}
	for(i=0;i<num;i++)
		ascanf(a[i],p[i][0]);
	for(i=0;i<num-1;i++)
	{
		printf("%d\n",yuesefu(a[i],p[i][0],p[i][1]));
	}

	return 0;
}
void main()
{
	int n,m,i,j,k,l,s,a[300];

	for(i=0;;i++)
	{
		scanf("%d%d",&n,&m);
		if(n==0&&m==0)
			break;
		else
		{
			for(j=0;j<n;j++)
				a[j]=j+1;
			s=0;
			for(j=n-1;j>=1;j--)
			{
				if(m+s-1<j)
				{
					a[m+s-1]=0;
					s=m+s;
				}
				else
				{
					if((m+s)%(j+1)==0)
					{
						a[j]=0;
						s=0;
					}
					else
					{
						a[(m+s)%(j+1)-1]=0;
						s=(m+s)%(j+1);
					}
				}
				l=0;
				for(k=0;k<=j;k++)
				{
					if(a[k]!=0)
					{
						a[l]=a[k];
						if(k==s)
							s=l;
						l++;
					}
				}
			}
			printf("%d\n",a[0]);
		}
	}

}
int main()
{
	int a;
         int n,m;
	for(a=1;;a++){
    	    scanf("%d%d",&n,&m);
	    if(m==0||n==0){
			break;
		}
             int f[99999];
	    int i,j,k,t;
	    i=1;
	    j=n;
	    t=n+1;
	    for(k=1;k<=n;k++){
		    f[k]=k;
		}
             while(j!=1){
                   for(i=i;i<t;i++){
			        if(i%m==0){
				       f[i]=0;
				       j=j-1;
				       if(j==1){
					      break;
					   }
					}
		        	if(f[i]!=0){
				        f[t]=f[i];
			        	t++;
					}
			  }
		}
                  printf("%d\n",f[t-1]);
	}
	return 0;
}
main()
{
      int n[99],m[99],a=0,k=0,b=0,i=0,j=0,h=0,l=0,c=0,e=0;
      for(i=0;i<99;i++)
      {
           n[i]='\0';
           m[i]='\0';
      }
      for(i=0;i>=0;i++)
      {           
           scanf("%d %d",&n[i],&m[i]);
           if(m[i]==0)
           break;
      }
      c=i-1;
      for(i=0;i<=c;i++,a=-1)
      {
           int o[n[i]];
           for(j=0;j<n[i];j++)
           o[j]=1;        
           b=(n[i]);
           e=(m[i]);
           for(k=0;k!=b-1;k++,e=(m[i]))
           {        
                for(l=a;e!=0;l++)
                {
                     if(l==b)
                     l=0;
                     if(o[l]==1)
                     e--;
                }
                o[l-1]=0;
                a=l;

           }
           for(l=0;l<b;l++)
           {
                if(o[l]==1)
                {
                     int d=l+1;
                     printf("%d\n",d);
                     break;           
                }                   
           }
      }
      return 0;        
}
void main()
{
	int n[300],m[300],a[300],i=0,j=0,count,remain,group;
	scanf("%d%d",&n[0],&m[0]);
	group=1;
	while(n[i]!=0)
	{
		group++;
		i++;
		scanf("%d%d",&n[i],&m[i]);
	}
	for(i=0;i<group;i++)
	{
		for(j=0;j<n[i];j++)
			a[j]=1;
		remain=n[i];
		j=-1;
		count=0;
		while(remain>1)
		{
			j++;
			if(j==n[i])
				j=0;
			if(a[j]==0)
				continue;
			count++;
			if(count%m[i]==0)
			{
				count=0;
				a[j]=0;
				remain--;
			}
		}
		for(j=0;j<n[i];j++)
		{
			if(a[j]==1)
				printf("%d\n",j+1);
		}
	}
}
int main()
{
	int i,m,n,k,j,l;
	scanf("%d %d",&n,&m);
	while (m>0)
	{i=3;
	   l=fmod(m,2);
	   while (i<=n)
	   {
		   l=fmod(m+l,i);
		   i++;
	   }
		printf("%d\n",l+1);
		scanf("%d %d",&n,&m);
	}
	return 7;
}
int asdf(int n,int m)
{
        int *a = (int*)malloc(n*sizeof(int));
        int ret=0;
        int i=0;
        int left=n;
        int temp = 0;
        int inc=0;

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

        i=0;

        while(a[1]!=0)
        {
                temp = (i + m)%left;
                if(0==temp)
                {
                        temp = left;
                }
                else
                {
                        for(inc=temp;inc<left;inc++)
                        {
                                a[inc-1]=a[inc];

                        }
                }
                i = temp-1;
                a[left-1]=0;
                left--;
        }
        ret = a[0];

        free(a);
        return ret;
}

int main()
{
        int n,m;
        int res[MAX_SIZE];
        int counter =0;
        memset(res,0,sizeof(res));

        for(;counter<MAX_SIZE;counter++)
        {
                scanf("%d %d",&n,&m);
                if(n==0)
                {
                        break;
                }
                res[counter]=asdf(n,m);
        }
        for(counter =0;(counter<MAX_SIZE)&&(res[counter]!=0);counter++)
        {
                printf("%d\n",res[counter]);
        }
        return 0;
}
int main()
{
int i ,s,n,m;
for(int j=1;j<=9999999;j++)
{
s=0;
cin>>n>>m;
if(n==0&&m==0)break;
for(i=2;i<=n;i++)
s=(s+m)%i;
cout<<s+1<<endl;
}
return 0;
}
int monkey[300]; 

int main()
{
    void getking(int n, int m);
    int n = -1, m;
    
    while(n != 0)
    {
            scanf("%d %d", &n, &m);
            
            if(n != 0)
                 getking(n, m);
    }
    
    return 0;
}

void getking(int n, int m)
{
     
     int i, left, delete_n, count = 0;
     
          
     for(i = 0; i <= n - 1; i++)
           monkey[i] = 1;
     
     left = n;
     i = n - 1;
     while(left > 1)
     {
                while(count < m)
                {           
                            
                            if(i + 1 >= n)
                                 i = 0;
                            else
                                 i = i + 1;
                            count = count + (monkey[i] == 1);
                }           
                
                monkey[i] = 0;
                left = left - 1;
                count = 0;
     }
     
     for(i = 0; i <= n - 1; i++)
           if(monkey[i] == 1)
                        printf("%d\n", i + 1);
}
main()
{ int m,n,k,i,j,r,num;
  int a[500],b[300];

for(;;)
{scanf("%d %d",&n,&m);
 for(i=1;i<=n;i++)
 {a[i]=1;}
j=0;
k=0;
for(i=1;i<=n;i++)
{if(a[i]==1) {j=j+a[i];
if(j==m) {j=0;a[i]=0;k++;}
if(k==n) {num=i;printf("%d\n",num);break;}}
if(i==n) i=0;}

if(n==0&&m==0)
break;


}
return 0;
}
void main()
{
	int a[400]={0};
	int m,n,i,out,sum;

	while(1){
		scanf("%d %d",&n,&m);
		if(m==0&&n==0) break;
		out=m;
		sum=n;
		for(i=1;i<=n;i++) a[i]=1;
		for(i=1;sum>1;){
			
			if(a[i]==0){
				i++;
				if(i>n) i=1;
				continue;
			}
			else out--;
			if(out==0){
				a[i]=0;
				sum--;
				out=m;
			}
			i++;
			if(i>n) i=1;
		}
		for(i=1;i<=n;i++) if(a[i]==1) break;
		printf("%d\n",i);
	}
}