///problema farfurii infoarena
///rezolvare de
///generarea inversiunilor in ordine lexicografica
#include <bits/stdc++.h>
using namespace std;
vector<int> inv;
void inversiuni(int N,long long K)
{
inv.clear();
int i=0,nr=N;
while(nr-1<=K)
{
K-=(nr-1);
inv.push_back(N-nr+1);
i++;
nr--;
}
inv.push_back(N-K);
for(int i=N;i>=N-nr+1;i--)
{
if(i!=N-K)
{
inv.push_back(i);
}
}
}
int main()
{
long long K;
int N;
ifstream cin("farfurii.in");
ofstream cout("farfurii.out");
cin>> N >> K;
inversiuni( N, 1ll*N*(N-1)/2-K );
for(int i=0; i<N; i++)
{
cout<<inv[i]<<' ';
}
cout<<'\n';
return 0;
}