#include <bits/stdc++.h>
using namespace std;
void multiply(long long int a[3][3], long long int b[3][3]) {
  long long int d[3][3];
  int i, j, k;
  long long int sum = 0;
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {
      for (k = 0; k < 3; k++) {
        sum = (sum + (a[i][k] * b[k][j]) % 1000000007) % 1000000007;
      }
      d[i][j] = sum;
      sum = 0;
    }
  }
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {
      a[i][j] = d[i][j];
    }
  }
}
void mexp(long long int arr[3][3], long long int b, long long int a[3][3]) {
  if (b <= 1) {
    return;
  }
  long long int copy[3][3];
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
      copy[i][j] = a[i][j];
    }
  }
  mexp(arr, b / 2, a);
  multiply(arr, arr);
  if (b % 2 == 1) {
    multiply(arr, copy);
  }
}
int main() {
  cin.tie(0);
  cout.tie(0);
  ios_base::sync_with_stdio(false);
  long long int n;
  long long int a[3][3] = {{3, 0, 1}, {1, 0, 0}, {1, 0, 3}};
  cin >> n;
  if (n == 0)
    cout << 1;
  else if (n == 1)
    cout << 3;
  else {
    mexp(a, n - 1, a);
    cout << ((a[0][0] * 3) % 1000000007 + a[0][1] % 1000000007 +
             a[0][2] % 1000000007) %
                1000000007
         << endl;
  }
}
