def mat_pow(m, n: int, mod: int): assert n >= 0 size = len(m) assert size == len(m[0]) if n == 0: return [[int(i == j) for j in range(size)] for i in range(size)] if n == 1: return m res = mat_pow(m, n // 2, mod) res = mat_mul(res, res, mod) if n % 2 == 1: res = mat_mul(res, m, mod) return res def mat_mul(a, b, mod: int): ar, ac, br, bc = len(a), len(a[0]), len(b), len(b[0]) assert ac == br res = [[0] * bc for _ in range(ar)] for i in range(ar): out = res[i] for j in range(bc): r = a[i] x = 0 for k in range(ac): x += r[k] * b[k][j] x %= mod out[j] = x return res MOD = 10**9 + 7 N = int(input()) mat = [[0, 1, 1, 1], [1, 0, 1, 1], [1, 1, 0, 1], [1, 1, 1, 0]] m = mat_pow(mat, N, MOD) a = [[1, 0, 0, 0]] res = mat_mul(a, m, MOD) ans = res[0][0] print(ans)