#include using namespace std; #define REP(i,n) for(int i=0;i<(n);i++) #include using namespace atcoder; using mint=modint998244353; ostream& operator<<(ostream &os,mint a){os<>(istream &is,mint &a){ long long b;is>>b;a=b; return is; } const int SIZE=5000000; mint Factorial[SIZE],Finverse[SIZE]; void Cinit(){ Factorial[0]=mint(1); for(int i=1;i=0;i--)Finverse[i]=mint(i+1)*Finverse[i+1]; } mint nCk(int n,int k){ if(Factorial[0]==0)Cinit(); if(n>n>>k; mint ans=mint(k).pow(n); REP(i,k+1)ans-=mint(k-i).pow(n)*mint(-2).pow(i)*nCk(k,i); ans/=2; cout<