/**
____    ____    ____    __________________    ____    ____    ____
||I ||  ||c ||  ||e ||  ||                ||  ||M ||  ||a ||  ||n ||
||__||  ||__||  ||__||  ||________________||  ||__||  ||__||  ||__||
|/__\|  |/__\|  |/__\|  |/________________\|  |/__\|  |/__\|  |/__\|

*/

#include <algorithm>
#include <iostream>
#include  <vector>

#define maxn 50000005
#define maxlog 21
#define PB push_back
#define X first
#define Y second
#define control cout<<"passed"<<endl;

typedef long long ll;
typedef std::pair<int, int> pii;
typedef std::pair<ll, ll> pll;
typedef std::pair<int, ll> pil;
typedef std::pair<ll, int> pli;
typedef long double ld;


const ll mod = 998244353;
const ll INF = 4e18;
const double eps = 1e-12;


ll power(ll a , ll b)
{
    ll ret = 1;
    while(b != 0)
    {
        if(b % 2 == 1)
        {
            ret *= a;
            ret %= mod;
        }

        a *= a;
        a %= mod;

        b /= 2;
    }

    return ret;
}


ll inv[100] , cc[100];
int sieve[maxn];
std::vector <int> primes;
int dp2[maxn];
int br[maxn] , bb[maxn];
int n , c;


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

    inv[0] = 1;
    for(int i = 1; i < 100; i++)
        inv[i] = power(i , mod - 2);

    cc[0] = 1;
    for(int i = 1; i < 100; i++)
    {
        ll pom = ((((n - 1) + i) % mod) * cc[i - 1]) % mod;
        cc[i] = (pom * inv[i]) % mod;
    }

    sieve[1] = 1;
    for(int i = 2; i <= c; i++)
    {
        if(sieve[i] == 0)
        {
            sieve[i] = i;
            primes.PB(i);
        }

        for(auto& e : primes)
        {
            if(e * i > c)
                break;
            sieve[e * i] = e;
            if(e == sieve[i])
                break;
        }
    }

    bb[1] = 1;
    br[1] = 0;
    dp2[1] = 1;

    for(int i = 2; i <= c; i++)
    {
        if(sieve[i / sieve[i]] == sieve[i])
        {
            br[i] = br[i / sieve[i]] + 1;
            bb[i] = bb[i / sieve[i]];
        }
        else
        {
            bb[i] = i / sieve[i];
            br[i] = 1;
        }

        dp2[i] = (dp2[bb[i]] * cc[br[i]]) % mod;
    }

    ll ans = 0;
    for(int i = 1; i <= c; i++)
    {
        ans += dp2[i];
        if(ans >= mod)
            ans -= mod;
    }

    std::cout << ans << "\n";
}



int main()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);


    read();

    return 0;
}
