// I AM A MUSLIM
#include "bits/stdc++.h"
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define fast_io std::ios::sync_with_stdio(0);std::cin.tie(0)
#define lli long long int
#define flush fflush(stdout)
#define line printf("\n")
#define yn(a, b) printf("%s\n", (a) >= (b) ? "Yes":"No")
#define amodm(a, M) (((a)%M+M)%M)
#define read(s) std::string s;std::cin >> s
#define readL(s) std::string s;getline(std::cin, s)
#define write(s) printf("%s\n", s.c_str())
// #define int lli
using pii = std::pair<int,int>;
const int MOD = 1000000007;
const int mxN = 500100;
int left[4 * mxN], right[4 * mxN];
void upd_left(int at, int l, int r, int idx) {
if (idx < l || idx >= r) return;
if (l+1 == r) {
left[at] += 1;
return;
}
int m = l + (r - l) / 2;
upd_left(2 * at + 1, l, m, idx);
upd_left(2 * at + 2, m, r, idx);
left[at] = left[2 * at + 1] + left[2 * at + 2];
}
void upd_right(int at, int l, int r, int idx) {
if (idx < l || idx >= r) return;
if (l+1 == r) {
right[at] += 1;
return;
}
int m = l + (r - l) / 2;
upd_right(2 * at + 1, l, m, idx);
upd_right(2 * at + 2, m, r, idx);
right[at] = right[2 * at + 1] + right[2 * at + 2];
}
int que_left(int at, int l, int r, int L, int R) {
if (r <= L || R <= l) return 0;
if (L <= l && r <= R) return left[at];
if (l + 1 == r) return 0;
int m = l + (r - l) / 2;
return que_left(2 * at + 1, l, m, L, R) + que_left(2 * at + 2, m, r, L, R);
}
int que_right(int at, int l, int r, int L, int R) {
if (r <= L || R <= l) return 0;
if (L <= l && r <= R) return right[at];
if (l + 1 == r) return 0;
int m = l + (r - l) / 2;
return que_right(2 * at + 1, l, m, L, R) + que_right(2 * at + 2, m, r, L, R);
}
signed main() {
int testCases=1;
// scanf("%d",&testCases);
for (int TC = 1; TC <= testCases; TC++) {
int n;
scanf("%d",&n);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d",&a[i]);
}
int ans[n]={0};
for (int i = 0; i < n; i++) {
int v = a[i];
int val = que_left(0, 0, 3*n, 0, v+1);
upd_left(0, 0, 3*n, v);
if (val >= v) ans[i]++;
}
for (int i = n-1; i >= 0; i--) {
int v = a[i];
int val = que_right(0, 0, 3*n, 0, v);
val = (n-i-1) - val;
upd_right(0, 0, 3*n, v);
if (val >= v) ans[i]++;
}
int fin = 0;
for (int i = 0; i < n; i++) {
if (ans[i]) fin++;
// printf("%d ", ans[i]);
}
printf("%d\n", fin);
}
return 0;
}