#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define ll long long int
#define vv vector<long long>
#define dq deque<long long>
#define mpp map<long long,long long>
#define ms multiset<long long>
#define ss set<long long>
#define vpp vector<pair<long long, long long>>
#define MOD 1000000007
#define YES cout<<"YES"<<endl
#define NO cout<<"NO"<<endl
#define all(a) a.begin(),a.end()
#define sort_rev(a) sort(a.rbegin(),a.rend())
#define all_n for(int i=0;i<n;i++)
#define print(a) for(auto it1:a)cout<<it1<<" "
#define print_pair(a) for(auto it1:a)cout<<it1.first<<" "<<it1.second<<endl
#define scan(a,n) for(int i=0;i<n;i++)cin>>a[i]
void requisite(){
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
}
void solve(){
ll n;cin>>n;
vv v(n);scan(v,n);
ms m1,m2;
ll count=0;
for (int i = 0; i < n; ++i) {
m1.insert(v[i]);
}
for (int i = 0; i < n; ++i) {
auto it = m1.find(v[i]);
m1.erase(it);
// print(m1);cout<<endl;
// print(m2);cout<<endl;
it=m1.lower_bound(v[i]);
ll d1= distance(it,m1.end());
it=m2.upper_bound(v[i]);
ll d2= distance(m2.begin(),it);
// cout<<d1<<" "<<d2<<endl;
if (d1>=v[i] or d2>=v[i])count++;
m2.insert(v[i]);
// cout<<count<<" count"<<endl;
}
cout<<count<<endl;
}
int main() {
requisite();
ll t=1;
// cin>>t;
while (t--){
solve();
}
return 0;
}