思路:推式子。首先是两个特判:1.当n为1时,无法形成长为2的路径,直接输出0;2.当n为2时,无法每个点都形成'^'字形的长为2路径,输出1。

对于n >= 3来说,我们长为2的路径由两部分组成:1.当前节点向下延伸,此时长为2的路径有条,我们累加起来并不断取mod;2.形成'^'字形路径,此时长为2的路径数量和节点数量一致为条。最终,我们在1的结果上再加上2的结果,然后取mod输出即可

代码:

import sys
input = lambda: sys.stdin.readline().strip()

import math
inf = 10 ** 18

def I():
    return input()

def II():
    return int(input())

def MII():
    return map(int, input().split())

def GMI():
    return map(lambda x: int(x) - 1, input().split())

def LI():
    return input().split()

def LII():
    return list(map(int, input().split()))

def LFI():
    return list(map(float, input().split()))

fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))

'''

'''

def solve():
    mod = 10 ** 9 + 7
    n = II()

    if n == 1:
        print(0)
        return

    if n == 2:
        print(1)
        return

    ans = 0
    for i in range(3, n):
        ans = (ans + 2 ** (i - 1)) % mod
    print((ans + 2 ** n - 1) % mod)

t = 1
# t = II()
for _ in range(t):
    solve()