#include <bits/stdc++.h>
using namespace std;
struct hello {
  int a;
  int b;
};
bool hi(hello t, hello r) {
  if (t.a == r.a) return t.b < r.b;
  return t.a < r.a;
}
int main() {
  int n;
  cin >> n;
  vector<hello> v(n);
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    hello z;
    z.a = x;
    z.b = i;
    v[i] = z;
  }
  sort(v.begin(), v.end(), hi);
  vector<int> ini;
  vector<int> dep;
  ini.push_back(v[0].b);
  for (int i = 1; i < n; i++) {
    while (i < n && v[i].a == v[i - 1].a) {
      i++;
    }
    dep.push_back(v[i - 1].b);
    if (i != n) ini.push_back(v[i].b);
    if (i == n - 1) dep.push_back(v[i].b);
  }
  if (v.size() == 1) dep.push_back(0);
  sort(ini.begin(), ini.end());
  sort(dep.begin(), dep.end());
  int i = 1, j = 0;
  long long m = 1, s = 1;
  while (i < ini.size() && j < dep.size()) {
    if (ini[i] <= dep[j]) {
      if (m == 0) {
        s = (s * 2) % 998244353;
      }
      m++;
      i++;
    } else {
      m--;
      j++;
    }
  }
  if (i < ini.size()) {
    if (m == 0) s = (s * 2) % 998244353;
  }
  cout << s % 998244353 << endl;
}
