from sys import stdin input = stdin.readline from heapq import heappush, heappop def factorization(n): arr = set() temp = n for i in range(2, int(-(-n**0.5//1))+1): if temp%i == 0: while temp%i == 0: temp //= i arr.add(i) if temp != 1: arr.add(temp) return arr INF = 1<<60 N, M = map(int, input().split()) A = list(map(int, input().split())) G = [[] for _ in range(N)] for _ in range(M): u, v = map(int, input().split()) u, v = u-1, v-1 G[u].append(v) G[v].append(u) MOD = 998244353 def encode(n, c): return c*N+n def decode(n): return n//N, n%N def func(x): cost = [0]*N for i, a in enumerate(A): n = a while n%x == 0: cost[i] += 1 n //= x visited = [False]*N dist = [INF]*N que = [] heappush(que, encode(0, cost[0])) dist[0] = cost[0] while que: _, n = decode(heappop(que)) if visited[n]: continue visited[n] = True for v in G[n]: if max(dist[n], cost[v]) < dist[v]: dist[v] = max(dist[n], cost[v]) heappush(que, encode(v, dist[v])) return dist S = set() for a in A: S |= factorization(a) ans = [1]*N for s in S: dist = func(s) for i, d in enumerate(dist): ans[i] *= pow(s, d, MOD) ans[i] %= MOD print(*ans, sep="\n")