# 単調性はないので二分探索は無理 # 実験するとわかるのだがNの約数dに対して、d-1 # さらにd-1の約数、がpになりうる def base_k(num, k): result = set() while num > 0: amari = num%k result.add(amari) num -= amari num //= k #print(result) return len(result) def divisors(n): lower_divisors , upper_divisors = [], [] i = 1 while i*i <= n: if n % i == 0: lower_divisors.append(i) if i != n // i: upper_divisors.append(n//i) i += 1 return lower_divisors + upper_divisors[::-1] N = int(input()) if N <= 2: print(N+1) exit() p_candidates = set() N_divs = divisors(N) for d in N_divs: d1_divs = set(divisors(d-1)) p_candidates |= d1_divs p_candidates.discard(0) p_candidates.discard(1) p_candidates = sorted(list(p_candidates)) #print(p_candidates) for p in p_candidates: calc = base_k(N, p) #print('p', p, 'calc', calc) if calc==1: print(p) break