n = int(input())
dp = [0] * (n + 1)
#dp[n]代表以n为开头的序列的所有可能性
#动态转移方程 那么dp[n] = dp[n//2] + dp[n//2 - 1] + ... +dp[1]
dp[0] = 1
dp[1] = 1
for i in range(2,n+1):
for j in range(i//2+1):
dp[i] += dp[j]
print(dp[n])
n = int(input())
dp = [0] * (n + 1)
#dp[n]代表以n为开头的序列的所有可能性
#动态转移方程 那么dp[n] = dp[n//2] + dp[n//2 - 1] + ... +dp[1]
dp[0] = 1
dp[1] = 1
for i in range(2,n+1):
for j in range(i//2+1):
dp[i] += dp[j]
print(dp[n])