semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
main() 
  {   
      int m,n,i,t,p,f,k,q,c,add;
    int str[300]; 
  for (;;)
{     
      scanf("%d %d",&n,&m);
    if(n==0&&m==0)
    break;
     //printf("%d %d\n",n,m);
     for(i=0;i<n;i++)
     str[i]=1;  
       
     i=-1;
          
          
     for(t=1;t<n;t++)
  {    
          
          add=m;
         // printf("%d",add);
              k=0;
         for(p=i+1;;p++)
      {  
                     
              // printf("%d\n",p);
              
           k=k+1;
          // printf("%d\n",k);
           if (p>=n)
         {
                    p=p-n;
               // printf("%d\n",p);
         }
           if(str[p]==0)
           {
                        add=add+1;
           //printf("%d\n",add);
           }
           if(k>=add)
           break;
     
      }             
       //printf("%d\n",add); 
       i=i+add;
      
       if(i>n-1)
       i=i%n;
       str[i]=0;
}   
       for(f=0;f<=n-1;f++)
         {
         if(str[f]==1)
         printf("%d\n",f+1);
         }
}         
                 
  
}
int main()
{
    int n,m;
    int i;
    for(i=0;;i++)
    {
                 scanf("%d %d",&n,&m);
                 if(n==0&&m==0) break;
                    int huo,shu;
                    huo=n;shu=1;
                    int k;int a[1000]; 
                    for(k=1;k<=n;k++)
                         a[k]=1;
                    while(huo>1)
                    {
                                if(k>n)
                                  k=1;
                                if(a[k]==1)
                                {
                                           if(shu%m==0){a[k]=0;huo--;}
                                           shu++;
                                }
                                k++;
                    }
                    int l;
                    for(l=1;l<=n;l++)
                    if(a[l]==1)
                    printf("%d\n",l);
    }
}
int main()
{
    int n[100], m[100], i,j=0;
    for(i=0; i<100; i++){
            scanf("%d %d", &(n[i]), &(m[i]));
            j+=1;
            if (n[i]==0 && m[i]==0){
                break;
        }
    }
    int k, s[j], l, q;
    for(q=0; q<j; q++){
        s[q]=0;
    }
    for (k=0; k<j; k++) {
        for (l=2; l<=n[k]; l++) {
            s[k]=(s[k]+m[k])%l;
        }
    }
    int p;
    for (p=0; p<j-1; p++) {
        printf("%d\n", s[p]+1);
    }
    return 0;
}
int main(){
int n,m,n1=0,p=0,r,mon[300];
for(int k=1;k<=100;k++){
scanf("%d %d",&n,&m);
if((n==0)&&(m==0)){
	break;
}else{
n1=0;
p=0;
r=n;
for(int i=0;i<n;i++){
	mon[i]=1;
}
while(r>1){
	while(n1<m){
		if(mon[p]==1){
			n1++;
			if(n1==m)mon[p]=0;
		}
		p++;
		p=p%n;
	}
	n1=0;
	r--;
}
for(int j=0;j<n;j++){
	if(mon[j]==1){
		printf("%d\n",j+1);
		break;
	}
}
}
}
return 0;
}
int procedure (int n , int m);

int main()
{
	int ans[100];
	int n,m,t,s;
	t=0;
	while(1)
	{
		scanf("%d %d",&n,&m);
		if(n==0 && m==0)
		{
			break;
		}
		else
		{
			ans[t]=procedure(n,m);
			t++;
		}
	}
	for(s=0;s<t;s++)
	{
		printf("%d\n",ans[s]);
	}
	return 0;
}

int procedure (int n , int m)
{
	int num=n;
	int i,j,k,r;
	int sz[300];
	for(i=0;i<n;i++)
	{
		sz[i]=0;
	}
	i=0;
	for(k=num;k>1;k--)
	{
		j=0;
		while(j<m)
		{
			if(i==n)
			{
				i=0;
			}
			if(j==m-1 && sz[i]==0)
			{
				sz[i]=1;
				break;
			}
			if(sz[i]==0)
			{
				j=j+1;
			}
			i=i+1;
			continue;
		}
	}
	for(r=0;r<n;r++)
	{
		if(sz[r]==0)
		{
			return r+1;
		}
	}
}
struct monkey
{
	int num;
	struct monkey *next;
};
struct monkey *del(struct monkey *head,int x)
{
	struct monkey *p1,*p2;
	p1=head;
	while(x!=p1->num&&p1->next!=NULL)
	{
		p2=p1;p1=p1->next;
	}
	if(x==p1->num)
	{
		if(p1==head)
		head=p1->next;
		else p2->next=p1->next;
	}
	return(head);
}

