def ksm(a, b):  # 快速幂  计算 a ** b
    res = 1
    while b:
        if b & 1:
            res = res * a % MOD
        a = a * a % MOD
        b >>= 1
    return res
 

def cal_c(n, m):      # 计算组合数C n m 
    if m > n - m:   
        m = n - m
    ans = 1
    for i in range(1, m+1):
        ans = ans * (n - m + i) * ksm(i, MOD - 2) % MOD
    return ans


 def cal_a(n, m):    # 计算排列数 A n m
    ans = 1
    for i in range(1, m+1):
        ans = ans * (n + 1 - i) % MOD
    return ans


while True:
    try:
        n = int(input())
        k = n // 3      # 有k个位置和k个数是3的倍数
        s = n // 2 - k  # 这s个位置上放的数必须是3的倍数
        m = n - k   # m个位置和m个数不是3的倍数
        MOD = 10 ** 9 + 7
        if s < 0 or s > k:
            print(0) 
        else:
            # 从m个位置中选s个位置放3的倍数
            ans = cal_c(m, s)
            # 从k个3的倍数中选s个数,全排列,放到上面s个位置中
            ans = ans * cal_a(k, s) % MOD
            # 剩余的k-s个3的倍数必须放在那k个位置中,全排列
            ans =  ans * cal_a(k, k-s) % MOD
            # 剩余的m个数全排列
            ans = ans * cal_a(m, m) % MOD

            print(ans)
    except:
        break