#include <bits/stdc++.h>
#define fin cin
#define fout cout
#define maxn 66
using namespace std;
long long st[maxn], ans[maxn], flag;
void iddfs(long long a, long long b, int dep, int maxdep) {
if (dep > maxdep) {
return;
}
if (a == 1 && b > st[dep - 1]) {
st[dep] = b;
if (flag == 0 || st[dep] < ans[dep]) {
for (int i = 1; i <= dep; i++) {
ans[i] = st[i];
}
flag = 1;
return;
}
}
long long l = max(b / a, st[dep - 1] + 1);
long long r = (maxdep - dep + 1) * b / a;
if (flag && r >= ans[maxdep]) {
r = ans[maxdep] - 1;
}
for (long long i = l; i < r; i++) {
st[dep] = i;
long long gc = __gcd(a * i - b, b * i);
iddfs((a * i - b) / gc, b * i / gc, dep + 1, maxdep);
}
}
int main() {
ios::sync_with_stdio(0); fin.tie(0); fout.tie(0);
long long a, b;
fin >> a >> b;
long long c = __gcd(a, b);
a /= c, b /= c, st[0] = 1;
for (int dep = 1; dep <= 10; dep++) {
iddfs(a, b, 1, dep);
if (flag) {
for (int i = 1; i <= dep; i++) {
cout << ans[i] << " ";
}
break;
}
}
return 0;
}