Problem:
Score : 1200 points

Problem Statement

You are given a permutation of 1,2,...,N: p_1,p_2,...,p_N. Determine if the state where p_i=i for every i can be reached by performing the following operation any number of times:

Choose three elements p_{i-1},p_{i},p_{i+1} (2\leq i\leq N-1) such that p_{i-1}>p_{i}>p_{i+1} and reverse the order of these three.

Constraints

3 \leq N \leq 3 × 10^5

p_1,p_2,...,p_N is a permutation of 1,2,...,N.

Input

Input is given from Standard Input in the following format:

N
p_1
:
p_N

Output

If the state where p_i=i for every i can be reached by performing the operation, print Yes; otherwise, print No.

Sample Input 1

5
5
2
1
4
3

Sample Output 1

Yes

The state where p_i=i for every i can be reached as follows:

Reverse the order of p_1,p_2,p_3. The sequence p becomes 1,2,5,4,3.

Reverse the order of p_3,p_4,p_5. The sequence p becomes 1,2,3,4,5.

Sample Input 2

4
3
2
4
1

Sample Output 2

No

Sample Input 3

7
3
2
1
6
5
4
7

Sample Output 3

Yes

Sample Input 4

6
5
3
4
1
2
6

Sample Output 4

No

Solution in PHP7 (7.0.15) (judge verdict: Time Limit Exceeded)

<?php

function input_and_explode() {
    return explode(' ', trim(fgets(STDIN)));
}

$N = input_and_explode()[0];

for ($i = 0; $i < $N; $i++) {
    $p[] = input_and_explode();
}

for ($j = 0; $j < $N - 2; $j++) {
    $changed = false;
    for ($k = 0; $k < $N - 2 - $j; $k++) {
        if ($p[$k] > $p[$k + 1] && $p[$k + 1] > $p[$k + 2]) {
            list($p[$k], $p[$k + 2]) = [$p[$k + 2], $p[$k]];
            $changed = true;
        }
    }
    if (!$changed) {
        break;
    }
}

$sorted = true;

for ($i = 0; $i < $N - 1; $i++) {
    if ($p[$i] > $p[$i + 1]) {
        $sorted = false;
        break;
    }
}

echo $sorted ? "Yes\n" : "No\n";