문제

조세퍼스 문제는 여러 명의 사람들 중 최후의 1인을 고를 때 사용하는 방법이다.

먼저 모인 사람들끼리 특정한 숫자 M을 고른다. 그 다음 한 사람이 숫자 1을 부르고, 그 다음 그 옆에 있는 사람이 2를 부르고 이런 식으로 시계 방향으로 숫자를 하나 씩 불러나간다. 이때 숫자 M의 배수를 부른 사람은 원에서 빠져나간다.

이렇게 한 명씩 원에서 빠져나가 마지막 한 사람이 남을 때까지 이것을 반복한다.

예를 들어, 7명의 사람이 있고 M=3이고, 시계 방향대로 순서대로 1부터 7까지 번호를 붙였을 때 게임의 양상은 아래와 같다.

번호 부른 숫자
1 1
2 2
3 3
4 4
5 5
6 6
7 7
1 8
2 9
4 10
5 11
7 12
1 13
4 14
5 15
1 16
4 17
1 18

이렇게 해서 순서대로 3, 6, 2, 7, 5, 1 번째 사람이 게임에서 나가고 4만 남게 된다.

이런 식 N명의 사람이서 M으로 게임을 진행했을 때 나가는 사람의 순서를 조세퍼스 순열이라고 부른다. 예를 들어 N=7, M=3인 경우 조세퍼스 순열은 3,6,2,7,5,1,4가 된다.

N과 M이 주어졌을 때 (N,M)-조세퍼스 순열을 구하는 프로그램을 작성하여라.

입력

첫째 줄에 N과 M이 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ M ≤ N ≤ 5,000)

출력

예제와 같이 조세퍼스 순열을 출력한다.

예제 1 입력

7 3

예제 1 출력

3 6 2 7 5 1 4

예제 2 입력

6 4

예제 2 출력

4 2 1 3 6 5

Source

from collections import deque

q = deque()
li = []

n, m = map(int, input().split())

for i in range(1, n + 1):
	q.append(i)

while(True):
	if(len(q) == 0):
		break
	for i in range(m - 1):
		x = q.popleft()
		q.append(x)
	x = q.popleft()
	li.append(x)

print(*li)