#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
int maxVal = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
if (a[i] > maxVal)
maxVal = a[i];
}
// Step 1: Build frequency of all elements to the right
vector<int> freq(maxVal + 2, 0); // +2 for safety
for (int i = 0; i < n; i++) {
freq[a[i]]++;
}
// Step 2: Build suffix sum for ≥ condition
vector<int> suffixSum(maxVal + 2, 0);
for (int i = maxVal; i >= 0; i--) {
suffixSum[i] = freq[i] + suffixSum[i + 1];
}
int specialCount = 0;
vector<int> prefix(maxVal + 2, 0); // for left ≤ condition
for (int i = 0; i < n; i++) {
// Before checking right, remove current value (we're "at" this index)
freq[a[i]]--;
suffixSum[a[i]]--;
// recompute suffixSum for current a[i]
int rightGE = suffixSum[a[i]];
// Compute prefix sum for ≤ a[i]
int leftLE = 0;
for (int k = 0; k <= a[i]; k++) {
leftLE += prefix[k];
}
if (rightGE >= a[i] || leftLE >= a[i]) {
specialCount++;
}
// Now add this element to prefix for future
prefix[a[i]]++;
}
cout << specialCount << endl;
return 0;
}