#include using namespace std; using ll=long long; /* N=an M=am 1/N + 1/M = (n+m)/anm P/Q=(n+m)/anm a=(n+m)Q/nmP */ //Nの正の約数を列挙する vector Divisors(long long N){ vector p,q; long long i=1,K=0; while(i*i=0;i--){ p.push_back(q[i]); } return p; } int main() { ll P,Q; cin>>P>>Q; auto div=Divisors(Q); vector> ans; for(auto n:div) for(auto m:div){ if(Q%(n*m)!=0) continue; if(__gcd(n,m)!=1) continue; ll X=(n+m)*Q; ll Y=n*m*P; if(X%Y!=0) continue; ll a=X/Y; ans.push_back({a*n,a*m}); } sort(ans.begin(),ans.end()); cout<