#include #define int long long using namespace std; int dfs(int i,vector>&adj,vector&visited,vector&a){ visited[i]=true; int total = 0; for(int j:adj[i]){ if(visited[j]==false){ total+= dfs(j,adj,visited,a); } } return total+a[i]; } void dfs1(vector&sum,int sum1, vector>&adj,int u){ sum[u]=sum1; for(int i:adj[u]){ if(sum[i]==-1){ dfs1(sum,sum1,adj,i); } } } signed main(){ int n,m; cin>>n>>m; vector>adj(n+1); vectora(n+1); for(int i=1;i<=n;++i)cin>>a[i]; for(int i=0;i>u>>v; adj[u].push_back(v); adj[v].push_back(u); } vector sum(n+1,-1); vectorvisited(n+1,false); for(int i=1;i<=n;++i){ if(visited[i]==false){ //find sum of component int sum1 = dfs(i,adj,visited,a); dfs1(sum,sum1,adj,i); } } int ans = 1; for(int i=1;i<=n;++i){ ans = (ans*sum[i])%998244353; } cout<