#include<bits/stdc++.h>
using namespace std;
const int N=3e5+5;
int n,a[N],pre[N],bk[N];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    pre[1]=a[1];
    bk[n]=a[n];
    for(int i=2;i<=n;i++) pre[i]=max(pre[i-1],a[i]);
    for(int i=n-1;i>=1;i--) bk[i]=min(bk[i+1],a[i]);
    bool flag=true;
    for(int i=1;i<=n;i++)
        if((a[i]&1)^(i&1)) flag=false;
    for(int i=2;i<n;i++)
        if(a[i]!=i&&a[i-1]!=i-1&&a[i+1]!=i+1) flag=false;
    for(int i=1;i<n;i++)
        if(a[i]==i&&a[i+1]==i+1&&pre[i]!=i) flag=false;
    for(int i=2;i<n;i++)
        if(a[i]!=i&&pre[i-1]>a[i]&&bk[i+1]<a[i]) flag=false;
    for(int i=1;i<=n;i++)
        if(i<a[i]&&bk[i+1]>a[i]) flag=false;
    for(int i=n-1;i>=1;i--)
        if(i>a[i]&&pre[i-1]<a[i]) flag=false;
    for(int i=2;i<=n;i++) pre[i]=min(pre[i-1],a[i]);
    for(int i=n-1;i>=1;i--) bk[i]=max(bk[i+1],a[i]);
    for(int i=1;i<=n;i++)
        if(i<a[i]&&pre[i-1]>a[i]) flag=false;
    for(int i=n-1;i>=1;i--)
        if(i>a[i]&&bk[i+1]<a[i]) flag=false;
    printf(flag?"Yes\n":"No\n");
}
