#include #include #include #include #include using namespace std; int n, k; int memo[1000][1000]; vector v [1000]; int dp(int n_1, int predhoden){ if(n_1 == n){ return 1; } if(memo[n_1][predhoden] != -1){ return memo[n_1][predhoden]; } int mod = 1e9 + 7; int res = 0; for (int i = 0; i < v[predhoden].size(); i++) { if(predhoden != v[predhoden][i] ){ res += dp(n_1 +1, v[predhoden][i] ); res = res% mod; } } return memo[n_1][predhoden] = res; } int main(){ cin >> n >> k; int res = 0; for (int i = 0; i < 1000; i++) { for (int j = 0; j < 1000; j++) { memo[i][j]= -1; } } for (int i = 1; i <= k; i++) { for (int j = 1; j <= k; j++) { if(i%j == 0 || j%i == 0){ v[i].push_back(j); } } } int mod = 1e9 + 7; for (int i = 1; i <= k; i++) { res += dp(1,i); res %= mod; } cout << res << endl; }