#include <bits/stdc++.h>
using namespace std;
const int mxN = 1e6 + 100;
int pos[mxN];
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> a(n + 1, 0), vc(n, 0), cp;
for(int i = 1; i <= n; ++i){
cin >> a[i];
}
cp = a;
sort(cp.begin() + 1, cp.end());
for(int i = 0; i < n; ++i){
vc[i] = cp[i + 1];
pos[cp[i + 1]] = i;
}
int i = n, ans = 0;
while(1){
int oi = i;
set<int> st = {a[i]};
for(int j = i - 1; j >= 1; --j){
if(pos[a[j + 1]] != pos[a[j]] + 1){
i = j;
break;
}else{
st.insert(a[j]);
}
}
int l = i + 1, r = i;
vector<int> nvc;
for(int i = 0; i < mxN; ++i) pos[i] = -5;
for(int j = 0; j < (int) vc.size(); ++j){
if(st.find(vc[j]) == st.end()){
nvc.push_back(vc[j]);
pos[nvc.back()] = (int) nvc.size() - 1;
}
}
ans += 1;
if(nvc.size() == 0) break;
swap(vc, nvc);
}
cout << ans << "\n";
return 0;
}