팬케이크 뒤집기

시간 제한1초메모리 제한128 MB

문제

서로 다른 크기의 팬케이크 N개가 위에서 아래로 쌓여 있다. 목표는 위에서부터 작은 팬케이크가 오도록 정렬하는 것이다. 즉, 위에서 아래로 1, 2, ..., N 순서가 되어야 한다.

한 번의 작업에서는 정수 k를 골라 위에서부터 k개의 팬케이크 순서를 한꺼번에 뒤집을 수 있다. 그러면 원래 k번째에 있던 팬케이크가 맨 위로 올라오고, 맨 위에 있던 팬케이크는 k번째 위치로 내려간다.

초기 상태가 주어졌을 때, 팬케이크를 정렬하는 뒤집기 순서를 출력하라. 각 테스트 케이스에서 사용할 수 있는 뒤집기 횟수는 최대 max(0, 2N - 3)번이다.

입력

첫 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄에 주어진다. 첫 번째 수는 팬케이크의 개수 N이고, 이어지는 N개의 정수는 위에서부터 아래까지의 팬케이크 크기이다.

N30 이하이다. 팬케이크의 크기는 1 이상 N 이하의 서로 다른 정수이다.

출력

각 테스트 케이스마다 한 줄을 출력한다. 먼저 뒤집는 횟수 K를 출력하고, 이어서 실제로 뒤집을 prefix 길이들을 작업 순서대로 출력한다.

조건을 만족하는 방법이 여러 가지라면 아무 방법이나 출력해도 된다.