## https://yukicoder.me/problems/no/2125 import math def calc_gcd(A, B): """ 正の整数A, Bの最大公約数を計算する """ a = max(A, B) b = min(A, B) while a % b > 0: c = a % b a = b b = c return b def main(): P, Q = map(int, input().split()) # P, Qを互いに素な整数として解く gcd = calc_gcd(P, Q) P //= gcd Q //= gcd # Qの約数分解 sqrt_q = int(math.sqrt(Q)) answers = [] for n in range(1, 2 * sqrt_q + 1): l = Q - n * P r = -Q * n if abs(l) > 0 and abs(r) % abs(l) == 0: if r * l > 0: m = abs(r) // abs(l) if m >= 1: answers.append((n, m)) answers.append((m, n)) answers = set(answers) print(len(answers)) for n, m in answers: print(n, m) if __name__ == "__main__": main()