跳跃的排列
题号:NC229194
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

很喜欢排列,这次他有一个长为 的排列 。由于他音游玩多了,所以他想让排列也跳跃起来。他定义一次排列的跳跃为:
令 b_i 表示最大的  满足  ,则 。最后对于所有 ,将 a_i 赋值为 b_i
他想重复上述操作若干次。若操作 次和操作 次序列保持不变,那么跳跃停止,跳跃次数为
他想知道排列会跳跃多少次,请你来帮他计算一下。

输入描述:

第一行, 输入一个数 
第二行输入 个数,第 i 个数表示 a_i

输出描述:

输出排列的跳跃次数。
示例1

输入

复制
4
4 1 3 2

输出

复制
1

说明

经过 1 轮操作后,序列变成 \text{4 2 3 2},经过 2 轮操作后,序列仍然是 \text{4 2 3 2},因此排列跳跃了 {1} 次。
示例2

输入

复制
10
1 9 2 6 8 7 4 3 5 10

输出

复制
1

说明

经过 1 轮操作后,所有数都变成了 \text{10},经过 2 轮操作后,序列仍然全都是 \text{10},因此排列跳跃了 {1} 次。
示例3

输入

复制
8
8 7 6 5 4 3 2 1

输出

复制
0

说明

经过 1 轮操作后,序列仍然是 \text{8 7 6 5 4 3 2 1},因此排列没有进行跳跃。

备注:

对于奇数编号的数据,满足给定的排列形如 
对于 的数据,
对于 的数据,
对于 的数据,