#include #include using namespace std; #include #include using mint = atcoder::modint998244353; int main() { cin.tie(nullptr)->sync_with_stdio(false); int N; cin >> N; vector A(N); for (auto &a : A) cin >> a; auto rec = [&](auto &&self, int l, int r) -> vector { if (l + 1 == r) return {1, A.at(l)}; const int c = (l + r) / 2; return atcoder::convolution(self(self, l, c), self(self, c, r)); }; vector dp = rec(rec, 0, N); mint ret = 0; for (int n = 1; n <= N; ++n) ret += dp.at(n) * mint(n).pow(N - n); cout << ret.val() << '\n'; }