def fact(num): i=2 ans=dict() while i*i <=num: while num%i==0: num=num//i if i in ans: ans[i]+=1 else: ans[i]=1 i+=1 if num!=1: ans[num]=1 return ans from math import gcd p,q = map(int,input().split()) g = gcd(p,q) p = p // g q = q // g fac = fact(q**2) nums = [1] + [key for key,_ in fac.items()] ans = [] for key in nums: pn = q**2//key + q pm = (q**2)//(pn - q) + q if pn % p == 0 and pm % p == 0: ans.append([pn // p ,pm // p]) if (pn//p != pm//p): ans.append([pm // p ,pn // p]) ans.sort() print(len(ans)) for l in ans: print(*l)