#include <bits/stdc++.h>
using namespace std;
struct Matrix {
  long long a, b, c, d;
};
const unsigned MOD = 1e9 + 7;
Matrix I;
unsigned long long n;
Matrix Power(Matrix, unsigned long long);
int main() {
  cin >> n;
  I.a = I.d = 1;
  I.b = I.c = 0;
  Matrix M = Power(I, n);
  cout << M.a;
  return 0;
}
Matrix Power(Matrix x, unsigned long long y) {
  if (y == 0) return I;
  Matrix p = Power(x, y / 2);
  Matrix t;
  t.a = t.d = (p.a * p.a % MOD + p.b * p.c % MOD) % MOD;
  t.b = t.c = (p.a * p.b % MOD + p.b * p.d % MOD) % MOD;
  if (y % 2) {
    Matrix res;
    res.a = res.d = (t.a * 3 + t.b) % MOD;
    res.b = res.c = (t.a + t.b * 3) % MOD;
    return res;
  } else
    return t;
}
