#include #include using namespace std; using ll = long long; using mint = atcoder::modint998244353; mint binom(long long int a, long long int b){ mint ans = 1, div = 1; int cnt = 0; b = min(b, a - b); for(int i = 0; i < b; i++){ if(a - b + i + 1 == mint::mod()) cnt++; else ans *= a - b + i + 1; if(i + 1 == mint::mod()) cnt--; else div *= i + 1; } if(cnt >= 1) return 0; ans /= div; return ans; } int main() { ios::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; int cyc = (mint(2).pow(n - 1) - 1).val(); int cyc2 = cyc + cyc + 1; mint ans = binom(cyc2, m); if((1ll << min(60, n - 1)) >= m) ans -= cyc2 * binom(cyc, m - 1); cout << ans.val() << '\n'; }