def fibonacci_dp(n,lf):
    if n == 0 or n == 1:
        return lf[n]
    if n < len(lf):
        return lf[n]
    lf.insert(n,fibonacci_dp(n-2,lf) + fibonacci_dp(n-1,lf))
    return lf[n]

if __name__ == "__main__":
    n = int(input())
    lf = [1,1,]
    print(fibonacci_dp(n,lf))
 def fibonacci_dp(n,lf):
    if n == 0 or n == 1:
        return lf[n]
    if n < len(lf):
        return lf[n]
    lf.insert(n,fibonacci_dp(n-2,lf) + fibonacci_dp(n-1,lf))
    return lf[n] fibonacci_dp if n == 0 or n == 1:
        return lf[n]
     n == 0 or n == 1 n == 0 n 0 n == 1 n 1 return lf[n] lf[n] lf n if n < len(lf):
        return lf[n]
     n < len(lf) n len(lf) len lf return lf[n] lf[n] lf n lf.insert(n,fibonacci_dp(n-2,lf) + fibonacci_dp(n-1,lf)) lf.insert lf insert n fibonacci_dp(n-2,lf) + fibonacci_dp(n-1,lf) fibonacci_dp(n-2,lf) fibonacci_dp n-2 n 2 lf fibonacci_dp(n-1,lf) fibonacci_dp n-1 n 1 lf return lf[n] lf[n] lf n n n lf lf if __name__ == "__main__":
    n = int(input())
    lf = [1,1,]
    print(fibonacci_dp(n,lf)) __name__ == "__main__" __name__ "__main__" n = int(input()) n int(input()) int input() input lf = [1,1,] lf [1,1,] 1 1 print(fibonacci_dp(n,lf)) print fibonacci_dp(n,lf) fibonacci_dp n lf lf = [1,1,] [1,1,] lf n = int(input()) int(input()) n def fibonacci_dp(n,lf):
    if n == 0 or n == 1:
        return lf[n]
    if n < len(lf):
        return lf[n]
    lf.insert(n,fibonacci_dp(n-2,lf) + fibonacci_dp(n-1,lf))
    return lf[n] def fibonacci_dp(n,lf):
    if n == 0 or n == 1:
        return lf[n]
    if n < len(lf):
        return lf[n]
    lf.insert(n,fibonacci_dp(n-2,lf) + fibonacci_dp(n-1,lf))
    return lf[n] fibonacci_dp
def fibonacci_dp(n,lf):
    if n == 0 or n == 1:
        return lf[n]
    if n < len(lf):
        return lf[n]
    lf.insert(n,fibonacci_dp(n-2,lf) + fibonacci_dp(n-1,lf))
    return lf[n]

if __name__ == "__main__":
    n = int(input())
    lf = [1,1,]
    print(fibonacci_dp(n,lf))