void main()
{
	struct monkey *del(struct monkey *head,int x);
	struct monkey *head,*p1,*p2;
	int i,j,k=1,t,n[100],m[100],count=0,p;
	for(t=0;;t++)
	{
		
		scanf("%d %d",&n[t],&m[t]);
		if(n[t]==0)break;
	}
	p=t-1;
	//printf("%d",p);
	for(t=0;t<=p;t++)
	{
		count=0;k=1;
		p1=p2=head=(struct monkey*)malloc(LEN);
		p1->num=1;
		for(i=2;i<=n[t];i++)
		{
			p1=(struct monkey*)malloc(LEN);
			p1->num=i;
			p2->next=p1;
			p2=p1;
		}
		p2->next=NULL;
		p1=head;
		for(i=1;;i++)
		{
			if(k==m[t])
			{
				del(head,p1->num);
				count++;
				head=del(head,p1->num);
				k=0;
			}
			if(p1->next!=NULL)
			p1=p1->next;
			else
			p1=head;
			k++;
			if(count==n[t]-1)
				break;
		}
		printf("%d\n",head->num);
	}
}
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-1;
	printf("\n");
	for(i=0;i<=t;i++)
	{if(s[i][1]!=1)
	{   for(j=0;j<s[i][0];j++)
	    a[j]=j+1;
	    d=0;k=0;
		while(d<s[i][0]-1)
		{
			for(j=0;j<s[i][0];j++)
			if(a[j]!=0)
			{
				k++;
			        {
			        	if(k==s[i][1])
			        	{k=0;a[j]=0;d++;}
			        }
			}
			 
		 
		}
		for(j=0;j<s[i][0];j++)
		if(a[j]!=0)printf("%d\n",a[j]);
	}  
	
	else printf("%d\n",s[i][0]);}
}
int main(){
    int n,m,i,s,k,p;
    scanf("%d %d\n",&n,&m);
    while(n!=0&&m!=0){
        int a[n];
        for(p=0;p<n;p++){
            a[p]=1;
        }
        s=0;
        k=0;
        i=0;
        while(k<n-1){
            s+=a[i];
            if(s==m){
                a[i]=0;
                s=0;
                k++;
            }
            i++;
            if(i>=n){
                i=i-n;
            }
        }
        for(i=0;i<n;i++){
            if(a[i]==1){
                i=i+1;
                printf("%d\n",i);
            }
        }  
        scanf("%d %d\n",&n,&m);
    }
    return 0;
}
void main()
{
	int t,n,m,i,s,a[301];
	scanf("%d%d",&n,&m);
	while(n!=0)
	{
		for(i=1;i<=300;i++) a[i]=0;
		i=0;s=n;
		for(;s>=1;)
		{
			t=m;
			s--;
			while (t>0)
			{
				i=((1+i)>n)? 1:(i+1);
				while (a[i]) i=((1+i)>n)? 1:(i+1);
				t--;
			}
			a[i]=1;

		}
		printf("%d\n",i); 
	    scanf("%d%d",&n,&m);
	}
}
struct hou
{int k;
struct hou *next;
};
int main(int argc, char *argv[])
{int i,j,k,n,m;
struct hou *head,*p1,*p2;

while(1)
{
        scanf("%d%d",&n,&m);
        if(n==0&&m==0)
        break;
        head=(struct hou*)malloc(sizeof(struct hou));
p1=head;
        for(i=1;i<=n;i++)
        {if(i==n)
        {p1->k=n;p1->next=head;}
        else
        {p2=p1;
        p1=(struct hou*)malloc(sizeof(struct hou));
        p2->k=i;
        p2->next=p1;
        }}
        p1=head;
        p2=head;
        for(i=1;i<=n-1;i++)
        {
                           for(j=1;j<=m-1;j++)
                           {p2=p1;
                           p1=p1->next;}
                           p2->next=p1->next;
                           p1=p1->next;
        }
        printf("%d\n",p1->k);
}
  
    return 0;
}
int main()
{
	int k;
	for(k=0;;k++)
	{
		int a[300]={0},i=0,j=0,n=0,m=0,t=0,f=0;
	scanf("%d%d",&n,&m);
	if((n==0)&&(m==0))
		break;
	if(n==1)
		printf("1\n");
	else
	{
		for(i=0;i<n;i++)
		a[i]=i+1;
		for(i=0;;i++)
		{  
			f=i;
			if(i>n-1)
				f=i%n;
			if(a[f]>0)
				t=t+1;
			if(t%m==0)
				a[f]=0;
			if(t==(n-1)*m)
				break;
		}
	for(i=0;i<n;i++)
		if(a[i]>0)
			printf("%d\n",a[i]);
	}}
			return 0;
}
int yos(int n,int m)
{int a[1000],i,j,x=0,y;
for(i=1;i<=n;i++)a[i]=1;
for(i=1;i<n;i++){
for(j=1;j<=m;j++)do
{x++;if(x>n)x=1;}
while (!a[x]);
a[x]=0;}
for(i=1;i<=n;i++)
if(a[i])return(i);}
main(){
int m,n;
scanf("%d%d",&n,&m);
while (m!=0){
printf("%d\n",yos(n,m));
scanf("%d%d",&n,&m);}}
int main(){
	int sn[1000],sm[1000],NUM=0;
	for(int p=0;p<1000;p++){
		int a1,a2;
		scanf("%d%d",&a1,&a2);
		if((a1==0)&&(a2==0)){
			break;
			}
		else{sn[p]=a1;
		     sm[p]=a2;
			 NUM++;
		}
	}
	int k=1;
	for(int t=0;t<NUM;t++){
       for (int i=1;i<=sn[t];i++){
	       k=(k+sm[t]-1)%i+1;}
           printf("%d\n",k);
	}
	return 0;
}
int main()
{
    int n, m, ans;
    int solve(int n, int m);
    scanf("%d %d",&n, &m);
    while (!(n==0 && m==0))
    {
        ans = solve(n, m);
        if (!ans) ans = n;
        printf("%d\n", ans);
        scanf("%d %d", &n, &m);
    }
    return 0;
}
int solve(int n, int m)
{
    int ans;
    if (n==1) return 1;
    ans = (m % n + solve(n-1, m)) % n;
    if (!ans) ans = n;
    return ans;
}
int main(){
	int m,n,i,j,h,c,l,k,p,a=0;
	int sz[300],ph[300];
	for(i=0;m!=0;i++){
		scanf("%d %d",&n,&m);
		for(j=0;j<n;j++){
			sz[j]=j+1;
		}
		l=n;
		for(j=0;j<(n-1);j++,l--){
			for(h=0;h<m;h++){
				p=sz[l-1];
				for(c=(l-2);c>=0;c--){
					k=sz[c];
					sz[c]=p;
					p=k;
				}
				sz[l-1]=p;
			}
		}
		ph[a]=sz[0];
		a++;
	}
	for(i=0;i<a-1;i++){
	printf("%d\n",ph[i]);
	}
	return 0;
}
int main(){
int i,n,m,p,w,x=0,a[10000];
for(w=1;w<100;w++)
{
scanf("%d%d",&n,&m);
if(n==0 && m==0){
break;
}
int next[n+1];
for(i=1;i<n;i++){
next[i]=i+1;
}
next[n]=1;
p=n;
for(i=1;n>0;i++){
if(i%m==0){
    next[p]=next[next[p]];
   --n;
   }
   else{
   p=next[p];
  }
} a[w]=p;
  x++;
}
   for(w=1;w<=x;w++)

   {
        printf("%d\n",a[w]);
   }

return 0;
}
int main()
{
	int n[10],m[10];
	scanf("%d %d",&n[0],&m[0]);
	int i;
	for(i=1;n[i-1]!=0&&m[i-1]!=0;i++)
		scanf("%d %d",&n[i],&m[i]);

    for(i=0;n[i]!=0&&m[i]!=0;i++)
	{
		int j,hou[360];
		for(j=0;j<360;j++)
			hou[j]=j+1;
		int count=0,num=0;
loop:for(j=0;j<n[i];j++)
	 {
		if(hou[j]!=0)
		count++;
		if(count==m[i])
		{
		hou[j]=0;
		count=0;
		}
	 }
		for(j=0;j<n[i];j++)
		{
		if(hou[j]!=0)
		num++;
		}
		if(num>1)
		{	
			num=0;
			goto loop;
		}
		if(num==0)
		{
			int h=n[i];
			printf("%d\n",h);
		}
		for(j=0;j<n[i];j++)
		{
			if(hou[j]!=0)
			{
		printf("%d\n",hou[j]);
		break;}
		}
	}
	return 0;
}
int john (int,int );
main()
{   int j,m,n,i=0,a[10];
	//printf("enter n & m :\n");
	 
	while (1)
    { 
	  scanf("%d%d",&n,&m);
	  
	  if (m==0 && n==0)
		  break;
	  else
	  {a[i]=john(n,m);
	  i++;}
	
	}
 for (j=0;j<i;j++)
	 printf("%d\n",a[j]);
    
}






