import sys

MAXN = 100001
arr = [0] * MAXN
stack = [[0, 0] for _ in range(MAXN)] # 記錄魚的大小和所需輪數

def main():
    input_buffer = sys.stdin.read().splitlines()
    output_buffer = []

    line_index = 0
    while line_index < len(input_buffer):
        n = int(input_buffer[line_index])
        line_index += 1
        values = list(map(int, input_buffer[line_index].strip().split()))
        line_index += 1

        # 直接將值賦給 arr,避免不必要的列表操作
        arr[:n] = values
        ans = compute(n, arr, stack)  # 將必要的變量作為參數傳遞
        # 輸出格式化
        output_buffer.extend(f"{ans}")

    sys.stdout.write("\n".join(output_buffer))

# arr[0 .. n-1] 代表魚的體重
# stack 為單調棧
def compute(n, arr, stack):
    r = 0
    ans = 0
    # 反向遍歷: 棧底小-棧頂大
    for i in range(n-1, -1, -1):
        curTurns = 0
        # 彈出
        while r > 0 and arr[i] > stack[r-1][0]:
            curTurns = max(curTurns + 1, stack[r-1][1])
            r -= 1
        # 壓棧
        stack[r][0] = arr[i]
        stack[r][1] = curTurns
        r += 1
        ans = max(ans, curTurns)
    return ans


if __name__ == "__main__":
    main()