#include using namespace std; int n, k; int t[1000000]; int rem[1000000]; void scan(){ scanf("%d%d", &n, &k); } void push(int i){ for ( i; i <= n; i += ( i & (-i) ) ) ++t[i]; } int find(int st, int en){ int sum = 0; for ( en; en > 0; en -= ( en & (-en) ) ) sum += t[en]; st -= 1; for ( st; st > 0; st -= ( st & (-st) ) ) sum -= t[st]; return sum; } int binary(int l, int r, int s){ int mid, tek = l; while(l < r){ mid = (l + r) / 2; int elem = mid - tek - find(tek + 1, mid); if ( elem >= s ) r = mid; else l = mid + 1; } return r; } void solve(){ int curind = 0; for ( int i = 0; i < n; ++i ){ int tk = k, p = n - i; tk %= p; if ( tk == 0 ) tk = p; if ( n - curind - find(curind + 1, n) >= tk ){ curind = binary(curind , n, tk);} else{ tk -= ( n - curind - find(curind + 1, n)); curind = binary(0, curind, tk); } push(curind); rem[curind] = i + 1;//printf("%d ", curind); } printf ( "%d", rem[1] ); for ( int i = 2; i <= n; ++i ) printf ( " %d", rem[i] ); printf("\n"); } int main(){ freopen ( "lbulbs.in", "r", stdin ); freopen ( "lbulbs.out", "w", stdout ); scan(); solve(); }