#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int a[N], dp[N], n;
int main() {
  srand(time(NULL));
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> a[i];
  stack<int> st;
  for (int i = n; i > 0; --i) {
    int temp = (st.size() == 0) ? 0 : max(0, dp[st.top()] - 1);
    while (!st.empty() && a[st.top()] < a[i]) {
      dp[i] = max({dp[i], dp[st.top()], ++temp});
      if (dp[st.top()] > temp) temp = dp[st.top()];
      st.pop();
    }
    st.push(i);
  }
  int ans = *max_element(dp + 1, dp + n + 1);
  cout << ans << '\n';
}
