#include<iostream>
#include<math.h>
#include<algorithm>
#include<string.h>
#include<map>
#include<vector>
#include<queue>
#include<list>
#include<set>
//#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define ii pair<int,int>
#define BIT(x,i) (x & (1 << i))
#define MASK(x) (1 << x)
using namespace std;
const int N = 2e6+7;
const int inf = 1e9 + 7;
const long long infll = 1e18;
const int MOD = 998244353;
long long n,k;
int a[N], bit[N], ok[N];
void update(int x, int v) {
while(x <= n) {
bit[x] += v;
x += (x&-x);
}
}
int get(int l,int r) {
int ans = 0;
while(l <= r) {
if(r - (r&-r) >= l) {
ans += bit[r];
r -= (r&-r);
} else {
ans += a[r];
r--;
}
}
return ans;
}
int solve_case1(int i, int sum) {
int l = i + 1;
int r = n;
if(l > r) return 0;
int pos;
while(l <= r) {
int mid = (l + r) / 2;
if(get(i + 1, mid) + sum >= k) {
pos = mid;
r = mid - 1;
} else l = mid + 1;
}
return pos;
}
int solve_case2(int i,int suf) {
int l = 1;
int r = i - 1;
if(l > r) return 0;
int pos;
while(l <= r) {
int mid = (l + r) / 2;
if(suf + get(1, mid) >= k) {
pos = mid;
r = mid - 1;
} else l = mid + 1;
}
return pos;
}
int solve_case3(int i, int pre, int suf) {
int l = 1;
int r = n;
int cnt;
while(l <= r) {
int mid = (l + r) / 2;
if((pre + suf) * mid <= k) {
cnt = mid;
l = mid + 1;
} else r = mid - 1;
}
if((pre + suf) * cnt == k) {
if(pre == 0) return solve_case1(i, (pre + suf) * (cnt - 1));
return solve_case2(i, (pre + suf) * cnt - pre);
} else
if((pre + suf) * cnt + suf >= k) return solve_case1(i, (pre + suf) * cnt);
return solve_case2(i, (pre + suf) * cnt + suf);
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// freopen("test.inp","r",stdin);
// freopen("test.out","w",stdout);
cin>>n>>k;
for(int i=1;i<=n;i++) {
a[i] = 1;
update(i, 1);
}
k++;
int kk = k;
int i;
if(k % n == 0) i = n; else i = k % n;
for(int j=1;j<n;j++) {
cout<<i<<" "; ok[i] = 1;
k = kk % (n - j);
if(k == 0) k = n-j;
int suf = get(i + 1, n);
int pre = get(1 , i - 1);
update(i, -1);
a[i] = 0;
if(suf >= k) i = solve_case1(i,0);
else if(pre + suf >= k) i = solve_case2(i, suf);
else i = solve_case3(i, pre, suf);
}
for(int i=1;i<=n;i++) if(ok[i] == 0) cout<<i;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPG1hdGguaD4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxzdHJpbmcuaD4KI2luY2x1ZGU8bWFwPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxsaXN0PgojaW5jbHVkZTxzZXQ+Ci8vI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgQklUKHgsaSkgKHggJiAoMSA8PCBpKSkKI2RlZmluZSBNQVNLKHgpICgxIDw8IHgpCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAyZTYrNzsKY29uc3QgaW50IGluZiA9IDFlOSArIDc7CmNvbnN0IGxvbmcgbG9uZyBpbmZsbCA9IDFlMTg7CmNvbnN0IGludCBNT0QgPSA5OTgyNDQzNTM7Cgpsb25nIGxvbmcgbixrOwppbnQgYVtOXSwgYml0W05dLCBva1tOXTsKCnZvaWQgdXBkYXRlKGludCB4LCBpbnQgdikgewogICAgd2hpbGUoeCA8PSBuKSB7CiAgICAgICAgYml0W3hdICs9IHY7CiAgICAgICAgeCArPSAoeCYteCk7CiAgICB9Cn0KaW50IGdldChpbnQgbCxpbnQgcikgewogICAgaW50IGFucyA9IDA7CiAgICB3aGlsZShsIDw9IHIpIHsKICAgICAgICBpZihyIC0gKHImLXIpID49IGwpIHsKICAgICAgICAgICAgYW5zICs9IGJpdFtyXTsKICAgICAgICAgICAgciAtPSAociYtcik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYW5zICs9IGFbcl07CiAgICAgICAgICAgIHItLTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYW5zOwp9CmludCBzb2x2ZV9jYXNlMShpbnQgaSwgaW50IHN1bSkgewogICAgaW50IGwgPSBpICsgMTsKICAgIGludCByID0gbjsKICAgIGlmKGwgPiByKSByZXR1cm4gMDsKICAgIGludCBwb3M7CiAgICB3aGlsZShsIDw9IHIpIHsKICAgICAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICAgICAgaWYoZ2V0KGkgKyAxLCBtaWQpICsgc3VtID49IGspIHsKICAgICAgICAgICAgcG9zID0gbWlkOwogICAgICAgICAgICByID0gbWlkIC0gMTsKICAgICAgICB9IGVsc2UgbCA9IG1pZCArIDE7CiAgICB9CiAgICByZXR1cm4gcG9zOwp9CmludCBzb2x2ZV9jYXNlMihpbnQgaSxpbnQgc3VmKSB7CiAgICBpbnQgbCA9IDE7CiAgICBpbnQgciA9IGkgLSAxOwogICAgaWYobCA+IHIpIHJldHVybiAwOwogICAgaW50IHBvczsKICAgIHdoaWxlKGwgPD0gcikgewogICAgICAgIGludCBtaWQgPSAobCArIHIpIC8gMjsKICAgICAgICBpZihzdWYgKyBnZXQoMSwgbWlkKSA+PSBrKSB7CiAgICAgICAgICAgIHBvcyA9IG1pZDsKICAgICAgICAgICAgciA9IG1pZCAtIDE7CiAgICAgICAgfSBlbHNlIGwgPSBtaWQgKyAxOwogICAgfQogICAgcmV0dXJuIHBvczsKfQppbnQgc29sdmVfY2FzZTMoaW50IGksIGludCBwcmUsIGludCBzdWYpIHsKICAgIGludCBsID0gMTsKICAgIGludCByID0gbjsKICAgIGludCBjbnQ7CiAgICB3aGlsZShsIDw9IHIpIHsKICAgICAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICAgICAgaWYoKHByZSArIHN1ZikgKiBtaWQgPD0gaykgewogICAgICAgICAgICBjbnQgPSBtaWQ7CiAgICAgICAgICAgIGwgPSBtaWQgKyAxOwogICAgICAgIH0gIGVsc2UgciA9IG1pZCAtIDE7CiAgICB9CiAgICBpZigocHJlICsgc3VmKSAqIGNudCA9PSBrKSB7CiAgICAgICAgaWYocHJlID09IDApIHJldHVybiBzb2x2ZV9jYXNlMShpLCAocHJlICsgc3VmKSAqIChjbnQgLSAxKSk7CiAgICAgICAgcmV0dXJuIHNvbHZlX2Nhc2UyKGksIChwcmUgKyBzdWYpICogY250IC0gcHJlKTsgCiAgICB9IGVsc2UKICAgIGlmKChwcmUgKyBzdWYpICogY250ICsgc3VmID49IGspIHJldHVybiBzb2x2ZV9jYXNlMShpLCAocHJlICsgc3VmKSAqIGNudCk7ICAgCiAgICByZXR1cm4gc29sdmVfY2FzZTIoaSwgKHByZSArIHN1ZikgKiBjbnQgKyBzdWYpOwp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICAvLyBmcmVvcGVuKCJ0ZXN0LmlucCIsInIiLHN0ZGluKTsKICAgIC8vIGZyZW9wZW4oInRlc3Qub3V0IiwidyIsc3Rkb3V0KTsKICAgIGNpbj4+bj4+azsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSB7CiAgICAgICAgYVtpXSA9IDE7CiAgICAgICAgdXBkYXRlKGksIDEpOwogICAgfQoKICAgIGsrKzsKICAgIGludCBrayA9IGs7CiAgICBpbnQgaTsKICAgIGlmKGsgJSBuID09IDApIGkgPSBuOyBlbHNlIGkgPSBrICUgbjsKICAgIGZvcihpbnQgaj0xO2o8bjtqKyspIHsKICAgICAgICBjb3V0PDxpPDwiICI7IG9rW2ldID0gMTsKICAgICAgICBrID0ga2sgJSAobiAtIGopOwogICAgICAgIGlmKGsgPT0gMCkgayA9IG4tajsKICAgICAgICBpbnQgc3VmID0gZ2V0KGkgKyAxLCBuKTsKICAgICAgICBpbnQgcHJlID0gZ2V0KDEgLCBpIC0gMSk7CiAgICAgICAgdXBkYXRlKGksIC0xKTsKICAgICAgICBhW2ldID0gMDsKICAgICAgICBpZihzdWYgPj0gaykgaSA9IHNvbHZlX2Nhc2UxKGksMCk7IAogICAgICAgIGVsc2UgaWYocHJlICsgc3VmID49IGspIGkgPSBzb2x2ZV9jYXNlMihpLCBzdWYpOwogICAgICAgIGVsc2UgaSA9IHNvbHZlX2Nhc2UzKGksIHByZSwgc3VmKTsKICAgIH0KICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSBpZihva1tpXSA9PSAwKSBjb3V0PDxpOwogICAgcmV0dXJuIDA7IAp9