from collections import Counter def get_primes(size): is_prime = [True] * (size + 1) is_prime[0] = is_prime[1] = False primes = [] for i in range(size + 1): if not is_prime[i]: continue primes.append(i) j = 2 while i * j <= size: is_prime[i * j] = False j += 1 return primes X = int(input()) if X == 1: print(1) exit() fact = [] primes = get_primes(2 << 17) for p in primes: while X % p == 0: fact.append(p) X //= p if X != 1: print(-1) exit() counter = Counter(fact) n = 0 t = 0 keys = [] for k, v in counter.items(): if k == 2: t += (v + 1) // 2 n += (v // 2) * 5 n += (v % 2) * 3 for _ in range(v // 2): keys.append(2 * k) if v % 2 == 1: keys.append(k) else: keys.append(k) t += v n += (k + 1) * v keys.sort() LIMIT = 200_000 if n > LIMIT: print(-1) exit() print(n) brown = [] green = [] for v in range(t): brown.append(v) for v in range(t, n): green.append(v) edge = [] for i in range(t - 1): edge.append((i, i + 1)) j = t for i, k in enumerate(keys): for _ in range(k): edge.append((i, j)) j += 1 for i, j in edge: print(i + 1, j + 1) colors = ['b'] * len(brown) + ['g'] * len(green) print(*colors)