MOD = 998244353 N,M = map(int, input().split()) A = [0]+list(map(int, input().split())) T = [0]+[[i,A[i]] for i in range(1,N+1)] def rfind(x): if T[x][0]==x: return x T[x][0] = rfind(T[x][0]) return T[x][0] def runion(x,y): rx = rfind(x) ry = rfind(y) if rx==ry: return if T[rx][1]>=T[ry][1]: T[ry][0] = rx T[rx][1] += T[ry][1] else: T[rx][0] = ry T[ry][1] += T[rx][1] for _ in range(M): u,v = map(int, input().split()) runion(u,v) ans = 1 for i in range(1,N+1): ri = rfind(i) ans = (ans*T[ri][1])%MOD print(ans)