#include
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*linkList;
void CreateCirList(linkList &L,int m)
{//后插法创建单向循环链表
L=new LNode;
L->next=NULL;
L->data=1;
linkList r=L;
for(int i=2;i<=m;i++)
{
linkList p=new LNode;
p->data=i;
p->next=NULL;
r->next=p;
r=p;
}
r->next=L; //尾结点的指针指向首元结点,单向循环链表建成
L=r; //L需要指向尾结点,以防n=1时第一个需要删除的是首元结点,不易得到前驱结点
}
void MonkeyKing(linkList &L,int n)
{//猴子选大王(约瑟夫问题)
linkList p = L;
while(p->next != p)
{
for(int i=1; i<n-1; i++)
{
p = p->next;
}
linkList temp = p->next;
p->next = temp->next;
delete temp;
p = p->next;
}
cout << p->data << endl;
}
int main()
{
int m,n;
while(cin>>m>>n)
{
if(n==0&&m==0) break;
linkList L;
CreateCirList(L,m);
MonkeyKing(L,n);
}
return 0;
}