#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000 + 100;
const long long MOD = 998244353;
int n;
int num[maxn], End[maxn];
vector<int> sand;
long long fast_pow(long long res, long long n) {
  long long ans;
  for (ans = 1; n != 0; n >>= 1) {
    if ((n & 1) == 1) {
      ans = ans * res % MOD;
    }
    res = res * res % MOD;
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  while (scanf("%d", &n) != EOF) {
    sand.clear();
    for (int i = 1; i <= n; ++i) {
      scanf("%d", &num[i]);
      sand.push_back(num[i]);
    }
    sort(sand.begin(), sand.end());
    sand.erase(unique(sand.begin(), sand.end()), sand.end());
    for (int i = 1; i <= n; ++i) {
      num[i] = lower_bound(sand.begin(), sand.end(), num[i]) - sand.begin() + 1;
      End[num[i]] = i;
    }
    long long ans = 0;
    int Begin = 1;
    int EEnd;
    while (Begin != n + 1) {
      EEnd = End[num[Begin]];
      ++ans;
      for (int i = Begin; i <= EEnd; ++i) {
        EEnd = max(EEnd, End[num[i]]);
      }
      Begin = EEnd + 1;
    }
    printf("%I64d\n", fast_pow(2, ans - 1));
  }
  return 0;
}
