#include <bits/stdc++.h>
long long z = 998244353;
long long gcd(long long a, long long b) {
  if (b > a) return gcd(b, a);
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long power(long long a, long long b) {
  if (b == 0) return 1;
  long long c = power(a, b / 2);
  if (b % 2 == 0)
    return ((c * c) % z);
  else
    return ((((c * c) % z) * a) % z);
}
long long inverse(long long a, long long n) { return power(a, n - 2); }
long long max(long long a, long long b) {
  if (a > b) return a;
  return b;
}
using namespace std;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n;
  long long ans = 1;
  cin >> n;
  long long arr[n], vis[n];
  map<long long, vector<long long> > m;
  for (long long i = 0; i < n; i++) {
    cin >> arr[i];
    m[arr[i]].push_back(i);
    vis[i] = 0;
  }
  long long maxi = 0;
  for (long long i = 0; i < n; i++) {
    if (vis[i] == 0) {
      if (i > maxi) ans *= 2;
      ans %= z;
      vis[i] = 1;
      for (long long j = 0; j < m[arr[i]].size(); j++) {
        vis[m[arr[i]][j]] = 1;
        maxi = max(maxi, m[arr[i]][j]);
      }
    }
  }
  cout << ans << endl;
  return 0;
}
