import math def sum_divisors(x): if x == 0: return 0 total = 0 sqrt_x = int(math.isqrt(x)) for i in range(1, sqrt_x + 1): if x % i == 0: total += i if i != x // i: total += x // i return total def find_single_x(N): max_x = 2 * N - 1 for x in range(1, max_x + 1): if sum_divisors(x) == N: return [x] return None def find_even_pair(N): candidates = [] for x in range(1, 2 * N): if x % 2 == 0: fx = sum_divisors(x) candidates.append((x, fx)) for i in range(len(candidates)): a, fa = candidates[i] for j in range(i + 1, len(candidates)): b, fb = candidates[j] if (fa ^ fb) == N and (a + b) < 2 * N: return [a, b] return None def find_odd_pair(N): target = N ^ 1 candidates = [] for x in range(1, 2 * N): if x % 2 == 0 and x != 1: fx = sum_divisors(x) candidates.append((x, fx)) for i in range(len(candidates)): a, fa = candidates[i] for j in range(i + 1, len(candidates)): b, fb = candidates[j] if (fa ^ fb) == target and (a + b) < (2 * N - 1): return [1, a, b] return None def solve(): N = int(input()) if N == 0: print(-1) return single = find_single_x(N) if single: print(1) print(single[0]) return if N % 2 == 0: pair = find_even_pair(N) if pair: print(2) print(' '.join(map(str, pair))) return else: trio = find_odd_pair(N) if trio: print(3) print(' '.join(map(str, trio))) return print(-1) solve()