#include <bits/stdc++.h>
#define MAX_N (200000 + 5)
#define LL long long
using namespace std;
const int mod = 998244353;
int n, m;
int inv[MAX_N];
int p[MAX_N], tot;
bool is[MAX_N];
int pw[MAX_N], f[MAX_N];
int main() {
	scanf("%d%d", &n, &m);
	inv[1] = 1;
	for (int i = 2; i <= m; ++i) inv[i] = (LL)(mod - mod / i) * inv[mod % i] % mod;
	for (int i = 2; i <= m; ++i) {
		if (!is[i]) p[++tot] = i, pw[i] = 1, f[i] = n;
		for (int j = 1; i * p[j] <= m; ++j) {
			is[i * p[j]] = 1;
			if (i % p[j]) {
				pw[i * p[j]] = 1;
				f[i * p[j]] = (LL)f[i] * n % mod;
			}
			else {
				pw[i * p[j]] = pw[i] + 1;
				f[i * p[j]] = (LL)f[i] * (n + pw[i]) % mod * inv[pw[i] + 1] % mod;
				break;
			}
		}
	}
	int ans = 1;
	for (int i = 2; i <= m; ++i) ans = (ans + f[i]) % mod;
	printf("%d", ans);
	return 0;
}
#include<bits/stdc++.h>
using namespace std;

long long int MOD = 998244353;

long long int power(long long int b, long long int e) {
    if (e == 0)
        return 1;
    long long int temp = power(b, e / 2);
    if (e % 2 == 0)
        return temp * temp % MOD;
    return (temp * temp) % MOD * b % MOD;
}

long long int inv(long long int n) {
    return power(n, MOD - 2);
}

const int N = 200200;
long long int f[N], rf[N];

long long int choose(long long int n, long long int r) {
    if (r < 0 || r > n) return 0;
	return (f[n] * rf[r]) % MOD * rf[n - r] % MOD;
}

void solve() {
    int n,m; cin >> n >> m;
    if (n == 1) {
        cout << m;
        return;
    }

    f[0] = 1;
	for (int i = 1; i < N; i++)
		f[i] = f[i - 1] * i % MOD;
	rf[N - 1] = inv(f[N - 1]);
	for (int i = N - 1; i > 0; i--)
		rf[i - 1] = rf[i] * i % MOD;

    vector<vector<long long int>> dp(m + 1, vector<long long int>(20));
    dp[1][0] = 1;
    for (int k = 0; k < 19; k++) {
        for (int i = 1; i <= m; i++) {
            if (dp[i][k] == 0) continue;

            for (int j = 2 * i; j <= m; j += i) {
                dp[j][k + 1] += dp[i][k];
                dp[j][k + 1] %= MOD;
            }
        }
    }

    long long int ans = 0;
    for (int i = 0; i <= min(n, 19); i++) {
        long long int total = 0;
        for (int j = 1; j <= m; j++) {
            total += dp[j][i];
            total %= MOD;
        }
        ans += total * choose(n, i);
        ans %= MOD;
    }
    cout << ans;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    int t; t = 1;
    while (t--) {
        solve();
    }
    
    return 0;
}