import math





def combinations_count(n, r):

    return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))





def combinations_with_replacement_count(n, r):

    return combinations_count(n + r - 1, r)





def main():

    s = int(eval(input()))

    ans = 0

    n = s // 3



    for i in range(1, n + 1):

        ans += combinations_with_replacement_count(i, 3*(n-i)+s % 3)



    print((ans % (10**9 + 7)))





if __name__ == '__main__':

    main()

def main():

    s = int(eval(input()))

    dp = [0] * 3 + [1] * 3 + [0 for _ in range(s)]



    for i in range(6, s+1):

        dp[i] = dp[i-1] + dp[i-3]



    print((dp[s] % (10**9+7)))





if __name__ == '__main__':

    main()

import math


def combinations_count(n, r):
    return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))


def combinations_with_replacement_count(n, r):
    return combinations_count(n + r - 1, r)


def main():
    s = int(eval(input()))
    ans = 0
    n = s // 3
    for i in range(1, n + 1):
        ans += combinations_with_replacement_count(i, 3 * (n - i) + s % 3)
    print((ans % (10**9 + 7)))


if __name__ == "__main__":
    main()

def main():
    s = int(eval(input()))
    dp = [0] * 3 + [1] * 3 + [0 for _ in range(s)]
    for i in range(6, s + 1):
        dp[i] = dp[i - 1] + dp[i - 3]
    print((dp[s] % (10**9 + 7)))


if __name__ == "__main__":
    main()

-import math - - -def combinations_count(n, r): -    return math.factorial(n) // (math.factorial(n - r) * math.factorial(r)) - - -def combinations_with_replacement_count(n, r): -    return combinations_count(n + r - 1, r) - - -    ans = 0 -    n = s // 3 -    for i in range(1, n + 1): -        ans += combinations_with_replacement_count(i, 3 * (n - i) + s % 3) -    print((ans % (10**9 + 7))) +    dp = [0] * 3 + [1] * 3 + [0 for _ in range(s)] +    for i in range(6, s + 1): +        dp[i] = dp[i - 1] + dp[i - 3] +    print((dp[s] % (10**9 + 7)))