from collections import defaultdict def factorint(n): factor = defaultdict(int) for p in range(2, min(n, 2 * 10**5) + 1): while n % p == 0: factor[p] += 1 n //= p if n == 1: return factor else: print(-1) exit() N = int(input()) if N == 1: print(2) print(1, 2) print("g", "b") exit() factor = factorint(N) factor[4] = factor[2] // 2 factor[2] %= 2 green = [] brown = [] edges = [] cnt = 0 def add_cnt(): global cnt cnt += 1 if cnt >= 2 * 10**5: print(-1) exit() for p, x in factor.items(): for _ in range(x): if cnt > 0: edges.append((brown[-1], cnt)) brown.append(cnt) add_cnt() for _ in range(p): green.append(cnt) edges.append((brown[-1], cnt)) add_cnt() assert len(edges) + 1 < 2 * 10**5 print(len(edges) + 1) for u, v in edges: print(u + 1, v + 1) colors = [None] * (len(edges) + 1) for g in green: colors[g] = "g" for b in brown: colors[b] = "b" print(*colors)