#include <iostream>
#define ll long long int
#define MN (int)200100
using namespace std;
ll md = 998244353;

ll ncr[MN+2][55];
ll minP[MN+2];
ll sol[MN+2];

int main(){
	minP[1] = 1;
	//eratosten;
	for(int i=2; i<MN; i++)
		if(!minP[i]) for(int j=1; j*i<MN; j++) if(!minP[i*j]) minP[i*j]=i;
	
	//ncr
	for(int i=1; i<MN; i++)
		for(int j=0; j <=min(i, 55); j++){
			if(j==0 or j==i) ncr[i][j] = 1;
			else ncr[i][j] = (ll)(ncr[i-1][j] + ncr[i-1][j-1]) % md;
		}
			

	ll n, m;
	cin >> n >> m;	
		
	sol[1] = 1;
	for(ll i=2; i<MN; i++){
		sol[i] = 1;
		
		ll ii = i;
		while(ii > 1){
			ll j = 0;
			ll p = minP[ii];
			while(ii%p==0) ii/=p, j++;
			sol[i] *= ncr[n - 2 + j][j];
			sol[i] = sol[i] % md;
		}
		
		sol[i] = (sol[i]+sol[i-1]) % md;
	}

	
	ll ans = 0;
	for(int i=1; i<=m; i++){
		int max = m/i;
		ans = ans + sol[max];
		ans = ans % md;
	}
	
	cout << ans << endl;
}






#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

typedef pair<int, int> pii;
typedef pair<ll, int> pli;
typedef pair<ll, ll> pll;

#define mp make_pair
#define fr first
#define sc second

int lg(ll n) {
    assert(n > 0);
    int ans = -1;
    while (n) {
        ans++;
        n >>= 1;
    }
    return ans;
}

void solve() {
    int A, B;
    cin >> A >> B;
    if (A > B)
        B--;
    else
        A--;
    for (int i = 0; i < A; i++) {
        cout << i + 1 << ' ';
    }
    for (int i = 0; i < B; i++) {
        cout << -(i + 1) << ' ';
    }
    cout << (B * (B + 1) - A * (A + 1)) / 2 << '\n';
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif

    int t = 1;
    // cin >> t;
    while (t--) solve();

    return 0;
}
