from math import gcd,ceil,sqrt p,q = map(int,input().split()) g = gcd(p,q) p //= g q //= g if p > 2 * q: print(0) elif p == 2 * q: print(1) print(1,1) elif p == q + 1: ans = set() ans.add((1,q)) ans.add((q,1)) ans = list(ans) ans.sort() print(len(ans)) for (n,m) in ans: print(n,m) elif p == q: print(1) print(2,2) elif p < q: nm = [] for n in range(1,ceil(sqrt(q))+1): nume = q*n deno = p*n-q if (deno > 0) and (nume % deno == 0): m = nume//deno nm.append((n,m)) ans = set() for (n,m) in nm: ans.add((n,m)) ans.add((m,n)) ans = list(ans) ans.sort() print(len(ans)) for (n,m) in ans: print(n,m)