요한은 마법의 마스터뿐만 아니라 셔플 마스터뿐만 아니라.
그가 유명하지만, 그는 환상적인 셔플 기술과 게임을하여 팬들과 상호 작용 좋아.
다음과 같이 게임을 보여줍니다
그는 처음 부지깽이의 갑판에 포함 된 표시 N N 카드 색인 1, 2, \ 점, N 1 , 2 , ... , N 및 모든 카드가 동일합니다. 그는면이 앞면과 뒷면 같은 다른 측면으로 번호를 포함 말한다. 나중에 그는 그의 팬 중 하나가 양의 정수 선택하는 선택 M의 크지보다 M (10) (1) 그 후 0, 그가 의도적으로 카드를 셔플하고 바탕 화면에 올려 놓는 것이다. 이 순간에 카드의 전면 측면 책상에 직면하고 있습니다.
책상에 카드가없는 때까지, 선택한 팬들은 다음 단계를 수행해야합니다.
- 존의 손에 더미의 상단에 카드를 놓습니다. 그의 손에 이미 일부 카드가있는 경우, 그 상단에 넣어.
- 책상에 카드가 남아있는 경우 :
(a)는 그것의 바닥에 말뚝의 상단에서 카드를 넣습니다.
(b) 단계 (실행 의 a) M M 번.
(c) 단계로 이동 한 1.
다음으로, 기적을 목격 할 때입니다.
요한은 계속 아래로 그의 손 위에 카드를 전복 것입니다, 우리는 카드가 감소하는 순서로 항상 찾을 수 있습니다.
어느 날, 존의 팬 중 하나는, 톰, 스마트 JBer이 마법의 열쇠를 이해한다. 그는 당신에게 돌아 서서 마법의 열쇠는 요한이 이전과 셔플이라고 코멘트. 임의의 숫자를 들어 M M, 그는 셔플 후 특정 순서로 카드를 켜집니다. 톰만큼 똑똑하지, 당신은의 인덱스 찾아야한다 K 셔플 후 더미의 상단에서 K 번째 카드.
입력
첫 번째 라인은 양의 정수를 포함 T (1 \ 르 T의 \ le10의) T ( 1 ≤ T ≤ 1 0 테스트 케이스의 수 -).
각 시험의 경우에, 첫 번째 라인은 양의 정수 포함 N을 (1 \ 르 N \ 르 40000000) N은 ( 1 ≤ N ≤ 4 0 0 0 0 0 0 0 등) numberof 카드를 나타낸다.
두번째 라인은 양의 정수를 포함 M (1 \ 르 M \ 르 10) M ( 1 ≤ M ≤ 1 0 개수 팬 선택 -).
세번째 줄은 정수 포함 Q (1 \ 르 Q \ 르 100) Q ( 1 ≤ Q ≤ 1 0 0 이 있음을 나타내는 -) Q Q 질문.
이어서, 거기 Q 정수와 Q 선, 각 K (1 \ 르 K \ 르 N) K ( 1 ≤ K ≤ N 쿼리를 나타내는이 -).
산출
각 쿼리의 경우, 출력의 인덱스해야 당신 K 셔플 후 더미의 상단에서 K 번째 카드.
샘플 입력
1 5 1 2 2 3
샘플 출력
5 2
샘플 해석
샘플 설명 - 셔플 후 카드의 indexs는 다음과 같습니다 : 1 ~ 5 ~ 2 ~ 4 ~ 3 1 5 2 4 3 (왼쪽 상단입니다)
사용법 #include <iostream> #INCLUDE <cstdio> #INCLUDE <알고리즘> #INCLUDE <큐> #INCLUDE <적층> 사용 스페이스 성병; 타입 정의 긴 긴 LL; INT의 ANS [ 40000000 ]; 큐 < INT > Q; INT (X); INT ) (주 { N 버리는, m; LL의 t]는 scanf ( " %의 LLD " , t); 반면 (t-- ) {는 scanf ( " %의 LLD의 %의 LLD " , N, m); 동안 (! q.empty ()) q.pop (); 위한 ( int로 I = N; I> 1 , 난 - ) { q.push (I); 대 ( INT의 J = 1 ; J <= m; J ++ ) { LL의 K = q.front (); q.pop (); q.push (K); } } ANS [ 1 ] = 1 ; 위한 ( int로 I = N; I> 1 , 난 - ) { ANS [I]= q.front (); // COUT << ANS [I] << '; q.pop (); } INT의 FF]는 scanf ( " %의 D " , FF); 위한 ( int로 I = 1 ; i가 = FF로를 <I가 ++ ) { 는 scanf ( " %의 D ' , X)을; 의 printf ( " % D \ 없음 " , ANS [X]); } } }