int john(int n,int m)
{int i,j,t,a[301];
 

 
 for(i=1;i<=n;i++)
	 a[i]=1;
 j=n;
 for(i=1,t=0;j>1;i=i+1)
 { if(i>n)
     i=i-n;
    if(a[i]!=0)
	  {t++;
        if(t==m) 
		{t=0; 
	     a[i]=0;j--;}
	  }
	else continue;
 }
for (i=1;i<=n;i++)
  if (a[i]==1) break;
	 return (i);
}
void main()
{
int a[301],b[301];
int n[300],m[300],c=0;
int i,j,k,t;
for(i=1;i<=300;i++)
{
	scanf("%d %d",&n[i],&m[i]);
	if(n[i]==0&&m[i]==0){
		break;
	}
	c=c+1;
}
for(k=1;k<=c;k++)
{
	for(i=1;i<=n[k];i++)
	{
		a[i]=i;
	}
	while(n[k]>1)
	{
		t=m[k]%n[k];
		for(j=1;j<=t;j++)
		{
			b[j]=a[j];
		}
		for(j=t+1;j<=n[k];j++)
		{
			a[j-t]=a[j];
		}
        for(j=1;j<=t;j++)
		{
			a[n[k]-t+j]=b[j];
		}
		n[k]--;
	}
printf("%d\n",a[1]);
}
}
/*
 * wanyi.cpp
 *
 *  Created on: 2012-11-10
 *      Author: 7
 */
