//============================================================================
// Name : hello.cpp
// Author : key
// Version : 8
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <string>
#include <algorithm>
using namespace std;
#define NUM_INF 0x7FFFFFFF
#define MAX_N 15
int n; //共n 个数
int sum;
int rcd[MAX_N]; //记录每个位置填的数
int ans[MAX_N];
int used[MAX_N]; //标记数是否用过
int num[MAX_N]; //存放输入的n 个数
bool flat=0;
int jud()
{
int i,j;
for(i=0;i<n;i++)
ans[i] = rcd[i];
for(i=n-1;i>0;i--)
{
for(j=0;j<i;j++)
{
ans[j] = ans[j]+ans[j+1];
}
}
return ans[0];
}
void full_permutation(int l){
if(flat) return;
int i;
if (l == n)
{
if(jud()==sum)
{
flat=1;
for (i=0; i<n; i++){
printf("%d", rcd[i]);
if (i < n-1) printf(" ");
}
printf("\n");
return ;
}
}
for (i=0; i<n; i++) //枚举所有的数(n 个), 循环从开始
if (!used[i]){ //若num[i]没有使用过, 则标记为已使用
used[i] = 1; rcd[l] = num[i];//在l 位置放上该数
full_permutation(l+1); //填下一个位置
used[i] = 0; //清标记
}
}
int main()
{
int i;
while(scanf("%d%d",&n,&sum)!=EOF)
{
for(i=0;i<n;i++)
num[i] = i+1;
memset(used,0,sizeof(used));
flat = 0;
full_permutation(0);
}
return 0;
}
// Name : hello.cpp
// Author : key
// Version : 8
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <string>
#include <algorithm>
using namespace std;
#define NUM_INF 0x7FFFFFFF
#define MAX_N 15
int n; //共n 个数
int sum;
int rcd[MAX_N]; //记录每个位置填的数
int ans[MAX_N];
int used[MAX_N]; //标记数是否用过
int num[MAX_N]; //存放输入的n 个数
bool flat=0;
int jud()
{
int i,j;
for(i=0;i<n;i++)
ans[i] = rcd[i];
for(i=n-1;i>0;i--)
{
for(j=0;j<i;j++)
{
ans[j] = ans[j]+ans[j+1];
}
}
return ans[0];
}
void full_permutation(int l){
if(flat) return;
int i;
if (l == n)
{
if(jud()==sum)
{
flat=1;
for (i=0; i<n; i++){
printf("%d", rcd[i]);
if (i < n-1) printf(" ");
}
printf("\n");
return ;
}
}
for (i=0; i<n; i++) //枚举所有的数(n 个), 循环从开始
if (!used[i]){ //若num[i]没有使用过, 则标记为已使用
used[i] = 1; rcd[l] = num[i];//在l 位置放上该数
full_permutation(l+1); //填下一个位置
used[i] = 0; //清标记
}
}
int main()
{
int i;
while(scanf("%d%d",&n,&sum)!=EOF)
{
for(i=0;i<n;i++)
num[i] = i+1;
memset(used,0,sizeof(used));
flat = 0;
full_permutation(0);
}
return 0;
}