val modulo = 1000000007

val A = 0
val G = 1
val C = 2
val T = 3

fun main(args: Array<String>) {
    val n = readInputLine().toInt()
    // dp[長さ][(2文字前)][(1文字前)][(現文字)]の領域を作成
    // 長さに対するループで前のインデックスを参照する都合上、長さ次元をn+1にする
    val dp = Array(n + 1, { it -> Array(4, { it -> Array(4, {it -> IntArray(4)})})})

    // 長さ3のケースを初期化
    // 2文字前に対するループ
    for (i in 0..3) {
        // 1文字前に対するループ
        for (j in 0..3) {
            // 追加する文字に対するループ
            for (k in 0..3) {
                if (i == A && j == G && k == C) continue
                if (i == A && j == C && k == G) continue
                if (i == G && j == A && k == C) continue
                dp[3][i][j][k] = 1
            }
        }
    }

    // 長さに対するループ
    for (i in 4..n) {
        // 3文字前に対するループ
        for (j in 0..3) {
            // 2文字前に対するループ
            for (k in 0..3) {
                // 1文字前に対するループ
                for (l in 0..3) {
                    // 追加する文字に対するループ
                    for (m in 0..3) {
                        if (k == A && l == G && m == C) continue
                        if (k == A && l == C && m == G) continue
                        if (k == G && l == A && m == C) continue
                        if (j == A && l == G && m == C) continue
                        if (j == A && k == G && m == C) continue
                        dp[i][k][l][m] = (dp[i][k][l][m] + dp[i - 1][j][k][l]) % modulo
                    }
                }
            }
        }
    }
    
    var ans = 0

    for (i in 0..3) {
        for (j in 0..3) {
            for (k in 0..3) {
                ans = (ans + dp[n][i][j][k]) % modulo
            }
        }
    }

    println(ans)
}

fun readInputLine(): String {
    return readLine()!!
}
