C - N!÷K番目の単語 Editorial /

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

高橋語には N 種類の文字があります。

この問題では便宜上、各文字に辞書順で小さい順に 1N の整数を割り振って扱うことにします。

高橋語の単語は全て N 文字からなり、N 種類の文字が全てちょうど 1 個ずつ含まれます。 また、そのような文字列は全て高橋語の単語です。

つまり、高橋語の単語は N! 個あります。

ある N 以下の正の整数 K が与えられるので、高橋語の単語の中で辞書順で小さい方から N! ÷ K 番目の単語を求めてください。


入力

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

N K
  • 1 行目には 2 つの整数 N, K(1 ≦ K ≦ N ≦ 10^5) が空白区切りで与えられます。

部分点

この問題には部分点が設定されている。

  • 1 ≦ N ≦ 20 を満たすデータセットに正解した場合は 30 点が与えられる。
  • 1 ≦ N ≦ 10^5 を満たすデータセットに正解した場合はさらに 70 点が与えられる。合計で100点となる。

出力

出力は N 行からなる。 i 行目には高橋語の単語の中で辞書順で小さい方から N! ÷ K 番目の単語の i 文字目の文字に対応する整数を出力せよ。 出力の末尾に改行を入れること。


入力例1

4 3

出力例1

2
1
4
3

1,2,3,4 の並び替えのうち、辞書順で小さい方から 4! ÷ 3 = 8 番目の文字を出力しなければなりません。 高橋語の単語のうち辞書順で小さい方から順に 8 個を列挙すると

1, 2, 3, 4

1, 2, 4, 3

1, 3, 2, 4

1, 3, 4, 2

1, 4, 2, 3

1, 4, 3, 2

2, 1, 3, 4

2, 1, 4, 3

となります。よって 2, 1, 4, 3が求めるべき単語です。


入力例2

11 7

出力例2

2
7
9
5
4
11
10
8
6
3
1