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) exit() elif p == 2 * q: print(1) print(1,1) exit() elif (p == q + 1) and (q < p < 2 * q): ans = [] ans.append((1,q)) if q != 1: ans.append((q,1)) print(len(ans)) for (n,m) in ans: print(n,m) exit() elif p == q: print(1) print(2,2) exit() elif p < q: nm = [] for n in range(1,ceil(sqrt(q*g))+1): nume = q*g*n deno = p*g*n-q*g if (deno > 0) and (nume % deno == 0): m = nume//deno nm.append((n,m)) ans = [] for (n,m) in nm: ans.append((n,m)) if (n != m):ans.append((m,n)) ans.sort() print(len(ans)) for (n,m) in ans: print(n,m) exit()