#def pprint(x): # for i in x: # print(i) n = int(input()) qs = [int(i) for i in input().split()] k = 1 for i in range(1, n+1): k *= i**2 def make_zeros_array(n): return [[float("inf")]*n for _ in range(n)] def make_adj_matrix(n): array = make_zeros_array(n) for i in range(n): array[i][i] = 0 for _ in range(n-1): i,j = map(lambda x: int(x)-1, input().split()) array[i][j] = 1 array[j][i] = 1 return array adjacency_matrix = make_adj_matrix(n) def warshall_floyd(array, n): for k in range(n): for i in range(n): for j in range(n): array[i][j]=min(array[i][j], array[i][k]+array[k][j]) return array array = warshall_floyd(adjacency_matrix, n) #pprint(array) def cal_e_p(p, qs, k, array): e_k = 0 for i in range(n): e_k += qs[i] * k/(array[p][i] + 1)**2 print(int(e_k % 998244353)) for i in range(n): cal_e_p(i, qs, k, array)