#abc135b. [abc135_b]0 or 1 Swap

[abc135_b]0 or 1 Swap

题目描述

我们有一个序列 pp = {p1,p2,...,pNp_1,\\ p_2,\\ ...,\\ p_N},它是 {1,2,...,N1,\\ 2,\\ ...,\\ N} 的一个排列。

你可以最多执行一次以下操作:选择整数 iijj (1leqi<jleqN)(1 \\leq i < j \\leq N),交换 pip_ipjp_j。注意,你也可以选择不执行此操作。

如果你能以这种方式将 pp 排序为升序,则输出 YES,否则输出 NO

约束条件

  • 输入的所有值都是整数。
  • 2leqNleq502 \\leq N \\leq 50
  • pp 是 {1,2,...,N1,\\ 2,\\ ...,\\ N} 的一个排列。

输入

输入数据从标准输入读入,数据格式如下:

NN p1p_1 p2p_2 ...... pNp_N

输出

如果你能按照题目描述的方式将 pp 排序为升序,则输出 YES,否则输出 NO

示例输入 1

5
5 2 3 4 1

示例输出 1

YES

通过交换 p1p_1p5p_5,你可以将 pp 排序为升序。

示例输入 2

5
2 4 3 5 1

示例输出 2

NO

在这种情况下,交换任意两个元素都无法将 pp 排序为升序。

示例输入 3

7
1 2 3 4 5 6 7

示例输出 3

YES

pp 已经按照升序排序,所以不需要进行任何操作。