#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007

long long dp[110][5][5][5];

int main() {
  int n;
  cin >> n;
  dp[0][0][0][0] = 1;
  for (int i = 0; i < n; i++) {
    for (int a = 0; a < 5; a++) {
      for (int b = 0; b < 5; b++) {
        for (int c = 0; c < 5; c++) {
          for (int d = 1; d <= 4; d++) {
            if (b == 1 && c == 3 && d == 2) continue;
            if (a == 1 && c == 3 && d == 2) continue;
            if (b == 3 && c == 1 && d == 2) continue;
            if (b == 1 && c == 2 && d == 3) continue;
            if (a == 1 && b == 3 && d == 2) continue;
            dp[i + 1][b][c][d] = (dp[i + 1][b][c][d] + dp[i][a][b][c]) % mod;
          }
        }
      }
    }
  }
  long long ans = 0;
  for (int a = 0; a < 5; a++) {
    for (int b = 0; b < 5; b++) {
      for (int c = 0; c < 5; c++) {
        ans = (ans + dp[n][a][b][c]) % mod;
      }
    }
  }
  cout << ans << endl;
  return 0;
}

### Prompt

Generate 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;
#define mod 1000000007

long long dp[110][5][5][5];

int main() {
  int n;
  cin >> n;
  dp[0][0][0][0] = 1;
  for (int i = 0; i < n; i++) {
    for (int a = 0; a < 5; a++) {
      for (int b = 0; b < 5; b++) {
        for (int c = 0; c < 5; c++) {
          for (int d = 1; d <= 4; d++) {
            if (b == 1 && c == 3 && d == 2) continue;
            if (a == 1 && c == 3 && d == 2) continue;
            if (b == 3 && c == 1 && d == 2) continue;
            if (b == 1 && c == 2 && d == 3) continue;
            if (a == 1 && b == 3 && d == 2) continue;
            dp[i + 1][b][c][d] = (dp[i + 1][b][c][d] + dp[i][a][b][c]) % mod;
          }
        }
      }
    }
  }
  long long ans = 0;
  for (int a = 0; a < 5; a++) {
    for (int b = 0; b < 5; b++) {
      for (int c = 0; c < 5; c++) {
        ans = (ans + dp[n][a][b][c]) % mod;
      }
    }
  }
  cout << ans << endl;
  return 0;
}

```