#coding:UTF-8
def FN(n):
    if n==0 or n==1:
        F[n]=1
        return F[n]
    if F[n]!=None:
        return F[n]
    F[n]=FN(n-1)+FN(n-2)
    return F[n]

if __name__=="__main__":
    n=int(input())
    F=[None]*(n+1)
    ans=FN(n)
    print(ans) def FN(n):
    if n==0 or n==1:
        F[n]=1
        return F[n]
    if F[n]!=None:
        return F[n]
    F[n]=FN(n-1)+FN(n-2)
    return F[n] FN if n==0 or n==1:
        F[n]=1
        return F[n]
     n==0 or n==1 n==0 n 0 n==1 n 1 F[n]=1 F[n] F n 1 return F[n] F[n] F n if F[n]!=None:
        return F[n]
     F[n]!=None F[n] F n None return F[n] F[n] F n F[n]=FN(n-1)+FN(n-2) F[n] F n FN(n-1)+FN(n-2) FN(n-1) FN n-1 n 1 FN(n-2) FN n-2 n 2 return F[n] F[n] F n n n if __name__=="__main__":
    n=int(input())
    F=[None]*(n+1)
    ans=FN(n)
    print(ans) __name__=="__main__" __name__ "__main__" n=int(input()) n int(input()) int input() input F=[None]*(n+1) F [None]*(n+1) [None] None n+1 n 1 ans=FN(n) ans FN(n) FN n print(ans) print ans ans=FN(n) FN(n) ans def FN(n):
    if n==0 or n==1:
        F[n]=1
        return F[n]
    if F[n]!=None:
        return F[n]
    F[n]=FN(n-1)+FN(n-2)
    return F[n] def FN(n):
    if n==0 or n==1:
        F[n]=1
        return F[n]
    if F[n]!=None:
        return F[n]
    F[n]=FN(n-1)+FN(n-2)
    return F[n] FN n=int(input()) int(input()) n F=[None]*(n+1) [None]*(n+1) F
#coding:UTF-8
def FN(n):
    if n==0 or n==1:
        F[n]=1
        return F[n]
    if F[n]!=None:
        return F[n]
    F[n]=FN(n-1)+FN(n-2)
    return F[n]

if __name__=="__main__":
    n=int(input())
    F=[None]*(n+1)
    ans=FN(n)
    print(ans)