#include<iostream>
#include<algorithm>
#include<cstring>
#define endl '\n'
#define int long long
#define rep(i,a,b) for(int i=(a);i<(b);i++)
#define per(i,a,b) for(int i=(a);i>(b);i--)
#define N 1000100
using namespace std;
int n,m,dep,now[N],ans[N];
bool flag;
void dfs(int a,int b,int d){
if(d==dep){
if(a==1&&b>now[d-1]){
now[d]=b;
if(ans[d]>now[d]){
for(int i=1;i<=d;i++)
ans[i]=now[i];
}
flag=true;
}
return;
}
int low=max(now[d-1]+1,b/a+1);
int up=1e7;
up=min(up,(dep-d+1)*b/a);
for(int i=low ;i<=up;i++){
now[d]=i;
int x=a*i-b,y=b*i;
int g=__gcd(x,y);
dfs(x/g,y/g,d+1);
}
}
signed main(){
memset(ans,0x3f,sizeof ans);
cin>>n>>m;
now[0]=1;
for(dep=1;!flag;dep++){
dfs(n,m,1);
}
for(int i=1;i<dep;i++){
cout<<ans[i]<<" ";
}
return 0;
}