#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MOD = 998244353;
using P = pair<int,int>;
#define rep(i, n) for(int i = 0; i < n; i++)
#define all(x) (x).begin(),(x).end()
template<class T>bool chmin(T&a, const T&b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool chmax(T&a, const T&b){if(a<b){a=b;return 1;}return 0;}

int main(){
    int n;
    cin >> n;
    vector<int> ainv(n);
    rep(i,n){
        int a;
        cin >> a;
        ainv[a] = i;
    }
    int be = min(ainv[0],ainv[1]), en = max(ainv[0],ainv[1]);
    ll ans = 1;
    for(int i=2;i<n;i++){
        if(chmin(be,ainv[i])) continue;
        else if(chmax(en,ainv[i])) continue;
        else ans = (ans * (en - be - i + 1)) % MOD;
    }
    cout << ans << endl;
    return 0;
}