/*
开始没啥好的思路 暴力吧 T的太严重
加了k>n的特判 结果没数据…..然后又暴力生成了几组答案 打表
然而有没有数据 华丽的爆零了
正解 回溯+DP
回溯生成k数组 然后DP找最优解更新
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,k,f[],a[],ans[],Ans;
void Judge()//DP判断 f[i]表示面值为i最少需要的票数
{
memset(f,/,sizeof(f));
f[]=;
int i=;
while(f[i]<=n)//连不起来 就停下
{
i++;//累加保证可以组合成没个数
for(int j=;j<=k;j++)
if(i>=a[j])
f[i]=min(f[i],f[i-a[j]]+);//更新最优解
}
i--;
if(i>Ans)
{
Ans=i;
for(int j=;j<=k;j++)
ans[j]=a[j];
}
}
void Dfs(int l)
{
if(l==k)
{
Judge();
return;
}
for(int i=a[l]+;i<=a[l]*n+;i++)
{
a[++l]=i;
Dfs(l);l--;
}
}
int main()
{
scanf("%d%d",&n,&k);
Dfs();
for(int i=;i<=k;i++)
printf("%d ",ans[i]);
printf("\nMAX=%d\n",Ans);
return ;
}