int main()
{
	int a[301],count,n,m,i,j;
	while(cin>>n>>m&&n!=0&&m!=0)
	{
		for(i=0;i<301;i++)
		a[i]=i;
		count=n;
		j=m;
		while(count>1)
		{
			for(i=1;i<=n;i++)
			{
				if(a[i]!=0)
				{
					j--;
					if(j==0)
					{
						a[i]=0;
						j=m;
						count--;
						if(count==1)
							break;
					}
				}
			}
		}
		for(i=1;i<=n;i++)
		{
			if(a[i]!=0)
				cout<<i<<endl;
		}
	}
}
void main()
{
	int a[300],b,c,d,e,f,g=1,h;
	for(h=0;h<10000;h++)
	{
	scanf("%d%d",&b,&c);
	if(b!=0&&c!=0)
	{
	for(d=0;d<b;d++)
		a[d]=1;
	for(e=0,f=b;f>1;e++)
	{
		if(e<b)
		{
			if(a[e]!=0)
			{
				if(g==c)
				{
					a[e]=0;
					f=f-1;
					g=0;
				}
				g=g+1;
			}
		}
		else
			e=-1;
	}
	for(e=0;e<b;e++)
		if(a[e]!=0)
			printf("%d\n",e+1);
	}
	else
		break;
	}
}
int main()
{
	int n,m,p[300];//??????????????????????
	int j,i,t,count;
	scanf("%d %d",&n,&m);
	
    for(i=0;i<n;i++)//????????????????
	{
		p[i]=i+1;
	}
    for(t=0,j=0,count=0;;j++)//count=0,t=0
	{
		for(i=0;i<n;i++)//count!=0,t!=0
		{
			if(p[i]!=0)
			{
				count++;
			}
			if(count==m)
			{
				p[i]=0;
				t++;
				count=0;
            }
		}
		if(t==n-1)//==
		{
			break;
		}
	}
	for(i=0;i<n;i++)
	{
		if(p[i]!=0)//????
		{
			printf("%d",p[i]);
			return 0;
		}
	}
return 1;
}
main() 
{ 
int n[10000], m[10000], i, s; 
for(int q=0;q<10000;q++){
     scanf("%d%d", &n[q],&m[q]); 
	 if(n[q]==0&&m[q]==0){
		 break;
	 }
	 else if(n[q]!=0&&m[q]!=0){
		 s=0;
		 for(i=2; i<=n[q]; i++) {
             s=(s+m[q])%i;
		 }
          printf("%d\n", s+1); 
	 }
} 
return 0;
}
struct monkey
{
	int num;
	struct monkey *next;
}monkey[300];
void main()
{
	struct monkey *head,*p,*q;
	int n,i,m,j,k;
	for(i=0;i<300;i++)
		monkey[i].num=i+1;
	for(j=0;;j++)
	{
	    scanf("%d %d",&n,&m);
		if(n==0&&m==0)
			break;
	    head=&monkey[0];
	    for(i=0;i<n-1;i++)
		{
		    monkey[i].next=&monkey[i+1];
		} 
    	monkey[n-1].next=&monkey[0];
    	p=head;
		if(m!=1)
		{
			while(p!=p->next)
			{ 
			    for(k=0;k<m-2;k++)
				{ 
				    p=p->next;
				} 
	            q=p->next;
	            p->next=q->next;
			    p=q->next;
			}
			printf("%d\n",p->num);
		}
		if(m==1)
		{
			printf("%d\n",monkey[n-1].num);
		}
	}
}
void main()
{
	int a[301]={0};
	int n,m,i,k,j,s,king;
	for(j=1;;j++)
	{
	   scanf("%d",&n);
	   scanf("%d",&m);
	   if(m!=0&&n!=0&&m!=1)
		
 
	   {
		k=0;
		for(i=1;i<=n;i++)
			a[i]=i;
		do
		{
			
			
			

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

			}
			s=0;
			for(i=1;i<=n;i++)
			{
				if(a[i]>0)s=s+1;
			}
		}while(s>1);
		for(i=1;i<=n;i++)
		{
			if(a[i]!=0)king=a[i];
		}
		
	printf("%d\n",king);
	}
	if(m==0&&n==0)break;
	if(m==1)printf("%d\n",n);
	}
}
int main()
{
	int n, m, i;
	int t=0, k=0,count=0;
	cin >> n >> m;
	while (m!=0 && n!=0)
	{
		int a[301]={0};
		i=0;
		k=0;
		count=0;
			while(count < n)
			{
				k++;
				if (k==n+1)
					k=1;
				if (a[k]!=1)
				{
					t++;
					if (t==m)
					{
						t=0;
						a[k]=1;
						i = k;
						count++;
					}
				}
			}
			cout << i <<endl;
		cin >> n >> m;
	}
	return 0;
}
int main()
{
	int count = 0;
	int count1 = 0;
	int m,n;
	int temp;
	int inputcount=0;
	int result[102400];
	scanf("%d",&n);
	scanf("%d",&m);
while(m!=0 && n!=0)
{
        if(m==1)
        {
           result[inputcount] = n;
           inputcount++;
	   scanf("%d",&n);
	   scanf("%d",&m);
           continue;
        }
	int *monkey = (int*)malloc(sizeof(int)*n);
	int *tempmonkey = (int*)malloc(sizeof(int)*n);
	for(count=0; count<n; count++)
		monkey[count]= count+1;
    while(m<n)
	{
		temp = n/m;
        for(count=temp*m;count<n;count++)
			tempmonkey[count-temp*m]=monkey[count];
		for(count=0,count1=0;count<temp*m;count++)
		{
			if((count+1)%m)
			{
				tempmonkey[n-temp*m+count1]=monkey[count];
				count1++;
			}
		}
		n = n-temp;
		for(count=0;count<n;count++)
			monkey[count]=tempmonkey[count];
	}
	while(n>1)
	{
		temp = (m-1)%n+1;
		for(count=temp;count<n;count++)
		  tempmonkey[count-temp] = monkey[count];
		for(count=0;count<temp-1;count++)
		  tempmonkey[n-temp+count]=monkey[count];
        n--;
		for(count=0;count<n;count++)
			monkey[count]=tempmonkey[count];
	}
	result[inputcount]=monkey[0];
    inputcount++;
	scanf("%d",&n);
	scanf("%d",&m);
	free(monkey);
	free(tempmonkey);
}
for(count=0; count<inputcount; count++)
  printf("%d\n",result[count]);
	return 0;
}
struct person
{
	int number;
	int nextp;
}link[300];
int king(int n,int m)
{
	int i,t,h;
	for(i=1;i<=n;i++)
	{
		if(i==n)
			link[i].nextp=1;
		else
			link[i].nextp=i+1;
		link[i].number=i;
	}
	t=0;
	h=n;
	while(t<n-1)
	{i=0;
	while(i!=m)
	{
		h=link[h].nextp;
		if(link[h].number)
			i++;
	}
	link[h].number=0;
	t++;
	}
	for(i=1;i<=n;i++)
	{
		if(link[i].number)
			return(link[i].number);
	}
}
void main()
{
	int king(int a,int b);
	int a[1000],k,i,b[1000]={0};
	for(i=0;;i++)
	{
		scanf("%d%d",&a[i],&b[i]);
		if(a[i]==0) break;
	}
	k=i;
	for(i=0;i<k;i++)
	{
		printf("%d\n",king(a[i],b[i]));
	}
}
int main()
{int m[100], n[100], a[300]={0}, *p, *q, l=0, i, j, k, t;
p=&m[0],q=&n[0];
scanf("%d %d",p,q), l++;
while(*p!=0||*q!=0)
{
	p++,q++;
	scanf("%d %d",p,q);
	l++;
}
l--;

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

}
int houwang(int n,int m)
{
	int a[301],i,j=0,p=0,zongshu=n;
	a[0]=-1;
	for(i=1;i<=n;i++)
	{
		a[i]=i;
	}
	for(i=1;i<=n-1;i++)
	{
		p=0;
		for(;;)
		{
			j++;
			if(a[j%n]!=0)p++;
			if(p==m)
			{
				a[j%n]=0;
				break;
			}
		}
	}
	for(i=1;i<=n;i++)
	{
		if(a[i]!=0)return a[i]; 
	}
}
main()
{
      short a[310];
      int n,m,i,j,k,st;
      
      a[0]=1;
      do
      {
            scanf("%d %d",&n,&m);
            if (0==n && 0==m) break;
            for (i=1;i<=n;i++) a[i]=0;
            st=0;
            for (i=1;i<=n;i++)
            {
                for (j=1;j<=m;j++)
                {
                    st++;
                    if (st==n+1) st=1;
                    while (a[st]==1)
                    {
                        st++;
                        if (n+1==st) st=1;                              
                    }
                }
                a[st]=1;
                if (i==n) printf("%d\n",st);            
            }
      }while (0!=n || 0!=m);
      return 0;
}
void main()
{
	int a[1000];
	int n,m,i,count,rest;

    for(;;)
	{
		scanf("%d %d",&n,&m);
		if(n==0 && m==0) break;

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

		while(rest>1)
		{
			while(a[i]==1)
			{
			    count++;
			    if(count==m)
				{
					a[i]=0;
					count=0;
					rest--;
					if(rest==1) break;
				}
				if(i<n-1) i++;
    			else if(i==n-1) i=0;
			}
			 
			while(a[i]==0)
			{
			    if(i<n-1) i++;
			    else if(i==n-1) i=0;
			}
		}
		
		if(rest==1)
			for(i=0;i<n;i++)
				if(a[i]==1) printf("%d\n",i+1);
	}
}
int main()
{
    int i,m,n,p,k;
    int a[300];
    while (1>0)
    {
          scanf("%d %d",&n,&m);
          if(n==0)
          break;
          else
          {
              for(i=0;i<n;i++)
              a[i]=i+1;
              p=0;
              while(n!=1)
              {
                         k=(m+p-1)%n;
                         for(i=k;i<n;i++)
                         {
                                         a[i]=a[i+1];
                                         }
                                         n--;
                                         p=k;
                                         }
                                         printf("%d\n",a[0]);
                                         }
                                         }
                                        
                                        return 0;}
