#nullable enable #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; long Power(long v, long p) { var (res, k) = (1L, v); while (p > 0) { if ((p & 1) > 0) res = res * k % Mod; k = k * k % Mod; p >>= 1; } return res; } var inv2 = Power(2, Mod - 2); var inv6 = Power(6, Mod - 2); static T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); var n = I(); var yz = Range(n, I); var o = 0L; var ty = 0L; foreach (var y in yz) { o = (o + y * (y + 1) % Mod * inv2) % Mod; ty += y; } ty %= Mod; var ans = o * (ty + 1) % Mod; foreach (var y in yz) { var yb = y * (y + 1) % Mod * inv2 % Mod; var oe = (ty - y) % Mod; var t = y * (1 + y) % Mod * (y - 1) % Mod * inv6 % Mod; var yns = (oe * yb - t) % Mod; ans = (ans + yns) % Mod; } ans = ans * inv2 % Mod; if (ans < 0) ans += Mod; Console.WriteLine(ans);