#nullable enable using System.Numerics; #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion const int Mod = 998244353; static List? NextPermutation(List p) where T : IComparable { var a = p.ToList(); var b = new List { a[^1] }; for (var i = a.Count - 2; i >= 0; i--) { var t = a[i]; if (t.CompareTo(b[^1]) >= 0) b.Add(t); else { var k = 0; while (k < b.Count && b[k].CompareTo(t) <= 0) k++; (b[k], a[i]) = (t, b[k]); for (var j = 0; j < b.Count; j++) a[i + 1 + j] = b[j]; return a; } } return null; } static T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); var n = I(); var cz = Range(n, I); if (n % 2 == 1) { Array.Sort(cz); var h = n / 2 + 1; var ca1 = cz[..h].Select(v => (char)(v + '0')).ToArray(); var ca2 = cz[h..].Select(v => (char)(v + '0')).Reverse().ToArray(); var x = BigInteger.Parse(new string(ca1)); var y = BigInteger.Parse(new string(ca2)); Console.WriteLine((x - y) % Mod); return; } var cd = new int[10]; foreach (var c in cz) cd[c] ^= 1; var l = new List(); for (var i = 1; i <= 9; i++) if (cd[i] > 0) l.Add(i); var ans = int.MaxValue; if (l.Count == 0) ans = 0; while (l != null) { var (x, y) = (0, 0); var h = l.Count / 2; for (var i = 0; i < h; i++) x = x * 10 + l[i]; for (var i = h; i < l.Count; i++) y = y * 10 + l[i]; ans = Math.Min(ans, Math.Abs(x - y)); l = NextPermutation(l); } Console.WriteLine(ans);