#arc160a. [arc160_a]Reverse and Count

[arc160_a]Reverse and Count

問題文

(1,2,dots,N)(1, 2, \\dots, N) の順列 A=(A1,A2,dots,AN)A = (A_1, A_2, \\dots, A_N) が与えられます。
1leqLleqRleqN1 \\leq L \\leq R \\leq N を満たす整数の組 (L,R)(L, R) に対して、AALL 番目から RR 番目までの要素を反転してできる順列を f(L,R)f(L, R) とします。
ここで、「AALL 番目から RR 番目までの要素を反転する」とは、AL,AL+1,dots,AR1,ARA_L, A_{L+1}, \\dots, A_{R-1}, A_RAR,AR1,dots,AL+1,ALA_R, A_{R-1}, \\dots, A_{L+1}, A_{L} に同時に置き換えることを言います。

(L,R)(L, R)1leqLleqRleqN1 \\leq L \\leq R \\leq N を満たすように選ぶ方法は fracN(N+1)2\\frac{N(N + 1)}{2} 通りあります。
このような (L,R)(L, R) の組全てに対して順列 f(L,R)f(L, R) をすべて列挙して辞書順にソートしたときに、先頭から KK 番目にある順列を求めてください。

数列の辞書順とは?

数列 S=(S1,S2,ldots,SS)S = (S_1,S_2,\\ldots,S_{|S|}) が数列 T=(T1,T2,ldots,TT)T = (T_1,T_2,\\ldots,T_{|T|}) より辞書順で小さいとは、下記の 1. と 2. のどちらかが成り立つことを言います。 ここで、S,T|S|, |T| はそれぞれ S,TS, T の長さを表します。

  1. SltT|S| \\lt |T| かつ $(S_1,S_2,\\ldots,S_{|S|}) = (T_1,T_2,\\ldots,T_{|S|})$。
  2. ある整数 1leqileqminlbraceS,Trbrace1 \\leq i \\leq \\min\\lbrace |S|, |T| \\rbrace が存在して、下記の 22 つがともに成り立つ。
    • $(S_1,S_2,\\ldots,S_{i-1}) = (T_1,T_2,\\ldots,T_{i-1})$
    • SiS_iTiT_i より(数として)小さい。

制約

  • 1leqNleq70001 \\leq N \\leq 7000
  • 1leqKleqfracN(N+1)21 \\leq K \\leq \\frac{N(N + 1)}{2}
  • AA(1,2,dots,N)(1, 2, \\dots, N) の順列

入力

入力は以下の形式で標準入力から与えられる。

NN KK A1A_1 A2A_2 dots\\dots ANA_N

出力

順列 f(L,R)f(L, R) を列挙して辞書順にソートしたときに、先頭から KK 番目にある順列を B=(B1,B2,dots,BN)B =(B_1, B_2, \\dots, B_N) とする。
このとき以下の形式で BB を出力せよ。

B1B_1 B2B_2 dots\\dots BNB_N


入力例 1

3 5
1 3 2

出力例 1

2 3 1

1leqLleqRleqN1 \\leq L \\leq R \\leq N を満たす (L,R)(L, R) の組全てに対して順列 f(L,R)f(L, R) をすべて列挙すると次のようになります。

  • f(1,1)=(1,3,2)f(1, 1) = (1, 3, 2)
  • f(1,2)=(3,1,2)f(1, 2) = (3, 1, 2)
  • f(1,3)=(2,3,1)f(1, 3) = (2, 3, 1)
  • f(2,2)=(1,3,2)f(2, 2) = (1, 3, 2)
  • f(2,3)=(1,2,3)f(2, 3) = (1, 2, 3)
  • f(3,3)=(1,3,2)f(3, 3) = (1, 3, 2)

これらを辞書順にソートしたときに 55 番目に来る順列は f(1,3)=(2,3,1)f(1, 3) = (2, 3, 1) です。よってこれを出力します。


入力例 2

5 15
1 2 3 4 5

出力例 2

5 4 3 2 1

答えは f(1,5)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