using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ITP1_11_C2
{
    class Program
    {
        static void Main(string[] args)
        {
            Cast cast = new Cast();
            TryCoincide tryCoincide = new TryCoincide();

            // 2つのサイコロの目の配列が与えられる。
            // 2つのサイコロが同一のものだったらYes、そうでなければNoを表示するプログラム。

            int[] dice1 = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            int[] dice2 = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            string judge = "unknown";
            int count = 0;

            // dice2を回転させ、dice1の上面に来る値と同じ値をdice2の上面に持ってくる

            for (int i = 0; i < 4; i++)                 // まずN方向に回転させる(最大4回)
            {
                if (dice1[0] != dice2[0])
                {
                    cast.diceCast(dice2, 'N');
                }
            }
            
            for (int i = 0; i < 4; i++)                 // 次にE方向に回転させる(最大4回)
            {
                if (dice1[0] != dice2[0])
                {
                    cast.diceCast(dice2, 'E');
                }
            }

            // 回転させたサイコロについて、以下の処理を行う

            if (dice1[0] == dice2[0] && dice1[5] == dice2[5])                                   // 上下の面[0],[5]が一致したとき
            {
                tryCoincide.sideCoincide(dice1, dice2);                                         // 配列が一致するまで側面方向に回転するメソッド
                if (dice2[1] == dice1[1] && dice2[2] == dice1[2] && dice2[3] == dice1[3] && dice2[4] == dice1[4])
                {
                    judge = "Yes";                                                              // すべての側面の配列が一致するところがあれば、同じサイコロ
                }
                else
                {
                    judge = "No";
                }
            }
            else if (dice1[0] == dice2[0])                                                      // 上面[0]のみが一致したとき
            {
                count = tryCoincide.countCoincide(dice2, count);                                        //上面[0]と等しい面がいくつあるかを数えるメソッド

                if (count >= 4)
                {
                    judge = "Yes";
                }
                else
                {
                    judge = "No";
                }
            }
            else
            {
                judge = "No";                                                                   // 上下の面が一致しないとき
            }

            Console.WriteLine(judge);
        }
    }
    public class Cast                                           // サイコロの回転のさせ方が記述されたクラス。
    {
        public void diceCast(int[] dice, char way)
        {

            int zero = dice[0];                                 // dice[0]の値を保存しておく変数zero

            if (way == 'E')
            {
                dice[0] = dice[3];
                dice[3] = dice[5];
                dice[5] = dice[2];
                dice[2] = zero;
            }

            else if (way == 'N')
            {
                dice[0] = dice[1];
                dice[1] = dice[5];
                dice[5] = dice[4];
                dice[4] = zero;
            }
        }
        public void diceTurn(int[] dice, char way)
        {
            int one = dice[1];

            if (way == 'E')
            {
                dice[1] = dice[2];
                dice[2] = dice[4];
                dice[4] = dice[3];
                dice[3] = one;
            }
        }
    }
    public class TryCoincide                                                        // 各面を一致させるためのメソッドがあるクラス
    {
        public int countCoincide(int[] dice2, int count)                           // 上面[0]と等しい面がいくつあるかを数える
        {
            for (int i = 1; i < 6; i++)
            {
                if (dice2[i] == dice2[0])
                {
                    count++;
                }
            }
            return count;
        }

        public void sideCoincide(int[] dice1, int[] dice2)                          // すべての配列が一致するまで側面方向に回転させる(最大4回)
        {
            Cast cast = new Cast();
            for (int i = 0; i < 4; i++)
            {
                cast.diceTurn(dice2, 'E');

                if (dice2[1] == dice1[1] && dice2[2] == dice1[2] && dice2[3] == dice1[3] && dice2[4] == dice1[4])
                {
                    break;
                }
            }
        }
    }
}



Measured memory_bytes: 20336