4394 - 수열 고치기

Time Limit: 1s Memory Limit: 128MB

Special Judge Submissions: 14 Solved: 2
Description

회훈이는 숫자가 쓰여진 블록을 숫자 오름차순 차례대로 배열했다. 숫자는 1 , 2 , 3 , ... , n 이 각각  n개의 블록에 쓰여져있다.

정수는 블록을 보고 회훈이의 결벽증이 짜증나 블록 순서를 마음대로 바꾸어버렸다.

이사실을 안 회훈이는 블록을 원래 상태로 배열하고 싶었다. 이상한 곳에서 결벽증 증상이 발동한 회훈이는 crane이라는 기계를 이용해서 빠르게 블록을 배열하고 싶어졌다.

crane의 기능은 다음과 같다.

1 ~ n 사이의 서로 다른 정수 i , j  (j > i, i~j 사이의 블럭의 개수는 항상 짝수)를 골라 i번째 블록부터 j번째 블록에서

앞쪽 블럭 절반과 뒤쪽 블럭 절반을 서로 통채로 swap 시킨다.

ex) 1 4 3 7 6 5 2 8 9 (n = 9)

    i = 4 j = 7 ->

    1 4 3 5 2 7 6 8 9

    i = 1 j = 6 ->

    5 2 7 1 4 3 6 8 9

그런데 crane 의 단점이 배터리가 없어서 9^6 = 531441 번의 움직임이 끝나면 꺼진다고 한다. 이 전에 수열 블록을 모두 원래 상태로 돌리고 싶다.

회훈이를 도와 crane의 i,j를 정해주자!

Input

첫번째 라인은 테스트케이스 개수인 t가 주어진다.

각 테스트케이스 첫줄에는 수열의 길이 n (1 <= n <= 10000) 이 주어진다.

다음줄에는 수열이 주어진다. a1 , a2 , ... , an (a1 ~ an 은 1~n 사이의 정수)

Output

각 테스트케이스 별로

크레인의 활동횟수를 출력하고 다음줄부터 활동횟수 줄만큼

i,j 값을 출력한다.

Sample Input
2
6
5 4 6 3 2 1
5
1 2 3 4 5
Sample Output
5
1 2 
4 5
5 6
4 5
1 6
0 
Source

cjmp1