#include <bits/stdc++.h>
using namespace std;
inline int in() {
  int32_t x;
  scanf("%d", &x);
  return x;
}
inline string getStr() {
  char ch[1000000];
  scanf("%s", ch);
  return ch;
}
const int MAX_N = 2e5 + 1;
int kl[MAX_N];
int res = 0;
int live[MAX_N];
int a[MAX_N];
int main() {
  stack<int> st;
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) a[i] = in();
  for (int i = 0; i < n; i++) {
    while (!st.empty()) {
      if (a[i] >= a[st.top()] || kl[st.top()] >= live[st.top()])
        st.pop();
      else
        break;
    }
    if (st.empty())
      live[i] = 1e9;
    else {
      kl[st.top()]++;
      live[i] = kl[st.top()];
      res = max(res, kl[st.top()]);
    }
    st.push(i);
  }
  cout << res << endl;
}
