# これは難しい、1次元dp、dp[m]のパターン数 # dp[1]=1, dp[2]=2, dp[3]=3のときdp[4]を考える # dp[4]となる集合は1111, 112, 13, 22, 4 # 最初の数は4の約数であり、その最初の数で全要素を割ると、1111, 112, 13, 11, 1となる # 最初の数を引いた残りは3, 3, 3, 1, 0となる、これらは約数d-1 # つまり最初の数が終わると約数d-1となるのでdp[d-1]を加算する def divisors(n): lower_divisors , upper_divisors = [], [] i = 1 while i*i <= n: if n % i == 0: lower_divisors.append(i) if i != n // i: upper_divisors.append(n//i) i += 1 return lower_divisors + upper_divisors[::-1] M = int(input()) dp = [0]*(max(M, 5)+1) mod = 10**9+7 dp[0] = 0 dp[1] = 1 dp[2] = 2 dp[3] = 3 for i in range(4, max(M, 5)+1): divs = divisors(i) # dp[i]を作るときに{iそのもの}もできるので calc = 1 for d in divs: calc += dp[d-1] calc %= mod dp[i] = calc #print(dp[:10]) ans = dp[M]%mod print(ans)