#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "testlib.h" using namespace std; using namespace atcoder; #define rep(i,n,c) for (int i=0;i using vec = vector; template using vvec = vec>; template using vvvec = vec>; using ll = long long; using pii = pair; using pll = pair; template bool chmin(T &a, T b){ if (a>b){ a = b; return true; } return false; } template bool chmax(T &a, T b){ if (a T sum(vec x){ T res=0; for (auto e:x){ res += e; } return res; } template void printv(vec x){ for (auto e:x){ cout<>= 1; } return res; } using mint = modint998244353; mint f[15][100001]; int main(int argc,char* argv[]){ registerValidation(argc,argv); int N = inf.readInt(2,100000); inf.readSpace(); int K = inf.readInt(1,14); inf.readEoln(); vec A(N); int a; for (int i=0;i> dp(N,vec(K+1,0)); mint t = 1; for (int j=0;j<=K;j++){ dp[0][j] = t; t = 2 * t * A[0]; } for (int i=1;i