N = gets.to_i
MOD = (10**9) + 7

STRING = %w(A G C T)
BLACK3 = %w(AGC GAC ACG)
# 後ろ3文字にを見れば次に追加していい文字が一意に定まるので、その判定のためのRegExp
BLACK = {
  /.AG/ => 'C',
  /.AC/ => 'G',
  /.GA/ => 'C',
  /A.G/ => 'C',
  /AG./ => 'C'
}

# AGCTからなる3文字を全列挙、禁止文字を取り除く
STRING_3 = STRING.repeated_permutation(3).map(&:join).reject { |s| BLACK3.include?(s) }

# 3文字をkeyに次につけられる文字をvalue(Array)に入れる
STRING_3_WITH_NEXT = STRING_3.each_with_object({}) { |str3, obj|
  obj[str3] = STRING - BLACK.each_with_object([]) {
    |(reg, str), obj|
    obj << str if reg === str3
  }
}

# DPをします。
# dp[n文字]['ACG'] = dp[n-1]['AAC' or 'CAC' or 'GAC' or 'TAC'] の4つの和
dp = Array.new(N+1) { Hash.new(0) }
STRING_3.each { |str| dp[3][str] = 1 }

4.step(N) do |i|
  STRING_3_WITH_NEXT.each do |str, next_strs|
    ts = str[1..2]
    next_strs.each do |next_str|
      dp[i][ts+ next_str] += dp[i - 1][str]
    end
  end
end

puts (dp[N].values.reduce(:+)%MOD)