'''关于Pancake sorting的一种简单情况。就是有种方法可以保证至多2n-3次完成。
类似于选择排序:
先找出n各数字种最大的一个数n,假设所在位置为sn,那么先翻转前sn个数字f(sn),
使得n在最顶部,之后再翻转前n个元素f(n),这样一来n就到了最底部。就是两次翻转。
之后再选择第二大的假设为n-1,位置在sn-1,那么先翻转前sn-1个数字f(sn-1),使得n-1在最
顶部,之后再翻转前n-1个元素f(n-1),这样一来n-1就到了倒数第二个。也是两次翻转。
注意:每次对于第x大的元素要判断它是不是在倒是第x个位置上,若在就不用翻转这个数字了。
一直进行n-2次,最多2n-4次翻转。剩下上面三个最小的1,2其它的都排序了。'''
def filp(s):
return s[::-1]
def ifsort(s):
tag = 1
for i in range(len(s)-1):
if int(s[i]) > int(s[i+1]):
tag = 0
if tag:
return True
return False
def ind(s):
m = -1
t = []
for i in range(len(s)):
if int(s[i]) > m:
m = int(s[i])
t.append(i)
return t[-1]
def Sort_p(s, n):
l = len(s)
count = 0
count_word = []
while True:
if l == 0 or ifsort(s):
break
m = ind(s[:l])
if m == l-1:
l -= 1
continue
ts = filp(s[:m+1])
t = ts + s[1+m:]
t_f = filp(t[:l])
s = t_f + s[l:]
if m >= 1:
count += 1
count_word.append(m+1)
count_word.append(l)
count += 1
l -= 1
return count, count_word
while True:
try:
s = input().split()
n = s[0]
s = s[1:]
if n == '0':
break
c, w = Sort_p(s, n)
w = ' '.join(map(str, w))
print(c, w)
except:
break