#include<bits/stdc++.h>
using namespace std;
long long arr[100005],ans[100005];
int flag;
long long inline gcd(long long a,long b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
long long inline lcm(long long a,long long b)
{
return a/gcd(a,b)*b;
}
void inline dfs(int layer,long long a,long long b,int it)
{
long long t1,t2,d1,d2,i;
if(it==1)
{
if(a==1)
{
arr[layer]=b;
if(!flag&&b!=arr[layer-1])
{
flag=1;
for(i=1;i<=layer;++i)
ans[i]=arr[i];
}
else if(flag&&arr[layer]<ans[layer]&&b!=arr[layer-1])
{
for(i=1;i<=layer;++i)
ans[i]=arr[i];
}
}
return ;
}
t1=max((long long)ceil(1.0*b/a),arr[layer-1]);
t2=max(arr[layer-1],(long long)floor(1.0*it*b/a));
for(i=t1;i<=t2;++i)
{
arr[layer]=i;
d2=lcm(b,i);
d1=d2/b*a-d2/i;
long long c=gcd(d1,d2);
d2/=c;
d1/=c;
dfs(layer+1,d1,d2,it-1);
}
}
int main()
{
int a,b,i,j;
scanf("%d %d",&a,&b);
for(i=1;;++i)
{
flag=0;
dfs(1,a,b,i);
if(flag)
break;
}
for(j=1;j<=i;++j)
printf("%lld ",ans[j]);
return 0;
}