public class Recursive {
  public static void main(String[] args) {
    System.out.println(L(6));
  }
  //------------------------------------------
  public static int L(int n) {
    if (n == 0) return 3;
    if (n == 1) return 4;
    if (n == 2) return 7;
    return L(n - 1) + L(n - 3) + 1;
  }
  //------------------------------------------
  public static void hanoi(int n, String a, String b, String c) {
    if (n == 0) return;
    hanoi(n - 1, a, c, b);
    System.out.println("move " + n + " from " + a + " to " + c);
    hanoi(n - 1, b, a, c);
  }
  //------------------------------------------
  public static int max(int[] x) {
    return max(x, x.length);
  }
  public static int max(int[] x, int n) {
    if (n == 1) return x[0];
    return Math.max(max(x, n - 1), x[n - 1]);
  }
  //------------------------------------------
  // sum(x, n) = sum(x, n-1) + x[n-1] if n > 0,  sum(x,0) = 0
  //------------------------------------------
  public static int sum(int[] x) {
    return sum(x, x.length);
  }
  public static int sum(int[] x, int n) {
    if (n == 0) return 0;
    return sum(x, n - 1) + x[n - 1];
  }
  //-------------------------------------------
  public static int powerMod(int a, int k, int m) {
    if (k == 0) return 1;
    int p = powerMod(a, k / 2, m);
    int p2 = p * p;
    if (k % 2 == 0) {
      return p2 % m;
    } else {
      return (a * p2) % m;
    }
  }
  //------------------------------------------
  public static int C(int n, int k) {
    if (k == 0 || n == k) return 1;
    if (k < 0 || k > n) return 0;
    return C(n - 1, k - 1) + C(n - 1, k);
  }
  //----------------------------------------
  // a(n) = a(n-1) + 1 if n > 0,  a(0) = 0
  //----------------------------------------
  public static int a(int n) {
    if (n == 0) return 0;
    return a(n - 1) + 1;
  }
  //-----------------------------------------------------
  // f(n) = f(n-1) + f(n-2) if n > 1,  f(0) = 0, f(1) = 1
  //-----------------------------------------------------
  public static int f(int n) {
    if (n == 0) return 0;
    if (n == 1) return 1;
    return f(n - 1) + f(n - 2);
  }
}
