#include<bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
using namespace std;
inline int read(){
	int res=0;
	bool zf=0;
	char c;
	while(((c=getchar())<'0'||c>'9')&&c!='-');
	if(c=='-')zf=1;
	else res=c-'0';
	while((c=getchar())>='0'&&c<='9')res=(res<<3)+(res<<1)+c-'0';
	if(zf)return -res;
	return res;
}
const int maxn=2e5+5,P=998244353;
int f[maxn],g[maxn];
int p[maxn],r;
int v[maxn],inv[25];
signed main(){
	int n=read(),m=read(),ans=1;
	inv[1]=1;
	for(register int i=2;i<=20;++i){
		inv[i]=1ll*inv[P%i]*(P-P/i)%P;
	}
	for(register int i=2,t;i<=m;++i){
		if(!v[i]){
			f[i]=n,g[i]=1,p[++r]=i;
		}
		for(register int j=1;j<=r&&(t=i*p[j])<=m;++j){
			v[t]=1;
			if(i%p[j]){
				f[t]=1ll*f[i]*n%P,g[t]=1;
			}
			else{
				f[t]=1ll*f[i]*(n+g[i])%P*inv[g[i]+1]%P,g[t]=g[i]+1;
				break;
			}
		}
		ans+=f[i];
		(ans>=P)&&(ans-=P);
	}
	printf("%d\n",ans);
	return 0;
}
// RedStone
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define endl '\n'
#define D(x) cerr << #x << " = " << (x) << '\n'
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
typedef long long ll;

const int N = 200010;
const int Mod = 998244353;

int n, m;
int smf[N];
int dp[N][100];

void init() {
  for(int i = 0; i <= m; i++)
    smf[i] = i;
  for(int i = 2; i * i <= m; i++) {
    if(smf[i] == i) {
      for(int j = 2 * i; j <= m; j += i) {
        smf[j] = min(smf[j], i);
      }
    }
  }
}

int calc(int it, int rem) {
  if(it == 0) return rem == 0;
  int& r = dp[it][rem];
  if(r != -1) return r;
  r = calc(it - 1, rem);
  if(rem > 0)
    r = (r + calc(it, rem - 1)) % Mod;
  return r;
}

int solve(int m) {
  int ans = 1;
  while(m > 1) {
    int f = smf[m];
    int fr = 0;
    while(m % f == 0) {
      fr++;
      m /= f;
    }
    ans = (ans * 1LL * calc(n, fr)) % Mod;
  }
  return ans;
}

int main()
{
  memset(dp, -1, sizeof dp);
  
  cin >> n >> m;
  init();

  int ans = 1;
  for(int i = 2; i <= m; i++) {
    ans = (ans + solve(i)) % Mod;
  }
  cout << ans << endl;
  return 0;
}
