# -*- coding: utf-8 -*-

memo = ['' for i in xrange(45)]


def recursion(n):
    if n == 0 or n == 1:
        return 1

    return recursion(n - 1) + recursion(n - 2)


def memo_search(n):
    if memo[n] != '':
        return memo[n]
    else:
        if n == 0 or n == 1:
            memo[n] = 1
            return 1
        memo[n] = memo_search(n - 1) + memo_search(n - 2)
        return memo[n]

if __name__ == '__main__':
    n = input()
    # print recursion(n)
    print memo_search(n) '' for i in xrange(45) for i in xrange(45) i xrange(45) xrange 45 for i in xrange(45) '' memo = ['' for i in xrange(45)] memo ['' for i in xrange(45)] def recursion(n):
    if n == 0 or n == 1:
        return 1

    return recursion(n - 1) + recursion(n - 2) recursion if n == 0 or n == 1:
        return 1

     n == 0 or n == 1 n == 0 n 0 n == 1 n 1 return 1 1 return recursion(n - 1) + recursion(n - 2) recursion(n - 1) + recursion(n - 2) recursion(n - 1) recursion n - 1 n 1 recursion(n - 2) recursion n - 2 n 2 n n def memo_search(n):
    if memo[n] != '':
        return memo[n]
    else:
        if n == 0 or n == 1:
            memo[n] = 1
            return 1
        memo[n] = memo_search(n - 1) + memo_search(n - 2)
        return memo[n] memo_search if memo[n] != '':
        return memo[n]
    else:
        if n == 0 or n == 1:
            memo[n] = 1
            return 1
        memo[n] = memo_search(n - 1) + memo_search(n - 2)
        return memo[n] memo[n] != '' memo[n] memo n '' return memo[n] memo[n] memo n if n == 0 or n == 1:
            memo[n] = 1
            return 1
         n == 0 or n == 1 n == 0 n 0 n == 1 n 1 memo[n] = 1 memo[n] memo n 1 return 1 1 memo[n] = memo_search(n - 1) + memo_search(n - 2) memo[n] memo n memo_search(n - 1) + memo_search(n - 2) memo_search(n - 1) memo_search n - 1 n 1 memo_search(n - 2) memo_search n - 2 n 2 return memo[n] memo[n] memo n n n if __name__ == '__main__':
    n = input()
    # print recursion(n)
    print memo_search(n) __name__ == '__main__' __name__ '__main__' n = input() n input() input print memo_search(n) memo_search n def memo_search(n):
    if memo[n] != '':
        return memo[n]
    else:
        if n == 0 or n == 1:
            memo[n] = 1
            return 1
        memo[n] = memo_search(n - 1) + memo_search(n - 2)
        return memo[n] def memo_search(n):
    if memo[n] != '':
        return memo[n]
    else:
        if n == 0 or n == 1:
            memo[n] = 1
            return 1
        memo[n] = memo_search(n - 1) + memo_search(n - 2)
        return memo[n] memo_search memo = ['' for i in xrange(45)] ['' for i in xrange(45)] memo n = input() input() n def recursion(n):
    if n == 0 or n == 1:
        return 1

    return recursion(n - 1) + recursion(n - 2) def recursion(n):
    if n == 0 or n == 1:
        return 1

    return recursion(n - 1) + recursion(n - 2) recursion
# -*- coding: utf-8 -*-

memo = ['' for i in xrange(45)]


def recursion(n):
    if n == 0 or n == 1:
        return 1

    return recursion(n - 1) + recursion(n - 2)


def memo_search(n):
    if memo[n] != '':
        return memo[n]
    else:
        if n == 0 or n == 1:
            memo[n] = 1
            return 1
        memo[n] = memo_search(n - 1) + memo_search(n - 2)
        return memo[n]

if __name__ == '__main__':
    n = input()
    # print recursion(n)
    print memo_search(n)