#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 x:div) for(auto y:div){ if(Q%(x*y)!=0) continue; if(__gcd(x,y)!=1) continue; ll X=(x+y)*Q; ll Y=x*y*P; if(X%Y!=0) continue; ll a=X/Y; ans.push_back({a*x,a*y}); } cout<