MOD = 10 ** 9 + 7 def matpow(A, B, w): l = len(A) while w: if w & 1: C = [0] * l for i in range(l): for j in range(l): C[i] += A[i][j] * B[j] C[i] %= MOD B = C C = [[0] * l for _ in range(l)] for i in range(l): for j in range(l): for k in range(l): C[i][j] += A[i][k] * A[k][j] C[i][j] %= MOD A = C w >>= 1 return B n = int(input()) m = 64 A = [[0] * m for _ in range(m)] def f(x): A = [] for _ in range(3): A.append(x & 3) x >>= 2 return A """ 0: 空 1: 左 2: 右 3: 縦 """ def tate(A): c = A.count(3) if c & 1: return False if c == 2: if A[0] == A[2] == 3: return False if A[0] == A[1] == 0: return False if A[1] == A[2] == 0: return False return True def ok(l, r): L = f(l) R = f(r) if not tate(L) or not tate(R): return False for a, b in zip(L, R): if a == b == 0: return False if a == 2 and b == 1: pass elif a == 2 or b == 1: return False return True for l in range(m): for r in range(m): if ok(l, r): A[r][l] = 1 B = [0] * m B[1 + 4 + 16] = 1 B = matpow(A, B, n) ans = 0 for i in range(m): A = f(i) if 2 in A: continue if tate(A): ans += B[i] print(ans % MOD)