#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
  int r, i;
  while (b != 0) {
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}
long long int power(long long int x, long long int y) {
  long long int temp, ty, my;
  long long int mod;
  if (y == 0) return 1;
  temp = power(x, y / 2);
  ty = (temp) * (temp);
  if (y % 2 == 0) {
    return ty;
  } else {
    my = (x) * (ty);
    return my;
  }
}
long long int maxi(long long int a, long long int b) { return a > b ? a : b; }
struct abh {
  long long int val;
  long long int pos;
};
struct abh brr[100010];
bool cmp(struct abh x, struct abh y) { return x.pos < y.pos; }
char ss[100010];
long long int a[100100];
long long int b[100100];
long long int bd[27];
vector<pair<int, int> > abh;
queue<long long int> br[100100];
map<long long int, long long int> mapa;
int main() {
  long long int n, i;
  cin >> n;
  long long int p = 0;
  for (i = (1); i < (n + 1); i++) {
    cin >> a[i];
    if (mapa.find(a[i]) == mapa.end()) {
      p++;
      mapa[a[i]] = p;
    }
    br[mapa[a[i]]].push(i);
  }
  for (i = (1); i < (n + 1); i++) b[i] = a[i];
  sort(b + 1, b + n + 1);
  long long int abhi = 0;
  long long int ans = 0;
  for (i = (1); i < (n + 1); i++) {
    abhi = max(abhi, br[mapa[b[i]]].front());
    br[mapa[b[i]]].pop();
    if (abhi == i) {
      ans++;
    }
  }
  cout << ans << "\n";
  return 0;
}
