/**HDUOJ-1027
* Problem Description:
* Now our hero finds the door to the BEelzebub feng5166. He opens the door and finds feng5166
* is about to kill our pretty Princess. But now the BEelzebub has to beat our hero first. feng5166 says,
* "I have three question for you, if you can work them out, I will release the Princess, or you will be
* my dinner, too." Ignatius says confidently, "OK, at last, I will save the Princess."
* "Now I will show you the first problem." feng5166 says, "Given a sequence of number 1 to N,
* we define that 1,2,3...N-1,N is the smallest sequence among all the sequence which can be composed
* with number 1 to N(each number can be and should be use only once in this problem).
* So it's easy to see the second smallest sequence is 1,2,3...N,N-1. Now I will give you two numbers, N and M.
* You should tell me the Mth smallest sequence which is composed with number 1 to N. It's easy, isn't is? Hahahahaha......"
* Can you help Ignatius to solve this problem?
*
* Input
* The input contains several test cases. Each test case consists of two numbers, N and M(1<=N<=1000, 1<=M<=10000).
* You may assume that there is always a sequence satisfied the BEelzebub's demand. The input is terminated by the end of file.
*
* Output
* For each test case, you only have to output the sequence satisfied the BEelzebub's demand. When output a sequence,
* you should print a space between two numbers, but do not output any spaces after the last number.
*
* Sample Input
* 6 4
* 11 8
*
* Sample Output
* 1 2 3 5 6 4
* 1 2 3 4 5 6 7 9 8 11 10
* */
#include<bits/stdc++.h>
using namespace std;
int a[1001];
int main(){
int n, m;
while( cin >> n >> m ){
for( int i = 0; i < n; ++i)
a[i] = i+1;
int cnt = 1;
//建議查看cppreference關於next_permutation的原型聲明和用法,尤其是涉及到區間處理是端點的開閉情況
// next_permutation(a,a+n);
while(cnt != m ){
++cnt;
next_permutation(a,a+n);
}
for( int i = 0; i < n-1; ++i)
cout<<a[i]<<" ";
cout<<a[n-1]<<endl;
}
}
//杭電1027一道簡單的題目主要是C++ next_permutation(first,last)標準庫函數的使用,
//調用這個函數可以得到區間[first,last)內按照定義的compare函數確定的從小到大的全排列的
//一個組合,每調用一次,就得到恰好比上一次調用的到的排列大一點的一個新的排列,使用要求區間你的元素必須是已經排序的
//這道題目是求n個自然數(從1開始連續的n個)的第m大的全排列的組合,定義一個計數器,記錄當前的排列是第幾大的,如果沒達到
//第m大的就調用函數生成一個新的大一點的全排列,同時使計數器自增一,連續執行此過程知道得到第m大的全排列
//最後注意題目中的輸出要求,除了最後一個元素後面沒有空格,其它元素後面都要輸出一個空格