#include<bits/stdc++.h> #define int long long usingnamespace std; constint MOD = 998244353; intqpow(int a, int b){ int res = 1; while (b) { if (b & 1) res = 1LL * res * a % MOD; a = 1LL * a * a % MOD; b >>= 1; } return res; } inteuler_phi(int t){ if (t == 0) return0; int res = t; for (int p = 2; p * p <= t; ++p) { if (t % p == 0) { res = res / p * (p - 1); while (t % p == 0) t /= p; } } if (t > 1) res = res / t * (t - 1); return res; } signedmain(){ int n, m; cin >> n >> m; m %= MOD; if (m == 0) { cout << 0 << endl; return0; } vector<int> factors; for (int i = 1; i * i <= n; ++i) { if (n % i == 0) { factors.push_back(i); if (i != n / i) factors.push_back(n / i); } } sort(factors.begin(), factors.end()); factors.erase(unique(factors.begin(), factors.end()), factors.end()); int sum = 0; for (int d : factors) { int t = n / d; int phi = euler_phi(t); int md = qpow(m, d); sum = (sum + 1LL * phi * md) % MOD; } int ans = (1LL * (m + 1) % MOD * sum % MOD) * qpow(2, MOD - 2) % MOD; cout << ans << endl; return0; }