#include <iostream>
#include <cstdio>
using namespace std;
int N,K, kk;
int As[30], Bs[30], Cs[30];
int An=0, Bn=0, Cn=0;
void move(int n,char from,char to)
{
int tmp,i, Asum=0, Bsum=0, Csum=0;
switch(from)
{
case 'A': tmp=As[--An]; break;
case 'B': tmp=Bs[--Bn]; break;
case 'C': tmp=Cs[--Cn]; break;
}
switch(to)
{
case 'A': As[An++]=tmp; break;
case 'B': Bs[Bn++]=tmp; break;
case 'C': Cs[Cn++]=tmp; break;
}
for(i=0; i<An; i++) Asum += As[i];
for(i=0; i<Bn; i++) Bsum += Bs[i];
for(i=0; i<Cn; i++) Csum += Cs[i];
kk++;
if(kk==K)
printf("%d %d %d\n",Asum,Bsum,Csum);
}
void Hanoi(int n,char from,char help,char to)
{
if(n==1) { move(n, from, to); return ; }
Hanoi(n-1,from, to, help);
move(n, from, to);
Hanoi(n-1, help, from, to);
}
int main()
{
cin>>N>>K; An=N;
As[N-1]=1; // As[N]示例:{256,128,64,32,16,8,4,2,1}
for(int i=N-2; i>=0; i--) As[i]=As[i+1]*2;
kk=0;
Hanoi(N,'A','B','C');
return 0;
}