import java.util.Scanner;

// F(i)(总) = F(i)(幼兔1) + F(i)(幼兔2) + F(i)(成兔)
// F(i-1)(总) = F(i-1)(幼兔1) + F(i-1)(幼兔2) + F(i-1)(成兔)
//
// F(i+1)(幼兔2) = F(i)(幼兔1)
// F(i+1)(成兔) = F(i)(幼兔2) + F(i)(成兔)
// F(i+1)(幼兔1) = F(i+1)(成兔) = F(i)(幼兔2) + F(i)(成兔)
//
// F(i)(幼兔2) = F(i-1)(幼兔1)
// F(i)(成兔) = F(i-1)(幼兔2) + F(i-1)(成兔)
//
// F(i+1)(总) = F(i+1)(幼兔1) + F(i+1)(幼兔2) + F(i+1)(成兔)
//            = F(i)(幼兔2) + F(i)(成兔) + F(i)(幼兔1) + F(i)(幼兔2) + F(i)(成兔)
//            = F(i)(总) + F(i)(幼兔2) + F(i)(成兔)
//            = F(i)(总) + F(i-1)(幼兔1) + F(i-1)(幼兔2) + F(i-1)(成兔)
//            = F(i)(总) + F(i-1)(总)
//
// F(i+1)(总) = F(i)(总) + F(i-1)(总)
public class Main {
    // 二维数组
    // public static void main(String[] args) {
    //     Scanner in = new Scanner(System.in);

    //     int n = in.nextInt();

    //     int[][] rabit = new int[n+1][3];
    //     rabit[1][0] = 1;

    //     for(int i=2; i<=n; i++){
    //         // rabit[i][0] = rabit[i-1][2];
    //         rabit[i][1] = rabit[i-1][0];
    //         rabit[i][2] = rabit[i-1][1] + rabit[i-1][2];
    //         rabit[i][0] = rabit[i][2];
    //     }

    //     int result = rabit[n][0]+rabit[n][1]+rabit[n][2];

    //     System.out.print(result);
    // }

    // 递归
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        int result = F(n);

        System.out.print(result);
    }

    private static int F(int month){
        if(month==1 || month==2){
            return 1;
        }
            
        return F(month-1)+F(month-2);
    }
}