main()
{
	int n[30],m[30],a[300];
int s,j,i,k;
 for(i=0;;i++)
 {
  scanf("%d %d",&n[i],&m[i]);
  if(n[i]==0&&m[i]==0)
  {
    s=i;   //??S?????
    break;
  }
 }
  for(i=0;i<s;i++) //????
  { 
	  k=1;
    for(j=1;j<=n[i];j++)
        a[j]=j;        //?????
    for(;n[i]>1;n[i]--)//??N-1???
		   for(j=1;j<=n[i];j++)//????????
			if((m[i]-j+k-1)%n[i]==0)
			{
				k=j;
				
				for(;j<n[i];j++)
			    a[j]=a[j+1];
			}
	 printf("%d\n",a[1]);
	  }
}
void main()
{
	int sz[500], m, i, s=0,k,n=0;
	for(k=0;k<500;k++)
	{
		scanf("%d",&sz[k]);
		n=n+1;
		if(sz[k-1]==0&&sz[k]==0)
			break;
	}
	for(k=0;k<n;k++)
	{
		if(k%2==0&&sz[k]!=0)
		{
			for(i=2; i<=sz[k]; i++) s=(s+sz[k+1])%i;
			printf ("%d\n", s+1);
			s=0;
			i=2;
		}
	}
}
int main()
{
    int n,m,t,x,i,j,a[300];
    scanf("%d %d",&n,&m);
    while(n!=0&&m!=0)
    {
        t=0;
        for(i=0;i<n;i++) a[i]=1;
        for(i=0;i<n-1;i++)
        {
            for(j=0;j<m;)
                j=j+a[(t++)%n];
            a[(t-1)%n]=0;
        }
        for(i=0;i<n;i++)
            if(a[i]) printf("%d\n",i+1);
        scanf("%d %d",&n,&m);
    }
    return 0;
}
int f(int n,int m);
int main(void)
{
	int i,j,k;
	int m,n;
	scanf("%d%d",&n,&m);
	while(n!=0||m!=0)
	{
		printf("%d\n",f(n,m)+1);
		scanf("%d%d",&n,&m);
	}
	return 0;
} 
int f(int n,int m)
{
	int k=0;
	int i,j;
	for(i=2;i<=n;i++)        //???n-1??????????????????k????n??????k=(m%n+k)%n 
	{
		k=(m%i+k)%i; 
	}
	return k;
}
void main()
{
	while(1)
	{
		int n,m;
		scanf("%d %d",&n,&m);
		if(n==0)break;
	    int a[301],p=1,i,num,ren;
        ren=n;
	    for(i=1;i<=n;i++)
		    a[i]=0;
	    while(ren)
		{
	     for(i=p,num=0;num<m;i++)
		 {
		   if(i>n)i=1;
		   if(a[i]==0)num++;
		 }
	     a[i-1]=1;
	     if(ren==1)printf("%d\n",i-1);
	     ren=ren-1;
	     p=i;
		}
	}
}
int main()
{
int n,m,i,j,s,x[1000],y[1000];
                                            
                                  
scanf("%d %d",&n,&m);
                                      while(n!=0&&m!=0)
                                      {

for (i=0;i<=(n-1);i++)
{
    y[i]=0;
x[i]=i+1;
}
//?????n-1????? 
//???????????? 

for (j=0;j<=(n-2);j++)

{
s=m %(n-j); 


         for (i=s;i<=(n-j-1);i++) 
          {
          y[i-s]=x[i];
          }
          for (i=0;i<=(s-2);i++)
          {
          y[n-j-s+i]=x[i];
          }  
    
//????????????y[] ,??y?????x?????y???
      
for(i=0;i<=(n-j-2);i++)
          {
          x[i]=y[i];
          }
x[n-j-1]=0;
for (i=0;i<=n-j-2;i++)
  {
                      y[i]=0;
  }
          
}



printf("%d\n",x[0]) ;
scanf("%d %d",&n,&m);
                                                                }

    
}
int main()
{
	int n[301]={-1};
	int m[301]={-1};
	int g[501]={0};
	int d,a,i,x,j,c=0;

	for(i=1;n[i-1]!=0&&m[i-1]!=0;i++){	  
	  scanf("%d",&n[i]);
	  scanf("%d",&m[i]);
	  c++;
	}

	for(j=1;j<c;j++){
		for(i=1;i<=500;i++){
		   g[i]=0;
		}

	    d=0;
		for(x=n[j];x>0;){
			for(i=1;i<=n[j];i++){
				if(g[i]==0){
				  d++;
				  if(d%m[j]==0){
				    g[i]=1;
					x--;
					if(x==0)
					{a=i;}
				  }
				}
			}
		}
		printf("%d\n",a);
	
	} 
return 0;

}
int main()
{
    int m,n,i,k,j,l,sum;
    for(l=1;;l++)
    {
        scanf("%d %d",&n,&m);
        if(n==0 && m==0)
        break;
        else
        {
            int a[300];
            for(i=0;i<300;i++)
            {
                if(i<=n) a[i]=1;
                else a[i]=0;
            }
            for(i=0,k=0;;i++)
            {
                if(i==n) i=0;
                if(a[i]==1) k++;
                if(k==m)
                {
                    a[i]=0;
                    k=0;
                }
                for(j=0,sum=0;j<n;j++)
                    sum+=a[j];
                if(sum==1) break;
                //else sum=0;
            }
            for(i=0;i<n;i++)
                if(a[i]==1) printf("%d\n",i+1);
        }
    }
    getchar();
    getchar();
}
//??????????...?????????--by ??? 2011.11.10
struct stu
{
    int num;
    struct stu * next;
};
int tiren(int x,int n,int m,struct stu * p)//???? x?????
{
    int i;
    struct stu * pp;
    if (x!=n)
    {
        for (i=1;i<=m-1;i++)
        p=(*p).next;
        pp=(*p).next;
        (*p).next=(*pp).next;
        tiren(x+1,n,m,p);
    }
    else
    printf("%d\n",(*p).num);
    return 0;
}


