#include <bits/stdc++.h>
using namespace std;
struct matrix {
  long long a1, a2;
  long long b1, b2;
};
struct matrix power(long long n) {
  struct matrix temp;
  temp.a1 = 2;
  temp.a2 = 3;
  temp.b1 = 1;
  temp.b2 = 0;
  if (n == 1)
    return temp;
  else {
    struct matrix x1 = power(n / 2);
    struct matrix x;
    x.a1 = ((x1.a1 * x1.a1) % 1000000007 + (x1.a2 * x1.b1) % 1000000007) %
           1000000007;
    x.a2 = ((x1.a1 * x1.a2) % 1000000007 + (x1.a2 * x1.b2) % 1000000007) %
           1000000007;
    x.b1 = ((x1.b1 * x1.a1) % 1000000007 + (x1.b2 * x1.b1) % 1000000007) %
           1000000007;
    x.b2 = ((x1.b1 * x1.a2) % 1000000007 + (x1.b2 * x1.b2) % 1000000007) %
           1000000007;
    if (n % 2) {
      struct matrix y;
      y.a1 = ((x.a1 * temp.a1) % 1000000007 + (x.a2 * temp.b1) % 1000000007) %
             1000000007;
      y.a2 = ((x.a1 * temp.a2) % 1000000007 + (x.a2 * temp.b2) % 1000000007) %
             1000000007;
      y.b1 = ((x.b1 * temp.a1) % 1000000007 + (x.b2 * temp.b1) % 1000000007) %
             1000000007;
      y.b2 = ((x.b1 * temp.a2) % 1000000007 + (x.b2 * temp.b2) % 1000000007) %
             1000000007;
      return y;
    } else
      return x;
  }
}
int main() {
  long long n;
  cin >> n;
  if (n == 1) {
    cout << "0";
    return 0;
  }
  if (n == 2)
    cout << 3;
  else if (n == 3)
    cout << 6;
  else {
    struct matrix temp = power(n - 3);
    long long ans =
        ((temp.a1 * 6) % 1000000007 + (temp.a2 * 3) % 1000000007) % 1000000007;
    cout << ans;
  }
  return 0;
}
