시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
상범 마법 팬케이크 하우스의 요리사는 팬케이크를 굽다가 가끔 잠이 들어, 팬케이크 한쪽 면이 타는 일이 있다. 탄 면이 위로 보이는 팬케이크를 그대로 내보낼 수 없으므로, 서빙 전에 모든 팬케이크의 탄 면이 아래를 향하게 해야 한다. 또한 위에서부터 크기 1, 2, ..., M 순서가 되도록 더미를 정렬해야 한다.
각 팬케이크는 크기와 방향을 가진다. 입력에서 +x는 크기 x인 팬케이크의 탄 면이 아래에 있다는 뜻이고, -x는 탄 면이 위에 있다는 뜻이다.
한 번의 뒤집기에서는 위에서부터 k개의 팬케이크를 통째로 뒤집는다. 이때 선택한 k개의 순서는 거꾸로 바뀌고, 각 팬케이크의 탄 면도 위아래가 바뀐다.
각 테스트 케이스에 대해, 처음 상태를 목표 상태 +1 +2 ... +M으로 만드는 뒤집기 수열을 구하시오. 수열의 길이는 최대 3M - 2이어야 한다.
첫째 줄에 테스트 케이스 수 T가 주어진다.
각 테스트 케이스는 한 줄로 주어진다. 먼저 팬케이크 수 M이 주어지고, 이어서 M개의 팬케이크가 위에서 아래 순서로 주어진다. 각 팬케이크는 +x 또는 -x 형식이며, 크기 1부터 M까지가 정확히 한 번씩 등장한다. (M <= 30)
각 테스트 케이스마다 한 줄을 출력한다. 먼저 뒤집기 횟수 K를 출력하고, 이어서 수행할 뒤집기의 크기 K개를 순서대로 출력한다. 각 뒤집기 크기는 한 번에 뒤집을 맨 위 팬케이크 개수이다.
답이 여러 개일 수 있으며, K는 0이어도 된다.