import math N = int(input()) def is_tri(x): if x <= 0: return False s = 8 * x + 1 sqrt_s = math.isqrt(s) if sqrt_s * sqrt_s != s: return False k = (sqrt_s - 1) // 2 return k * (k + 1) // 2 == x if is_tri(N): print(1) else: k_max = (math.isqrt(8 * N + 1) - 1) // 2 found = False for k in range(k_max, 0, -1): c1 = k * (k + 1) // 2 remaining = N - c1 if remaining < 0: continue if is_tri(remaining): print(2) found = True break if not found: print(3)