import java.util.*;
public class Main{
static int count;
static int[] result;
static int length;
static int maxCount;
public static void main(String[] args) {
int[] nums={2,5,3,4,9,1};
length=nums.length;
maxCount=2*(length-1);
result=new int[maxCount];
int[] tempResult=new int[maxCount];
deepFun(0,nums,tempResult);
for(int i=0;i<maxCount;i++){
System.out.println(result[i]);
}
}
public static void deepFun(int index,int[] nums,int[] tempResult){
int predict=minCount(nums);
if(index+predict>maxCount){
return;
}
if(isSorted(nums)){
if(index<maxCount){
maxCount=index;
for(int i=0;i<maxCount;i++){
result[i]=tempResult[i];
}
}
return;
}
for(int i=1;i<length;i++){
reverse(nums,0,i);
tempResult[index]=i;
deepFun(index+1,nums,tempResult);
reverse(nums,0,i);
}
}
public static int minCount(int[] nums){
int predict=0;
for(int i=1;i<length;i++){
if(Math.abs(nums[i]-nums[i-1])==1){
continue;
}else{
predict++;
}
}
return predict;
}
public static boolean isSorted(int[] nums){
for(int i=1;i<length;i++){
if(nums[i-1]>nums[i]){
return false;
}
}
return true;
}
public static void reverse(int[] nums,int start,int end){
while(start<end){
int temp=nums[start];
nums[start]=nums[end];
nums[end]=temp;
start++;
end--;
}
}
}