#include <bits/stdc++.h>
using namespace std;
const int maxN = 4;
int mat[maxN][maxN], I[maxN][maxN];
void mul(int A[][maxN], int B[][maxN], int dim) {
  int res[dim + 1][dim + 1];
  for (int i = 0; i < dim; i++) {
    for (int j = 0; j < dim; j++) {
      res[i][j] = 0;
      for (int k = 0; k < dim; k++)
        res[i][j] =
            (res[i][j] + (1LL * A[i][k] * B[k][j]) % 1000000007) % 1000000007;
    }
  }
  for (int i = 0; i < dim; i++)
    for (int j = 0; j < dim; j++) A[i][j] = res[i][j];
}
void power(int A[][maxN], int powr, int dim) {
  for (int i = 0; i < dim; i++) {
    for (int j = 0; j < dim; j++) {
      if (i == j)
        I[i][j] = 1;
      else
        I[i][j] = 0;
    }
  }
  while (powr) {
    if (powr & 1) {
      mul(I, A, dim);
      powr--;
    } else {
      mul(A, A, dim);
      powr /= 2;
    }
  }
  for (int i = 0; i < dim; i++)
    for (int j = 0; j < dim; j++) mat[i][j] = I[i][j];
}
void solve() {
  int n;
  cin >> n;
  for (int i = 0; i <= 3; i++) {
    for (int j = 0; j <= 3; j++) {
      if (i != j)
        mat[i][j] = 1;
      else
        mat[i][j] = 0;
    }
  }
  power(mat, n, 4);
  cout << mat[0][0] << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  solve();
  return 0;
}
