from random import randint from collections import deque from math import sqrt n = input() M = min(1003, n) prime = [1]*(M+1) prime[0] = prime[1] = 0 p_num = 0 for i in xrange(2, int(sqrt(M))+1): if prime[i]: for j in xrange(i*i, M+1, i): prime[j] = 0 def fermat(k): for t in xrange(1000): a = randint(2, k-1) if pow(a, k-1, k)!=1: return 0 return 1 i = 2 while i<=40: deq = deque() deq.append(1) used = [0]*(M+1) ok = 0 while deq: v = deq.popleft() if n>M and v%i==0: ok = 1 break if v==n: print i exit(0) if v+1 <= M and v%i!=0 and not prime[v+1] and not used[v+1]: used[v+1] = 1 deq.append(v+1) if v-1 >= 1 and v%i!=1 and not prime[v-1] and not used[v-1]: used[v-1] = 1 deq.append(v-1) if v+i <= M and not prime[v+i] and not used[v+i]: used[v+i] = 1 deq.append(v+i) if v-i >= 1 and not prime[v-i] and not used[v-i]: used[v-i] = 1 deq.append(v-i) if ok: if (n%i!=1 and not fermat(n-1)) or not fermat(n-i): print i exit(0) i += 1 exit(1)