""" 0の位置は等しい。 1を考える。 0~1に 2,3,4... が含まれていたら、それらはすべて含まれていなければならない。 位置は間なら自由。 02341 で考えよう。 5を置く場合、位置は等しい必要がある。 """ import sys from sys import stdin import heapq def modfac(n, MOD): f = 1 factorials = [1] for m in range(1, n + 1): f *= m f %= MOD factorials.append(f) inv = pow(f, MOD - 2, MOD) invs = [1] * (n + 1) invs[n] = inv for m in range(n, 1, -1): inv *= m inv %= MOD invs[m - 1] = inv return factorials, invs def modnCr(n,r): #上で求めたfacとinvsを引数に入れるべし(上の関数で与えたnが計算できる最大のnになる) return fac[n] * inv[n-r] * inv[r] % mod mod = 998244353 fac,inv = modfac(300000,mod) N = int(stdin.readline()) P = list(map(int,stdin.readline().split())) rP = [None] * N for i in range(N): rP[P[i]] = i l,r = rP[0],rP[0] ans = 1 for i in range(1,N): if not (l <= rP[i] <= r): l = min(l,rP[i]) r = max(r,rP[i]) else: ans *= r-l-i+1 ans %= mod print (ans)