import sys sys.setrecursionlimit(100050) MOD = 998244353 N = int(input()) A = list(map(int, input().split())) E = [[] for _ in range(N)] D = [0] * N L = [0] * 11 for i in range(11): L[i] = pow(10, i, MOD) X = [0] * N B = [0] * N for i, a in enumerate(A): B[i] = L[len(str(a))] for _ in range(N - 1): x, y = map(int, input().split()) x -= 1 y -= 1 E[x].append(y) E[y].append(x) D[x] += 1 D[y] += 1 def dfs(x, p=-1): ret = 0 cnt = 1 for y in E[x]: if y != p: r, c = dfs(y, x) ret += r ret %= MOD cnt += c X[x] = (ret * B[x] + A[x] * cnt) % MOD D[x] = cnt return (X[x], cnt) dfs(0) Y = [0] * N Y[0] = X[0] Q = [0] nv = [1] * N nv[0] = 0 while Q: x = Q.pop() for y in E[x]: if nv[y]: nv[y] = 0 Y[y] = ((Y[x] - X[y] * B[x] - A[x] * D[y]) * B[y] + A[y] * (N - D[y]) + X[y]) % MOD Q.append(y) ans = 0 for y in Y: ans += y ans %= MOD print(ans)