#include <iostream>
#include <vector>
using namespace std;

//функция ниже нам понадобится дважды.
int JeosifFunc(vector <int> a, unsigned int n, unsigned int m){
	for (unsigned int i=a.size(); i>1; i--){ //задаем цикл, который выполняется n-1 раз
		if (m>a.size()){        
				m=a.size()%m-1; //m не больше n => (люди в круге, используем операцию %
		}                       
		a.erase (a.begin()+m-1);//=> последовательно стираем 
		for (unsigned int i=0; i<m-1; i++){
			a.push_back (a[i]); // для удобства первые элементы до m продублируем вконец вектора
		}
		a.erase (a.begin(), a.begin()+m-1);//стираем всё до m
		for (auto el:a)
			cout <<el<<" ";
		cout <<endl;
	}
	return a[0]; //ответ будет храниться в a[0].
}

int main() {
	bool existing = false;
	vector <int> a;
	unsigned int n, m;
	cin >> n >> m; // 
	for (unsigned int i=1; i<=n; i++){ // заполняем вектор номерами от 1 до n
		a.push_back (i);
	}
	cout << JeosifFunc(a, n, m) << " ["; // первая часть задания на этом закончена.
	//подставим всевозможные m в виде k и зафиксируем k при JeosifFunc(a, n, k) = 1
	/*for (unsigned int k = 2; (k <= n)&&(existing == false); k++){// m>1 => k = 2
		if( JeosifFunc(a, n, k) == 1){ // если обнаруживается такое k, что выживает первый номер,
			existing = true;//выключаем цикл
			cout << k<< "]";// выводим k
		}
	}
	if (existing == false){ // если такого k не нашлось.
		cout << "не существует]";
	}*/
	return 0;
}