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))