import sys,random,bisect from collections import deque,defaultdict from heapq import heapify,heappop,heappush from itertools import permutations from math import gcd,log input = lambda :sys.stdin.readline().rstrip() mi = lambda :map(int,input().split()) li = lambda :list(mi()) mod = 998244353 def solve(N,P): pos = [-1 for i in range(N)] for i in range(N): pos[P[i]] = i assert -1 not in pos L,R = N,-1 res = 1 for i in range(N): if L <= pos[i] <= R: res *= R-L+1 - i res %= mod else: L = min(pos[i],L) R = max(pos[i],R) return res N = int(input()) P = li() print(solve(N,P))