#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<queue>
using namespace std;
int bug;
int eq;
int search();
int plan_a();
int plan_b();
queue<int> q;
int flag[7][7][7][7][7][7];
int a1,b1,c1,d1,e1,f1;
int trag[6];
int b[6];
int store[100];
void clear();
int num;
int main()
{
int a[6];
int i,j;
for(i=0;i<6;i++)
{
trag[i]=i+1;
}
bug=1;
eq=1;
while((scanf("%d",&a[0]))!=EOF)
{
bug=1;
eq=1;
q.push(a[0]);
for(i=1;i<6;i++)
{
scanf("%d",&a[i]);
q.push(a[i]);
}
flag[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]]=1;
while(bug==1&&!q.empty())
{
search();
}
if(bug==0)
{
store[num]=1;
num=num+1;
}
else
{
store[num]=0;
num=num+1;
}
clear();
}
for(i=0;i<num;i++)
{
if(store[i]==1)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
int search()
{
a1=q.front();
q.pop();
b1=q.front();
q.pop();
c1=q.front();
q.pop();
d1=q.front();
q.pop();
e1=q.front();
q.pop();
f1=q.front();
q.pop();
plan_a();
plan_b();
}
int plan_a()
{
int i;
b[0]=d1;
b[1]=a1;
b[2]=c1;
b[3]=e1;
b[4]=b1;
b[5]=f1;
if(flag[b[0]][b[1]][b[2]][b[3]][b[4]][b[5]]==0)
{
for(i=0;i<6;i++)
{
if(b[i]!=trag[i])
{
eq=0;
break;
}
}
if(eq==1)
{
bug=0;
return 0;
}
else
{
for(i=0;i<6;i++)
{
q.push(b[i]);
}
flag[b[0]][b[1]][b[2]][b[3]][b[4]][b[5]]=1;
}
}
eq=1;
}
int plan_b()
{
int i;
b[0]=a1;
b[1]=e1;
b[2]=b1;
b[3]=d1;
b[4]=f1;
b[5]=c1;
if(flag[b[0]][b[1]][b[2]][b[3]][b[4]][b[5]]==0)
{
for(i=0;i<6;i++)
{
if(b[i]!=trag[i])
{
eq=0;
break;
}
}
if(eq==1)
{
bug=0;
return 0;
}
else
{
for(i=0;i<6;i++)
{
q.push(b[i]);
}
flag[b[0]][b[1]][b[2]][b[3]][b[4]][b[5]]=1;
}
}
eq=1;
}
void clear()
{
while(!q.empty())
{
q.pop();
}
for(a1=1;a1<7;a1++)
{
for(b1=1;b1<7;b1++)
{
for(c1=1;c1<7;c1++)
{
for(d1=1;d1<7;d1++)
{
for(e1=1;e1<7;e1++)
{
for(f1=1;f1<7;f1++)
{
flag[a1][b1][c1][d1][e1][f1]=0;
}
}
}
}
}
}
}