'''关于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