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

fun main(args : Array<String>) {
    val N = readLine()!!.toInt()
    val dp = Array(N + 1,  { Array(4, { Array(4, { Array(4, { 0 })})}) })

    // Initialize
    (0..3).forEach { i ->
        (0..3).forEach { j ->
            (0..3).forEach { k ->
                if ((i == A && j ==G && k ==C) || (i == A && j == C && k == G) || (i == G && j == A && k ==C)) {
                    dp[3][i][j][k] = 0
                } else {
                    dp[3][i][j][k] = 1
                }
            }
        }
    }

    (4..N).forEach {n ->
        (0..3).forEach { i ->
            (0..3).forEach { j ->
                (0..3).forEach { k ->
                    (0..3).forEach { x ->
                        // A_GC
                        if (i == A && j != C && k == G && x == C) {

                            // AGC
                        } else if (i == A && j == G && k == C) {

                            // ACG
                        } else if (i == A && j == C && k == G) {

                            // GAC
                        } else if (i == G && j == A && k == C) {

                            // AG_C
                        } else if (i == A && j == G && k != C && x == C) {

                        } else if ((j == A && k ==G && x ==C) || (j == A && k == C && x == G) || (j == G && k == A && x ==C)) {

                        } else {
                            dp[n][j][k][x] = (dp[n][j][k][x] + dp[n-1][i][j][k]) % 1000000007
                        }
                    }
                }
            }
        }
    }

    var answer = 0
    dp[N].forEach { threed ->
        threed.forEach { two2 ->
            two2.forEach {
                answer = (answer + it) % 1000000007
            }
        }
    }
    println(answer)
}