#arc082b. [arc082_b]Derangement

[arc082_b]Derangement

问题描述

给定一个由 1122,..,NN 组成的排列 p1,p2,...,pNp_1,p_2,...,p_N。你可以执行下列操作任意次数(可能为零):

操作:交换排列中相邻的两个元素。

你希望对于所有 1iN1≤i≤N,有 piip_i ≠ i。找出实现这一目标所需的最小操作次数。

约束条件

  • 2N1052≤N≤10^5
  • p1,p2,..,pNp_1,p_2,..,p_N1,2,..,N1,2,..,N 的一个排列。

输入格式

输入通过标准输入给出,格式如下:

NN p1p_1 p2p_2 .. pNp_N

输出格式

打印所需的最小操作次数。


示例输入1

5
1 4 3 5 2

示例输出1

2

交换 1144,然后交换 1133。此时 pp 变为 4,3,1,5,24,3,1,5,2 并满足条件。这是可能的最小次数,因此答案是 22


示例输入2

2
1 2

示例输出2

1

交换 1122 即可满足条件。


示例输入3

2
2 1

示例输出3

0

初始时已经满足条件。


示例输入4

9
1 2 4 9 5 8 7 3 6

示例输出4

3