#include #include using mint = atcoder::modint1000000007; using namespace std; using ll = long long; //int c = 0; //vector a; // //void dfs(int x, int s) { // if (s == 0) { // int n = a.size(); // for (int i = 0; i < n; i++) { // cout << a[i] << " \n"[i == n - 1]; // } // c++; // return; // } // int t = 0; // for (int i = 1;; i++) { // t += x; // s -= x; // if (s < 0) break; // if (s % t == 0) { // a.push_back(t); // dfs(t, s); // a.pop_back(); // } // } //} int main() { //dfs(1, 12); //cout << c << endl; int m; cin >> m; vector dp(m + 1); dp[0] = 1; dp[1] = 1; for (int i = 2; i <= m; i++) { mint t = 0; for (int j = 1; j * j <= i; j++) { if (i % j == 0) { int k = i / j; t += dp[(i - j) / j]; if (j != k) t += dp[(i - k) / k]; } } dp[i] = t; } cout << dp[m].val() << endl; return 0; }