import sys input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### """ n が偶数 桁数は同じがいい 同じ nが奇数 - x """ from itertools import permutations def naive(n, c): if n == 0: return 0 ans = 10 ** 18 c = sorted(c) for bit in range(1 << n): A = [] B = [] for i in range(n): if bit >> i & 1: A.append(c[i]) else: B.append(c[i]) if len(A) != len(B): continue for i in range(n//2): for j in range(n//2): a = list(A) b = list(B) a.remove(A[i]) b.remove(B[i]) if A[i] <= B[i]: x = str(A[i]) + "".join([str(x) for x in a[::-1]]) y = str(B[i]) + "".join([str(x) for x in b]) else: x = str(A[i]) + "".join([str(x) for x in a]) y = str(B[i]) + "".join([str(x) for x in b[::-1]]) # print(x, y) ans = min(abs(int(x) - int(y)), ans) return ans def large(m1, c): c = sorted(c) A = c[:m1] B = c[m1:][::-1] # print(A, B) a = 0 for i in range(len(A)): a = (a * 10 + A[i]) % mod b = 0 for i in range(len(B)): b = (b * 10 + B[i]) % mod return (a - b) % mod mod = 998244353 n = ni() c = na() if n % 2 == 1: print(large((n+1)//2, c)) else: # assert False cnt = [0] * 10 for i in range(n): cnt[c[i]] += 1 cc = [] for i in range(10): if cnt[i] % 2: cc.append(i) ans = naive(len(cc), cc) for i in range(10): dd = list(cc) if cnt[i] >= 2: ans = min(ans, naive(len(cc) + 2, dd + [i, i])) print(ans % mod)