#include <iostream>
#include <string>
using namespace std;

class DICE {
public:
    int top, front, right, left, back, bottom;
    void setValue (int *diceValue);
    void rotate (char order);
    int showValue (int direction);
};

void DICE::setValue (int *diceValue) {
    DICE::top    = diceValue[0];
    DICE::front  = diceValue[1];
    DICE::right  = diceValue[2];
    DICE::left   = diceValue[3];
    DICE::back   = diceValue[4];
    DICE::bottom = diceValue[5];
}

void DICE::rotate (char order) {
    int tmp;
    switch (order) {
        case 'E':
            tmp = DICE::right;
            DICE::right  = DICE::top;
            DICE::top    = DICE::left;
            DICE::left   = DICE::bottom;
            DICE::bottom = tmp;
            break;
        case 'N':
            tmp = DICE::back;
            DICE::back   = DICE::top;
            DICE::top    = DICE::front;
            DICE::front  = DICE::bottom;
            DICE::bottom = tmp;
            break;
        case 'S':
            tmp = DICE::front;
            DICE::front  = DICE::top;
            DICE::top    = DICE::back;
            DICE::back   = DICE::bottom;
            DICE::bottom = tmp;
            break;
        case 'W':
            tmp = DICE::left;
            DICE::left   = DICE::top;
            DICE::top    = DICE::right;
            DICE::right  = DICE::bottom;
            DICE::bottom = tmp;
            break;
        case 'R': // for rotation right to left
            tmp = DICE::left;
            DICE::left  = DICE::front;
            DICE::front = DICE::right;
            DICE::right = DICE::back;
            DICE::back  = tmp;
            break;
        default:
            break;
    }
}

int DICE::showValue (int direction) {
    int value;
    switch (direction) {
        case 0:
            value = DICE::top;
            break;
        case 1:
            value = DICE::front;
            break;
        case 2:
            value = DICE::right;
            break;
        case 3:
            value = DICE::left;
            break;
        case 4:
            value = DICE::back;
            break;
        case 5:
            value = DICE::bottom;
            break;
        default:
            break;
    }
    return value;
}

bool solve (int *diceValue1, int *diceValue2) {
    bool result = false;
    DICE dice1;
    DICE dice2;
    dice1.setValue(diceValue1);
    dice2.setValue(diceValue2);
    for (int e=0; e<4; e++) {
        for (int n=0; n<4; n++) {
            for (int r=0; r<4; r++) {
                if
                (
                     dice1.top == dice2.top
                  && dice1.front == dice2.front
                  && dice1.right == dice2.right
                  && dice1.left == dice2.left
                  && dice1.back == dice2.back
                  && dice1.bottom == dice2.bottom
                )
                {
                    result = true;
                    return result;
                }
                dice2.rotate('R');
            }
            dice2.rotate('N');
        }
        dice2.rotate('E');
    }
    return result;
}

int main () {
    // input
    int diceValue1[6];
    for (int i=0; i<6; i++) {
        cin >> diceValue1[i];
    }

    int diceValue2[6];
    for (int i=0; i<6; i++) {
        cin >> diceValue2[i];
    }

    // solve
    bool result = solve (diceValue1, diceValue2);

    // output
    if (result) {
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }
}


Measured memory_bytes: 3136