import sys, time, random from collections import deque, Counter, defaultdict input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 63 - 1 mod = 998244353 class dsu(): n=1 parent_or_size=[-1 for i in range(n)] def __init__(self,N): self.n=N self.num = N self.parent_or_size=[-1 for i in range(N)] def merge(self,a,b): assert 0<=a0: result2.append(result[i]) return result2 def count(self): return self.num n, m = mi() a = li() U = dsu(n) for _ in range(m): u, v = mi() u -= 1; v -= 1 U.merge(u, v) ans = 1 for v in U.groups(): cnt = 0 for x in v: cnt += a[x] ans *= pow(cnt, len(v), mod) ans %= mod print(ans)