#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <stack>
using namespace std;

int num[100001];
int Lmax[100001];
int Rmin[100001];
int main(){
    int N;
    cin>>N;
    for (int i=1;i<=N;i++){
        cin>>num[i];
    }

    stack<pair<int,int>> sta;

    for (int i=1;i<=N;i++){
        if (sta.empty()){
            sta.push(make_pair(num[i],num[i]));
        }
        else{
            pair<int,int> top;
            bool isok=false;
            while (!sta.empty()){
                top=sta.top();
                if (num[i]>=top.second){
                    sta.push(make_pair(num[i],num[i]));
                    isok=true;
                    break;
                }
                else{
                    sta.pop();
                }
            }
            if (!isok)
                sta.push(make_pair(min(num[i],top.first),max(num[i],top.second)));
        }
    }
    cout<<sta.size();
}

36%感觉没什么问题