#include<bits/stdc++.h>
using namespace std;
const int N=17;
int n,k,a[N],ans,dp[N][N*N];
int solve(int tk){
memset(dp,0x3f,sizeof(dp));
dp[0][0]=0;
for(int i=1;i<=tk;i++){
for(int j=0;j<=a[i]*n;j++){
for(int q=0;a[i]*q<=j;q++){
dp[i][j]=min(dp[i][j],dp[i-1][j-a[i]*q]+q);
}
}
}
for(int i=1;i<=a[tk]*n+1;i++)
if(dp[tk][i]>n) return i-1;
return 0;
}
void dfs1(int x,int rgt){
ans=max(ans,rgt);
if(x==k+1) return;
for(int i=a[i-1]+1;i<=rgt+1;i++){
a[x]=i;
dfs1(x+1,solve(x));
a[x]=0;
}
return;
}
void dfs2(int x,int rgt){
if(rgt==ans){
for(int i=1;i<x;i++) cout<<a[i]<<' ';
cout<<"\nMAX="<<ans;
exit(0);
}
if(x==k+1) return;
for(int i=a[i-1]+1;i<=rgt+1;i++){
a[x]=i;
dfs2(x+1,solve(x));
a[x]=0;
}
return;
}
int main(){
cin>>n>>k;
dfs1(1,0);
dfs2(1,0);
return 0;
}