from collections import deque N,M = map(int, input().split()) A =list(map(int, input().split())) G = [ [] for _ in range(N+1) ] for _ in range(M): u,m = map(int, input().split()) G[u].append(m) G[m].append(u) def bfs(start): dist = [False]*(N+1) dist[start] = True que = deque() que.append(start) cnt = A[start-1] while que: v = que.popleft() for v2 in G[v]: if dist[v2] != False: continue dist[v2] = True cnt += A[v2-1] que.append(v2) return cnt ans = 1 for i in range(1, N+1): num= bfs(i) #print(num) ans *= num ans %= 998244353 print(ans)