#include "bits/stdc++.h"
using namespace std;

int main() {
	long long N, count = 0;
	long long DP[110][4][4][4] = {};
	cin >> N;
	DP[0][3][3][3] = 1;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < 4; j++) {
			for (int k = 0; k < 4; k++) {
				for (int l = 0; l < 4; l++) {
					for (int m = 0; m < 4; m++) {
						if (!(k == 0 && l == 1 && m == 2) &&
							!(k == 0 && l == 2 && m == 1) &&
							!(k == 1 && l == 0 && m == 2) &&
							!(j == 0 && l == 1 && m == 2) &&
							!(j == 0 && k == 1 && m == 2)) {
							DP[i + 1][k][l][m] += DP[i][j][k][l];
							DP[i + 1][k][l][m] = DP[i + 1][k][l][m] % 1000000007;
						}
					}
				}
			}
		}
	}
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 4; j++) {
			for (int k = 0; k < 4; k++) {
				count += DP[N][i][j][k];
				count = count % 1000000007;
			}
		}
	}
	cout << count;
}
### 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;

int main() {
	long long N, count = 0;
	long long DP[110][4][4][4] = {};
	cin >> N;
	DP[0][3][3][3] = 1;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < 4; j++) {
			for (int k = 0; k < 4; k++) {
				for (int l = 0; l < 4; l++) {
					for (int m = 0; m < 4; m++) {
						if (!(k == 0 && l == 1 && m == 2) &&
							!(k == 0 && l == 2 && m == 1) &&
							!(k == 1 && l == 0 && m == 2) &&
							!(j == 0 && l == 1 && m == 2) &&
							!(j == 0 && k == 1 && m == 2)) {
							DP[i + 1][k][l][m] += DP[i][j][k][l];
							DP[i + 1][k][l][m] = DP[i + 1][k][l][m] % 1000000007;
						}
					}
				}
			}
		}
	}
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 4; j++) {
			for (int k = 0; k < 4; k++) {
				count += DP[N][i][j][k];
				count = count % 1000000007;
			}
		}
	}
	cout << count;
}
```