술탄의 차파티

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

이스케탐볼라의 술탄은 지름이 모두 다른 차파티를 한 더미로 쌓고 특별한 방법으로 데운 것을 좋아한다. 술탄의 요리사는 아래에 놓인 차파티가 바로 위의 차파티보다 항상 지름이 큰 더미를 데워야 한다. 가장 큰 차파티가 맨 아래, 가장 작은 차파티가 맨 위에 오도록 더미를 정렬하는 방법을 출력하는 프로그램을 작성한다. 차파티의 크기는 지름으로 나타내고, 한 더미에 쌓인 차파티의 지름은 서로 다르다.

더미는 차파티 뒤집기를 여러 번 해서 정렬한다. 뒤집기는 두 차파티 사이에 뒤집개를 넣고 뒤집개에 올라간 부분 더미를 그대로 거꾸로 뒤집는 것이다. 뒤집기는 거꾸로 뒤집을 부분 더미의 맨 아래 차파티 위치로 지정하고, flip(kk)로 쓴다. 위치는 더미 전체를 기준으로 세며 맨 아래 차파티가 위치 11, 차파티가 NN개인 더미에서 맨 위 차파티가 위치 NN이다. 따라서 flip(kk)는 위치 kk부터 위치 NN까지를 거꾸로 뒤집는다.

더미는 차파티가 쌓인 순서대로 지름을 적어서 나타낸다.

차파티 5개가 쌓인 더미에 flip(11), flip(44), flip(33)을 차례로 적용하면 다음 표처럼 변한다.

위치처음flip(1) 뒤flip(4) 뒤flip(3) 뒤
5 (맨 위)8241
46422
31114
24666
1 (맨 아래)2888

마지막 열은 아래에서 위로 8, 6, 4, 2, 1이므로 정렬이 끝났다.

입력

첫째 줄에 테스트 케이스의 수 TT (1T10001 \le T \le 1000)가 주어진다.

각 테스트 케이스는 두 줄이다. 첫째 줄에 더미에 쌓인 차파티의 수 NN (1N301 \le N \le 30)이 주어진다. 둘째 줄에 차파티 NN개의 지름이 맨 위 차파티부터 맨 아래 차파티까지 순서대로 공백 하나로 구분되어 주어진다. 각 지름은 11 이상 100100 이하의 정수이고, 한 더미 안에서 서로 다르다.

출력

각 테스트 케이스마다 한 줄에 Case #x:를 출력하고 공백 하나를 둔 다음, 뒤집기 위치를 공백 하나로 구분해 출력한다. xx11부터 시작하는 테스트 케이스 번호다. 마지막 뒤집기 위치 다음에는 더 뒤집을 필요가 없다는 뜻으로 00을 출력한다. 더미가 이미 정렬되어 있으면 00만 출력한다.

한 더미를 정렬하는 뒤집기 순서는 여러 가지이므로, 다음 절차가 만드는 순서만 정답으로 인정한다. ii11부터 N1N-1까지 11씩 늘리면서 각 ii마다 아래를 수행한다.

  1. 위치 ii부터 위치 NN까지에서 지름이 가장 큰 차파티의 위치를 pp라고 한다.
  2. p=ip = i이면 뒤집지 않고 다음 ii로 넘어간다.
  3. p<Np < N이면 flip(pp)를 하고, 이어서 flip(ii)를 한다.
  4. p=Np = N이면 flip(ii)만 한다.

실제로 수행한 뒤집기를 수행한 순서대로 모두 출력하고, 마지막에 00을 출력한다.