#include<iostream>
using namespace std;
template<class T>
struct Node{
double val;
int next;
};
template<class T>
struct List{
Node<int> node[100];
int p=0;
int head=0;
int tail=head;
void push_back(T d){
int np=++p;
node[np].val=d;
node[tail].next=np;
tail=np;
}
int getAddr(int i){
int ip=head;
for(int k=1;k<=i;k++){
ip=node[ip].next;
}
return ip;
}
T getVal(int i){
return node[i].val;
}
int getNext(int i){
return node[i].next;
}
void erase(int i){
if(tail==node[i].next){
tail=i;
node[tail].next=1;
}
node[i].next=node[node[i].next].next;
}
T begin(){
return node[head].next;
}
int next(int i){
return node[i].next;
}
};
int main(){
int n,m;
cin>>n>>m;
List<int> list;
for(int i=1;i<=n;i++){
list.push_back(i);
}
int k=0;
while(1){
k=list.next(k+m);
cout<<list.getVal(list.getAddr(k))<<' ';
if(list.getNext(list.head)==list.getNext(list.tail)){
cout<<list.getVal(1);
break;
}
}
return 0;
}