



#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<stack>
#define scanf scanf_s
using namespace std;
#define int long long
const int mod = 998244353;
int fpow(int x, int b)
{
if (x == 0) return 0;
if (b == 0) return 1;
int res = 1;
while (b > 0)
{
if (b & 1) res = 1LL * res * x % mod;
x = 1LL * x * x % mod;
b >>= 1;
}
return res;
}
int calc(int x)
{
int res = 0;
for (int i = 1;; i *= 2)
{
if (x < i) break;
res++, x -= i;
}
return res;
}
signed main()
{
int n, m;
cin >> n >> m;
int ans = 1;
int l = n, r = n + m - 1;
while (l <= r)
{
int L = l, R = r, res = L;
while (L <= R)
{
int mid = (L + R) >> 1;
if (calc(mid) == calc(l)) res = mid, L = mid + 1;
else R = mid - 1;
}
int prob = (1 - fpow(499122177, calc(l)) + mod) % mod;
ans = ans * fpow(prob, res - l + 1) % mod;
l = res + 1;
}
cout << ans << "\n";
return 0;
}