/*
你指尖跃动的电光，是我此生不变的信仰，唯我超电磁炮永世长存！
君指先跃动の光は、私の一生不変の信仰に、唯私の超電磁砲永世生き！

唯我超电磁炮永世长存
我心所属依旧超电磁炮
超凡入圣吾炮任可再战
电闪雷鸣炮姐征战天下
磁轨炮学园最强电击使
炮姐震古烁今吾炮赛高
永无止境炮党头顶青天
世人皆知唯我哔哩哔哩
长驱直入最强电击公主
存二次元此生无悔入炮

我炮还能再战100年
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1000005;
struct IO_Tp {
    const static int _I_Buffer_Size = 2 << 22;
    char _I_Buffer[_I_Buffer_Size], *_I_pos = _I_Buffer;

    const static int _O_Buffer_Size = 2 << 22;
    char _O_Buffer[_O_Buffer_Size], *_O_pos = _O_Buffer;

    IO_Tp() { fread(_I_Buffer, 1, _I_Buffer_Size, stdin); }
    ~IO_Tp() { fwrite(_O_Buffer, 1, _O_pos - _O_Buffer, stdout); }

    IO_Tp &operator>>(ll &res) {
    	ll f=1;
        while (!isdigit(*_I_pos)&&(*_I_pos)!='-') ++_I_pos;
        if(*_I_pos=='-')f=-1,++_I_pos;
        res = *_I_pos++ - '0';
        while (isdigit(*_I_pos)) res = res * 10 + (*_I_pos++ - '0');
        res*=f;
        return *this;
    }

    IO_Tp &operator<<(ll n) {
    	if(n<0)*_O_pos++='-',n=-n;
        static char _buf[10];
        char *_pos = _buf;
        do
            *_pos++ = '0' + n % 10;
        while (n /= 10);
        while (_pos != _buf) *_O_pos++ = *--_pos;
        return *this;
    }

    IO_Tp &operator<<(char ch) {
        *_O_pos++ = ch;
        return *this;
    }
} IO;
ll n,k,cnt[3*N],cnt2[3*N],cnt3[3*N];
int main(){
	IO>>n>>k;
	for(ll i=1;i<=n;i++)cnt[i]=1;
	for(ll i=1,sum=0;i<=n*2;i++){
		cnt2[i]+=sum;
		if(i<=n)sum+=cnt[i];
		else sum-=cnt[i-n];
	}
	for(ll i=1,sum=0;i<=n*3;i++){
		cnt3[i]+=sum;
		if(i<=2*n)sum+=cnt2[i];
		if(i>n)sum-=cnt2[i-n];
	}
	for(ll i=3;i<=n*3;i++)if(k<=cnt3[i]){
		for(ll j=1;j<=i-2;j++)if(k<=cnt2[i-j]){ 
			ll a=j;
			for(ll t=1;t<=i-j-1;t++){
				ll b=t,c=i-a-b;
				if(c<=n)k--;
				if(!k){IO<<a<<' '<<b<<' '<<c<<'\n';return 0;}
			}
		}else k-=cnt2[i-j];
	}else k-=cnt3[i];
	return 0;
}

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<limits.h>
#define IL inline
#define re register
#define LL long long
#define ULL unsigned long long
#ifdef TH
#define debug printf("Now is %d\n",__LINE__);
#else
#define debug
#endif
using namespace std;
const int N=1005;
int k;
int que[N],len;
long long n,a,b;
IL bool cmp(int x,int y){return x>y;}
IL void work(LL &x)
{
	len=a=b=0;
	re int mid=x;
	for(;mid;mid/=10)
		que[++len]=mid%10;
	sort(que+1,que+len+1);
	for(int i=1;i<=len;i++) a=a*10+que[i];
	for(int i=len;i>0;i--) b=b*10+que[i];
	x=b-a;
}
int main()
{
	cin>>n>>k;
	while(k--) work(n);
	cout<<n;
	return 0;
}
