B - 0 or 1 Swap Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 200

問題文

{1,\ 2,\ ...,\ N} を並び替えた数列 p = {p_1,\ p_2,\ ...,\ p_N} があります。

あなたは一度だけ、整数 \ i,\ j \ (1 \leq i < j \leq N) を選んで \ p_i\ \ p_j\ を入れ替える操作を行うことができます。操作を行わないことも可能です。

p を昇順にすることができるなら YES を、できないならば NO を出力してください。

制約

  • 入力は全て整数である。
  • 2 \leq N \leq 50
  • p は {1,\ 2,\ ...,\ N} を並び替えた数列である。

入力

入力は以下の形式で標準入力から与えられる。

N
p_1 p_2 ... p_N

出力

p を昇順にすることができるなら YES を、できないならば NO を出力せよ。


入力例 1

5
5 2 3 4 1

出力例 1

YES

p_1p_5 を入れ替えることで p を昇順にできます。


入力例 2

5
2 4 3 5 1

出力例 2

NO

この場合、どのような操作を行っても p を昇順にすることはできません。


入力例 3

7
1 2 3 4 5 6 7

出力例 3

YES

p が最初から昇順なので、操作を行う必要はありません。

Score : 200 points

Problem Statement

We have a sequence p = {p_1,\ p_2,\ ...,\ p_N} which is a permutation of {1,\ 2,\ ...,\ N}.

You can perform the following operation at most once: choose integers i and j (1 \leq i < j \leq N), and swap p_i and p_j. Note that you can also choose not to perform it.

Print YES if you can sort p in ascending order in this way, and NO otherwise.

Constraints

  • All values in input are integers.
  • 2 \leq N \leq 50
  • p is a permutation of {1,\ 2,\ ...,\ N}.

Input

Input is given from Standard Input in the following format:

N
p_1 p_2 ... p_N

Output

Print YES if you can sort p in ascending order in the way stated in the problem statement, and NO otherwise.


Sample Input 1

5
5 2 3 4 1

Sample Output 1

YES

You can sort p in ascending order by swapping p_1 and p_5.


Sample Input 2

5
2 4 3 5 1

Sample Output 2

NO

In this case, swapping any two elements does not sort p in ascending order.


Sample Input 3

7
1 2 3 4 5 6 7

Sample Output 3

YES

p is already sorted in ascending order, so no operation is needed.