#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 1000000000000000001 int main(){ int n,m; cin>>n>>m; vector a(n); rep(i,n)cin>>a[i]; dsu D(n); rep(i,m){ int u,v; cin>>u>>v; u--,v--; D.merge(u,v); } auto g = D.groups(); mint ans = 1; rep(i,g.size()){ mint t = 0; rep(j,g[i].size())t += a[g[i][j]]; ans *= t.pow(g[i].size()); } cout<