#include #include #include #include typedef atcoder::modint998244353 mint; int main() { std::cin.tie(nullptr) -> sync_with_stdio(false); int n, m; std::cin >> n >> m; std::vector a(n); for(auto &el: a) std::cin >> el; atcoder::dsu uf(n); while(m--) { int u, v; std::cin >> u >> v; uf.merge(--u, --v); } mint ans = 1; for(const auto g: uf.groups()) { mint res = 0; for(const auto i: g) { res += a[i]; } ans *= res.pow(std::ssize(g)); } std::cout << ans.val() << '\n'; }