이중 딜링

시간 제한15초메모리 제한32 MB

문제

$n$장의 서로 다른 카드로 이루어진 덱이 있습니다. 이 덱 전체를 $k$명의 플레이어에게 일반적인 방식으로 나눠 줍니다. 맨 위 카드는 1번 플레이어에게, 다음 카드는 2번 플레이어에게, $k$번째 카드는 $k$번 플레이어에게, $k+1$번째 카드는 다시 1번 플레이어에게 주는 식으로 덱이 모두 소진될 때까지 반복합니다.

카드를 모두 나눈 뒤에는 다시 모읍니다. 1번 플레이어의 카드 묶음을 맨 위에 놓고, 그 아래에 2번 플레이어의 묶음을, 이런 식으로 이어 쌓아 $k$번 플레이어의 묶음이 맨 아래에 오도록 합니다. 각 플레이어의 묶음은 카드를 받은 순서의 역순으로 놓입니다. 즉, 가장 마지막에 받은 카드가 맨 위에, 가장 먼저 받은 카드가 맨 아래에 옵니다.

처음 한 번을 포함하여, 이 과정을 몇 번 반복해야 덱이 원래 순서로 돌아오는지 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 케이스는 두 정수 $n$과 $k$ ($1 \le n \le 800$, $1 \le k \le 800$)가 공백으로 구분되어 한 줄에 주어집니다. 입력의 끝은 두 개의 $0$으로 이루어진 줄로 표시됩니다.

출력

각 테스트 케이스마다 덱이 원래 순서로 돌아오기까지 필요한 나눠 주기 횟수를 정수 하나로 한 줄에 출력하세요. 각 정수는 별도의 줄에 출력하며, 불필요한 공백이나 답 사이의 빈 줄이 없어야 합니다. 모든 입력에 대한 답은 부호 있는 64비트 정수 범위 안에 들어갑니다.