import sys read = sys.stdin.buffer.read readline = sys.stdin.buffer.readline readlines = sys.stdin.buffer.readlines import numpy as np MOD = 10 ** 9 + 7 N = int(read()) def update_dp(dp, x): """ a の分布が与えられる。a < b+x となる b の分布を返す """ newdp = np.zeros_like(dp) newdp[0] = dp[:x].sum() % MOD newdp[1: N - x + 1] += dp[x:N] dp = newdp np.cumsum(dp, out=dp) dp %= MOD return dp nums = list(range(N-1)) nums[0] = 1 # A_N の分布から始める dp = np.ones(N, np.int64) for x in nums: dp = update_dp(dp, x) answer = dp.sum() # 除外パターン:A_N=0 からはじめて N-1 に到達 dp = np.zeros(N, np.int64) dp[0] = 1 for x in nums: dp = update_dp(dp, x) answer -= dp[-1] print(answer % MOD)