#include #include using Int = int64_t; using Mint = atcoder::modint998244353; void Solve() { Int n; std::cin >> n; std::vector> f(2 * n); for (Int i = 0; i < n; ++i) { Int a; std::cin >> a; f[n + i] = {1, a}; } for (Int i = n; 1 < i--;) { f[i] = atcoder::convolution(f[2 * i], f[2 * i + 1]); } Mint ans = 0; for (Int k = 1; k <= n; ++k) { ans += f[1][k] * Mint(k).pow(n - k); } std::cout << ans.val() << '\n'; } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); Solve(); }