For this Question: When Sasha was a little girl, she came to know that the LCM of two numbers can be defined as:
LCM(a, b) = ab &frasl; GCD(a, b). However, she was disappointed to learn that LCM was not defined similarly for more than two numbers. She thus defined a new concept, Sasha's LCM, as:

Sasha's LCM(x<sub>1</sub>, x<sub>2</sub>, ... x<sub>N</sub>) = x<sub>1</sub>x<sub>2</sub>...x<sub>N</sub> &frasl; GCD(x<sub>1</sub>, x<sub>2</sub>, ... x<sub>N</sub>)

Excited by her discovery, she has asked you to calculate the sum of Sasha's LCM for all sequences (x<sub>1</sub>, x<sub>2</sub>, ... x<sub>N</sub>) of length N, such that 1 ≤ x<sub>i</sub> ≤ M for all valid i. Since the sum can be large, print the answer modulo 998244353.

For example, if both N and M were 2, you would be asked the value of Sasha's LCM(1, 1) + Sasha's LCM(1, 2) + Sasha's LCM(2, 1) + Sasha's LCM(2, 2) modulo 998244353.The input consists of two space-separated integers N and M.

<b> Constraints: </b>
2 ≤ N ≤ 10<sup>9</sup>
1 ≤ M ≤ 10<sup>6</sup>Print a single integer, the summation of Sasha's LCM for all valid sequences modulo 998244353.Sample Input 1:
2 2

Sample Output 1:
7

Sample Explanation 1:
We have:
Sasha's LCM(1, 1) = 1
Sasha's LCM(2, 1) = 2
Sasha's LCM(1, 2) = 2
Sasha's LCM(2, 2) = 2. 
Thus, the total sum is 7.

Sample Input 2:
3 2

Sample Output 2:
23

Sample Explanation 2:
We have:
Sasha's LCM(1, 1, 1) = 1
Sasha's LCM(2, 1, 1) = Sasha's LCM(1, 2, 1) = Sasha's LCM(1, 1, 2) = 2
Sasha's LCM(2, 2, 1) = Sasha's LCM(1, 2, 2) = Sasha's LCM(2, 1, 2) = 2*2/1 = 4
Sasha's LCM(2, 2, 2) = 2*2*2/2 = 4

Thus, the total sum is 1 + 2*3 + 4*3 + 4 = 23.

Sample Input 3:
5 7

Sample Output 3:
17032016, I have written this Solution Code: #include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
 
typedef long long ll;
typedef long double ld;
#define db(x) cerr << #x << ": " << x << '\n';
#define read(a) int a; cin >> a;
#define reads(s) string s; cin >> s;
#define readb(a, b) int a, b; cin >> a >> b;
#define readc(a, b, c) int a, b, c; cin >> a >> b >> c;
#define readarr(a, n) int a[(n) + 1] = {}; FOR(i, 1, (n)) {cin >> a[i];}
#define readmat(a, n, m) int a[n + 1][m + 1] = {}; FOR(i, 1, n) {FOR(j, 1, m) cin >> a[i][j];}

#define print(a) cout << (a) << endl;
#define printarr(a, n) FOR (i, 1, n) cout << a[i] << " "; cout << endl;
#define printv(v) for (auto i: v) cout << i << " "; cout << endl;
#define printmat(a, n, m) FOR (i, 1, n) {FOR (j, 1, m) cout << a[i][j] << " "; cout << endl;}
#define all(v) v.begin(), v.end()
#define sz(v) (int)(v.size())
#define rz(v, n) v.resize((n) + 1);
#define pb push_back
#define fi first
#define se second
#define vi vector <int>
#define pi pair <int, int>
#define vpi vector <pi>
#define vvi vector <vi>
#define setprec cout << fixed << showpoint << setprecision(20);
#define FOR(i, a, b) for (int i = (a); i <= (b); i++)
#define FORD(i, a, b) for (int i = (a); i >= (b); i--)
const ll inf = 1e18;
const ll mod = 998244353;   // 1e9 + 7;
const ll N = 2e5 + 1;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int power (int a, int b = mod - 2)
{
    int res = 1;
    while (b > 0) {
        if (b & 1)
            res = res * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return res;
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    readb(n, m);
    int ans = 0, sum[m + 1] = {};
    FORD (i, m, 1)
    {
        int cur = 0;
        for (int j = i; j <= m; j += i) cur = (cur + j) % mod;
        cur = power(cur, n);

        for (int j = i*2; j <= m; j += i)
            cur = (cur - sum[j]) % mod;

        sum[i] = cur;
        ans = (ans + cur*power(i)) % mod;
    }

    ans = (ans + mod) % mod;
    print(ans);
}



, In this Programming Language: C++, Now tell me if this Code is compilable or not?