main()
{
    int n,m,i;
    struct stu * head,* p;
    scanf("%d %d",&n,&m);
    while ((n!=0))
    {
    head=p=(struct stu *)malloc(L);
    for (i=2;i<=n;i++)
    {
        (*p).num=i-1;
        p=(*p).next=(struct stu *)malloc(L);

    }
    (*p).next=head;
    (*p).num=n;
    tiren(1,n,m,p);
    scanf("%d %d",&n,&m);
    }

}
int main()
{
	int n[20]={0},m[20]={0};
	int k=0,hang;
	for(k=0;;k++){
		scanf("%d%d",&n[k],&m[k]);
		if(n[k]==0){
			hang=k;
			break;
		}
	}
	for(k=0;k<hang;k++){
	int i=0,jishu=0,ling=0;
	int a[300]={0};
	for(i=0;i<300;i++){
		if(i<=n[k])
			a[i]=i;
		else
			break;
	}
	for(i=0;;i++){
		if(a[i]!=0){
			jishu++;
			if(jishu==m[k]){
				ling++;
				jishu=0;
				a[i]=0;
			}
		}
		if(i==n[k]){
			i=0;
		}
		if(ling==(n[k]-1))
			break;
	}
	for(i=0;i<=n[k];i++){
		if(a[i]!=0)
			printf("%d\n",a[i]);
	}
	}
	return 0;
}
int main()
{
  long a[300],n,m,x;
  for(;;)
  {
  for(x=0;x<300;x++)
  {
   a[x]=1;
  }
   scanf("%d %d",&n,&m);
   if(n==0) break;
   int i,t=0,j=0;
   for(i=0;i<=n-1;)
  {
  if(a[i]) t++;
  if(t==m)
  {
    a[i]=0;
   t=0;
   j++;
  }
  if(i==n-1) i=0;
  else i++;
  if(j==n-1) break;
  }
  for(i=0;i<=n-1;i++)
  {
  if(a[i]!=0) break;
  }
  printf("%d\n",i+1);
}
return 0;
}