#这就要比DP1难一点了,因为dp含义、递推公式都没有直接给出来
#动态规划五部曲:确定dp含义、写出递推公式、初始化、遍历、打印debug

#dp[i]表示青蛙跳上第i个台阶的跳法
n=int(input())
dp=[0 for i in range(40)]

#递推公式,由题可知:第i级台阶可由第i-1或第i-2级台阶得到
#故dp[i]=dp[i-1]+dp[i-2]

#严格来讲,dp[0]应该是无意义的,dp[1]等于1,dp[2]=2
dp[1]=1
dp[2]=2

#遍历
for i in range(3,n+1):
    dp[i]=dp[i-1]+dp[i-2]
print(dp[n])