#include <cstdio>
#include <cstring>
#include <algorithm>
#define MAXN 100010
using namespace std;

int n;
int d[MAXN];
int a[MAXN];
int a0[4][MAXN];

namespace Fenwick{
	int c[MAXN];

	void clear(){ memset(c,0,sizeof c); }

	void add(int x,int v){
		while(x<=n){
			c[x]+=v;
			x+=x&(-x);
		}
	}

	int sum(int x){
		int res=0;
		while(x){
			res+=c[x];
			x-=x&(-x);
		}
		return res;
	}
}

int main(){
#ifdef DEBUG
	freopen("E.in","r",stdin);
#endif
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a0[1][i]);
	for(int i=1;i<=n;i++) scanf("%d",&a0[2][i]);
	for(int i=1;i<=n;i++) scanf("%d",&a0[3][i]);
	int t0=0,t1=0;
	for(int i=1;i<=n;i++){
		int v1=min(a0[1][i],a0[3][i]),v3=max(a0[1][i],a0[3][i]);
		a[i]=v1/3+1;
		if(v3!=v1+2 || v1%3!=1 || a0[2][i]!=v1+1 || (a[i]-i)%2!=0){
			puts("No");
			return 0;
		}
		if(v1==a0[3][i]){
			if(i&1) t1^=1;
			else t0^=1;
		}
	}
	for(int i=n-((n&1)^1);i>=1;i-=2){
		int temp=Fenwick::sum(a[i]);
		Fenwick::add(a[i],1);
		if(temp&1) t0^=1;
	}
	Fenwick::clear();
	for(int i=n-(n&1);i>=2;i-=2){
		int temp=Fenwick::sum(a[i]);
		Fenwick::add(a[i],1);
		if(temp&1) t1^=1;
	}
	if(t0 || t1) puts("No");
	else puts("Yes");
	return 0;
}
