#include <stdio.h>

struct Dice{
    int num[6];
};

void north_roll(struct Dice *dice);
void south_roll(struct Dice *dice);
void east_roll(struct Dice *dice);
void west_roll(struct Dice *dice);
void tate_roll(struct Dice *dice);
void yoko_roll(struct Dice *dice);
void yoko_reverse_roll(struct Dice *dice);

int main() {

    int i,j,k,n,flag,flag1,flag2;
    flag = 0;
    flag1 = 0;
    flag2 = 0;
    struct Dice dice1;
    struct Dice dice2;

    for(i = 0; i < 6; i++){
        scanf("%d", &n);
        dice1.num[i] = n;
    }

    for(i = 0; i < 6; i++){
        scanf("%d", &n);
        dice2.num[i] = n;
    }

    while(1){
        for(i = 1; i < 5; i++){
            if(dice1.num[0] == dice2.num[0] && dice1.num[1] == dice2.num[1] && dice1.num[2] == dice2.num[2] && dice1.num[3] == dice2.num[3] && dice1.num[4] == dice2.num[4] && dice1.num[5] == dice2.num[5]){
                flag = 1;
                break;
            }
            for (k = 0; k < i; k++){
                north_roll(&dice2);
            }
            for(j = 0; j < 4; j++){
                if(dice1.num[0] == dice2.num[0] && dice1.num[1] == dice2.num[1] && dice1.num[2] == dice2.num[2] && dice1.num[3] == dice2.num[3] && dice1.num[4] == dice2.num[4] && dice1.num[5] == dice2.num[5]){
                    flag = 1;
                    break;
                }
                yoko_roll(&dice2);
            }
            for (k = 0; k < i; k++){
                south_roll(&dice2);
            }
        }
        //printf("%d %d %d %d %d %d" ,dice2.num[0],dice2.num[1],dice2.num[2],dice2.num[3],dice2.num[4],dice2.num[5]);
        for(i = 1; i < 5; i++){
            if(dice1.num[0] == dice2.num[0] && dice1.num[1] == dice2.num[1] && dice1.num[2] == dice2.num[2] && dice1.num[3] == dice2.num[3] && dice1.num[4] == dice2.num[4] && dice1.num[5] == dice2.num[5]){
                flag = 1;
                break;
            }
            for (k = 0; k < i; k++){
                east_roll(&dice2);
            }
            for(j = 0; j < 4; j++){
                if(dice1.num[0] == dice2.num[0] && dice1.num[1] == dice2.num[1] && dice1.num[2] == dice2.num[2] && dice1.num[3] == dice2.num[3] && dice1.num[4] == dice2.num[4] && dice1.num[5] == dice2.num[5]){
                    flag = 1;
                    break;
                }
                yoko_roll(&dice2);
            }
            for (k = 0; k < i; k++){
                west_roll(&dice2);
            }
        }
        break;
    }

    if(flag == 1){
        printf("Yes\n");
    }else{
        printf("No\n");
    }

    return 0;
}

void north_roll(struct Dice *dice) {
    int exp = dice->num[0];
    dice->num[0] = dice->num[1];
    dice->num[1] = dice->num[5];
    dice->num[5] = dice->num[4];
    dice->num[4] = exp;
}

void south_roll(struct Dice *dice) {
    int exp = dice->num[0];
    dice->num[0] = dice->num[4];
    dice->num[4] = dice->num[5];
    dice->num[5] = dice->num[1];
    dice->num[1] = exp;
}

void east_roll(struct Dice *dice) {
    int exp = dice->num[0];
    dice->num[0] = dice->num[3];
    dice->num[3] = dice->num[5];
    dice->num[5] = dice->num[2];
    dice->num[2] = exp;
}

void west_roll(struct Dice *dice) {
    int exp = dice->num[0];
    dice->num[0] = dice->num[2];
    dice->num[2] = dice->num[5];
    dice->num[5] = dice->num[3];
    dice->num[3] = exp;
}

void tate_roll(struct Dice *dice) {
    int exp = dice->num[0];
    dice->num[0] = dice->num[1];
    dice->num[1] = dice->num[5];
    dice->num[5] = dice->num[4];
    dice->num[4] = exp;
}

void yoko_roll(struct Dice *dice) {
    int exp = dice->num[1];
    dice->num[1] = dice->num[2];
    dice->num[2] = dice->num[4];
    dice->num[4] = dice->num[3];
    dice->num[3] = exp;
}

void yoko_reverse_roll(struct Dice *dice) {
    int exp = dice->num[1];
    dice->num[1] = dice->num[3];
    dice->num[3] = dice->num[4];
    dice->num[4] = dice->num[2];
    dice->num[2] = exp;
}


Measured memory_bytes: 2112