#include using namespace std; #if __has_include() #include using namespace atcoder; #endif template void print(const T& a, const Ts&... b){cout << a;(cout << ... << (cout << ' ', b));cout << '\n';} template void input(T&... a){(cin >> ... >> a);} void print(){cout << '\n';} typedef long long ll; typedef long double ld; typedef pair P; typedef tuple T; typedef modint998244353 mint; #define rep(i, n) for(ll i = 0; i < n; i++) int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); ll n,m; input(n,m); if(n < m)return print(0),0; vector r(100,0); r[0] = 1; r[1] = 2; for(int i=2;i<=100;i++)r[i] = r[i-1]*r[i-1]; ll cnt = 1,N = n; mint ans = 1; while(N){ if(N & 1)ans *= r[cnt]; N >>= 1; cnt++; } mint tmp = 1; rep(i,m){ ans -= tmp; tmp *= (n-i); tmp *= (i == 0 ? 1 : i); tmp /= (i+1); } print(ans.val()); return 0; }