#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
#define rep(i) for(int i = 0;i < 4;i++)
#define all(x) x.begin(),x.end()

i64 dp[101][4][4][4];
i64 MOD = 1e9 + 7;

int main() {
  int N;
  cin >> N;
  rep(i) rep(j) rep(k) {
    dp[3][i][j][k] = 1;
  }
  dp[3][0][1][2] = 0;
  dp[3][0][2][1] = 0;
  dp[3][1][0][2] = 0;
  for(int a = 4;a <= N;a++) {
    rep(i) rep(j) rep(k) rep(n) {
      if(j == 0 && k == 1 && n == 2) continue;
      if(j == 0 && k == 2 && n == 1) continue;
      if(j == 1 && k == 0 && n == 2) continue;
      if(i == 0 && k == 1 && n == 2) continue;
      if(i == 0 && j == 1 && n == 2) continue;
      (dp[a][j][k][n] += dp[a - 1][i][j][k]) %= MOD;
    }
  }

  i64 ans = 0;
  rep(i) rep(j) rep(k) {
    (ans += dp[N][i][j][k]) %= MOD;
  }
  cout << ans << endl;
}

### Prompt

Your challenge is to write a cpp solution to the following problem:

You are given an integer N. Find the number of strings of length N that satisfy the following conditions, modulo 10^9+7:

* The string does not contain characters other than `A`, `C`, `G` and `T`.
* The string does not contain `AGC` as a substring.
* The condition above cannot be violated by swapping two adjacent characters once.

Constraints

* 3 \leq N \leq 100

Input

Input is given from Standard Input in the following format:


N


Output

Print the number of strings of length N that satisfy the following conditions, modulo 10^9+7.

Examples

Input

3


Output

61


Input

4


Output

230


Input

100


Output

388130742

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
#define rep(i) for(int i = 0;i < 4;i++)
#define all(x) x.begin(),x.end()

i64 dp[101][4][4][4];
i64 MOD = 1e9 + 7;

int main() {
  int N;
  cin >> N;
  rep(i) rep(j) rep(k) {
    dp[3][i][j][k] = 1;
  }
  dp[3][0][1][2] = 0;
  dp[3][0][2][1] = 0;
  dp[3][1][0][2] = 0;
  for(int a = 4;a <= N;a++) {
    rep(i) rep(j) rep(k) rep(n) {
      if(j == 0 && k == 1 && n == 2) continue;
      if(j == 0 && k == 2 && n == 1) continue;
      if(j == 1 && k == 0 && n == 2) continue;
      if(i == 0 && k == 1 && n == 2) continue;
      if(i == 0 && j == 1 && n == 2) continue;
      (dp[a][j][k][n] += dp[a - 1][i][j][k]) %= MOD;
    }
  }

  i64 ans = 0;
  rep(i) rep(j) rep(k) {
    (ans += dp[N][i][j][k]) %= MOD;
  }
  cout << ans << endl;
}

```