using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var p = NList; WriteLine(Mex(n, p)); } static long Mex(int n, int[] p) { var pos = new int[n]; for (var i = 0; i < n; ++i) pos[p[i]] = i; var left = n + 1; var right = -1; var ans = 1L; var mod = 998_244_353; for (var i = 0; i < n; ++i) { var cnt = 1; if (left <= pos[i] && pos[i] <= right) { cnt = right - left - i + 1; } if (pos[i] < left) { left = pos[i]; } if (right < pos[i]) { right = pos[i]; } ans = ans * cnt % mod; } return ans; } }