// топ, топ, топ

#include <iostream>
#include <cassert>
#include <cstring>
const long long maxn = 5e3+10;
const long long mod = 998244353;
long long n, c;

int dp[maxn][maxn];
int f(int ix, int num)
{
    if (ix == n+1) return 1;
    if (dp[ix][num] != -1) return dp[ix][num];
    dp[ix][num] = f(ix+1, num);
    for (int j = 2 ; j*num <= c ; ++j)
    {
        dp[ix][num] += f(ix+1, num*j);
        if (dp[ix][num] >= mod) dp[ix][num] -= mod;
    }

    return dp[ix][num];

}
void solve()
{
    std::fill(&dp[0][0], &dp[maxn-1][maxn-1]+1, -1);
    std::cout << f(1, 1) << '\n';
}

void read()
{
    std::cin >> n >> c;
}

void fast_io()
{
    std::ios_base :: sync_with_stdio(0);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);
}

signed main()
{
    fast_io();
    read();
    solve();

    return 0;

}
