#include <bits/stdc++.h>
using namespace std;
#define int              long long int
#define double           long double
#define print(a)         for(auto x : a) cout << x << " "; cout << endl


const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;

inline int power(int a, int b, int mod=M) {
    int x = 1;
    a %= mod;
    while (b) {
        if (b & 1) x = (x * a) % mod; 
        a = (a * a) % mod;
        b >>= 1;
    }
    return x;
}


//_ ***************************** START Below *******************************




const int MOD = 998244353;
vector<int> a;

int consistency(int n){

    unordered_map<int,int> mp;
    mp.reserve(n*2);
    mp.max_load_factor(0.25);
    
    vector<pair<int,int>> intervals;
    intervals.reserve(n);

    intervals.push_back({0,0});
    for(int i=0; i<n; i++){
        if(mp.count(a[i])){
            int l = mp[a[i]];
            int r = i;
            intervals.push_back({l, r});
        }
        mp[a[i]] = i;
    }

    sort(begin(intervals), end(intervals));

    vector<pair<int,int>> merged;
    int s = -1, e = -1;
    int sz = intervals.size();
    for(int i = 0; i<sz; i++){
        int l = intervals[i].first;
        int r = intervals[i].second;

        if(s==-1 && e==-1){
            s = l, e=r;
        }
        else if(l <= e){
            e = max(r, e);
        }
        else{
            merged.push_back({s, e});
            s = l, e = r;
        }
    }
    merged.push_back({s, e});

    int ct = merged.size()-1;

    for(int i=1; i<merged.size(); i++){

        int gap = merged[i].first - merged[i-1].second - 1;
        ct += gap;
    }

    int gap = n-merged.back().second-1;
    ct += gap;

    int ans = power(2, ct, MOD);

    return ans;

}





int consistency2(int n){

    map<int,int> mp;
    for(int i=0; i<n; i++) mp[a[i]] = i;

    int ans = 1; 
    int last = 0;

    for(int i=0; i<n-1; i++){
        last = max(last, mp[a[i]]);
        if(i==last) ans = (ans * 2)%MOD;
    }

    return ans;

}












int practice(int n){


    return 0;
}





void solve() {
    
    int n;
    cin>> n;
    
    a.resize(n);
    for(int i=0; i<n; i++) cin >> a[i];
    
    cout << consistency2(n) << endl;


}





int32_t main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
    }

    return 0;
}