#include #include using ll = long long; constexpr ll MOD = 1000000007; #define show(x) std::cerr << #x << " = " << (x) << std::endl template std::ostream& operator<<(std::ostream& os, const std::vector& v) { os << "["; for (const auto& p : v) { os << p << ","; } return (os << "]\n"); } int main() { int N; std::cin >> N; std::vector> dp(N + 1, std::vector(N + 1, 0)); std::vector> sum(N + 1, std::vector(N + 1, 0)); dp[0][0] = 1, std::fill(sum[0].begin(), sum[0].end(), 1); for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { (dp[i][j] += sum[i - 1][j]) %= MOD; if (i + j >= N) { (dp[i][j] += MOD + sum[i - N + j][N] - sum[i - N + j][j]) %= MOD; } sum[i][j] = (sum[i][j - 1] + dp[i][j]) % MOD; } } //show(dp), show(sum); std::cout << sum[N][N] << std::endl; return 0; }