問題文
(1,2,dots,N) の順列 A=(A1,A2,dots,AN) が与えられます。
1leqLleqRleqN を満たす整数の組 (L,R) に対して、A の L 番目から R 番目までの要素を反転してできる順列を f(L,R) とします。
ここで、「A の L 番目から R 番目までの要素を反転する」とは、AL,AL+1,dots,AR−1,AR を AR,AR−1,dots,AL+1,AL に同時に置き換えることを言います。
(L,R) を 1leqLleqRleqN を満たすように選ぶ方法は fracN(N+1)2 通りあります。
このような (L,R) の組全てに対して順列 f(L,R) をすべて列挙して辞書順にソートしたときに、先頭から K 番目にある順列を求めてください。
数列の辞書順とは?
数列 S=(S1,S2,ldots,S∣S∣) が数列 T=(T1,T2,ldots,T∣T∣) より辞書順で小さいとは、下記の 1. と 2. のどちらかが成り立つことを言います。 ここで、∣S∣,∣T∣ はそれぞれ S,T の長さを表します。
- ∣S∣lt∣T∣ かつ $(S_1,S_2,\\ldots,S_{|S|}) = (T_1,T_2,\\ldots,T_{|S|})$。
- ある整数 1leqileqminlbrace∣S∣,∣T∣rbrace が存在して、下記の 2 つがともに成り立つ。
- $(S_1,S_2,\\ldots,S_{i-1}) = (T_1,T_2,\\ldots,T_{i-1})$
- Si が Ti より(数として)小さい。
制約
- 1leqNleq7000
- 1leqKleqfracN(N+1)2
- A は (1,2,dots,N) の順列
入力
入力は以下の形式で標準入力から与えられる。
N K
A1 A2 dots AN
出力
順列 f(L,R) を列挙して辞書順にソートしたときに、先頭から K 番目にある順列を B=(B1,B2,dots,BN) とする。
このとき以下の形式で B を出力せよ。
B1 B2 dots BN
入力例 1
3 5
1 3 2
出力例 1
2 3 1
1leqLleqRleqN を満たす (L,R) の組全てに対して順列 f(L,R) をすべて列挙すると次のようになります。
- f(1,1)=(1,3,2)
- f(1,2)=(3,1,2)
- f(1,3)=(2,3,1)
- f(2,2)=(1,3,2)
- f(2,3)=(1,2,3)
- f(3,3)=(1,3,2)
これらを辞書順にソートしたときに 5 番目に来る順列は f(1,3)=(2,3,1) です。よってこれを出力します。
入力例 2
5 15
1 2 3 4 5
出力例 2
5 4 3 2 1
答えは f(1,5) です。
入力例 3
10 37
9 2 1 3 8 7 10 4 5 6
出力例 3
9 2 1 6 5 4 10 7 8 3