N = 44
F = [0]*(N+1)

def dynamic(n):
    if n == 0 or n == 1:
        return 1
    if F[n] != 0:
        return F[n]
    F[n] = dynamic(n - 1) + dynamic(n - 2)
    return F[n]

if __name__ == '__main__':
    n = int(raw_input())
    print(dynamic(n)) N = 44 N 44 F = [0]*(N+1) F [0]*(N+1) [0] 0 N+1 N 1 def dynamic(n):
    if n == 0 or n == 1:
        return 1
    if F[n] != 0:
        return F[n]
    F[n] = dynamic(n - 1) + dynamic(n - 2)
    return F[n] dynamic if n == 0 or n == 1:
        return 1
     n == 0 or n == 1 n == 0 n 0 n == 1 n 1 return 1 1 if F[n] != 0:
        return F[n]
     F[n] != 0 F[n] F n 0 return F[n] F[n] F n F[n] = dynamic(n - 1) + dynamic(n - 2) F[n] F n dynamic(n - 1) + dynamic(n - 2) dynamic(n - 1) dynamic n - 1 n 1 dynamic(n - 2) dynamic n - 2 n 2 return F[n] F[n] F n n n if __name__ == '__main__':
    n = int(raw_input())
    print(dynamic(n)) __name__ == '__main__' __name__ '__main__' n = int(raw_input()) n int(raw_input()) int raw_input() raw_input print(dynamic(n)) print dynamic(n) dynamic n N = 44 44 N F = [0]*(N+1) [0]*(N+1) F n = int(raw_input()) int(raw_input()) n def dynamic(n):
    if n == 0 or n == 1:
        return 1
    if F[n] != 0:
        return F[n]
    F[n] = dynamic(n - 1) + dynamic(n - 2)
    return F[n] def dynamic(n):
    if n == 0 or n == 1:
        return 1
    if F[n] != 0:
        return F[n]
    F[n] = dynamic(n - 1) + dynamic(n - 2)
    return F[n] dynamic
N = 44
F = [0]*(N+1)

def dynamic(n):
    if n == 0 or n == 1:
        return 1
    if F[n] != 0:
        return F[n]
    F[n] = dynamic(n - 1) + dynamic(n - 2)
    return F[n]

if __name__ == '__main__':
    n = int(raw_input())
    print(dynamic(n))