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