#include <iostream>
using namespace std;

void EAST(int* dice) {
    int copy = dice[0];
    dice[0] = dice[3];
    dice[3] = dice[5];
    dice[5] = dice[2];
    dice[2] = copy;
}

void NORTH(int* dice) {
    int copy = dice[0];
    dice[0] = dice[1];
    dice[1] = dice[5];
    dice[5] = dice[4];
    dice[4] = copy;
}

void SOUTH(int* dice) {
    int copy = dice[0];
    dice[0] = dice[4];
    dice[4] = dice[5];
    dice[5] = dice[1];
    dice[1] = copy;
}

void WEST(int* dice) {
    int copy = dice[0];
    dice[0] = dice[2];
    dice[2] = dice[5];
    dice[5] = dice[3];
    dice[3] = copy;
}

void ROTATE(int* dice, int index) {
    switch(index) {
        case 1 : break;
        case 2 : {
            int copy = dice[1];
            dice[1] = dice[2];
            dice[2] = dice[4];
            dice[4] = dice[3];
            dice[3] = copy;
            break;
        }
        case 4 : {
            int copy = dice[1];
            dice[1] = dice[4];
            dice[4] = copy;
            copy = dice[2];
            dice[2] = dice[3];
            dice[3] = copy;
            break;
        }
        case 3 : {
            int copy = dice[1];
            dice[1] = dice[3];
            dice[3] = dice[4];
            dice[4] = dice[2];
            dice[2] = copy;
            break;
        }
    }
}

int main(void) {
    int dice1[6];
    int dice2[6];
    int dice2sub[6];
    
    for(int i = 0; i < 6; ++i) {
        cin >> dice1[i];
    }
    for(int i = 0; i < 6; ++i) {
        cin >> dice2[i];
        dice2sub[i] = dice2[i];
    }
    
    for(int i = 0; i < 4; ++i) {
        EAST(dice1);
        int check = 0;
        for(int j = 0; j < 6; ++j) {
            dice2[j] = dice2sub[j];
        }
        int start = dice2[0];
        while(dice2[0] != dice1[0]) {
            EAST(dice2);
            if(dice2[0] == dice1[0])   break;
            NORTH(dice2);
            if(dice2[0] == start) {
                break;
            }
        }
        
        int index = 1;
        while(true) {
            if(dice2[index] == dice1[1])   break;
            ++index;
            if(index == 5) {
                break;
            }
        }
        ROTATE(dice2, index);
        for(int i = 0; i < 6; ++i) {
            if(dice1[i] == dice2[i]) {
                ++check;
            }
        }
        if(check == 6) {
            cout << "Yes" << endl;
            return 0;
        }
    }
    for(int i = 0; i < 4; ++i) {
        NORTH(dice1);
        int check = 0;
        for(int j = 0; j < 6; ++j) {
            dice2[j] = dice2sub[j];
        }
        int start = dice2[0];
        while(dice2[0] != dice1[0]) {
            EAST(dice2);
            if(dice2[0] == dice1[0])   break;
            NORTH(dice2);
            if(dice2[0] == start) {
                break;
            }
        }
        
        int index = 1;
        while(true) {
            if(dice2[index] == dice1[1])   break;
            ++index;
            if(index == 5) {
                break;
            }
        }
        ROTATE(dice2, index);
        for(int i = 0; i < 6; ++i) {
            if(dice1[i] == dice2[i]) {
                ++check;
            }
        }
        if(check == 6) {
            cout << "Yes" << endl;
            return 0;
        }
    }
    cout << "No" << endl;
    
    return 0;
}


Measured memory_bytes: 3112