import Data.List

data Dice = Dice {top :: Int,
                  south :: Int,
                  east :: Int,
                  west :: Int,
                  north :: Int,
                  bottom :: Int} deriving Eq
fromList :: [Int] -> Dice
fromList [t,s,e,w,n,b] = Dice t s e w n b

allState :: Dice -> [Dice]
allState d = nub $ [rotateAll d' direction |
                    d' <- map (rotateAll d) ["","N","S","W","E","NN"],
                    direction <- inits "ccc" ]

rotate :: Dice -> Char -> Dice
rotate d 'N' = d {bottom = north d,
                  north = top d,
                  top = south d,
                  south = bottom d}
rotate d 'S' = d {bottom = south d,
                  south = top d,
                  top = north d,
                  north = bottom d}
rotate d 'E' = d {bottom = east d,
                  east = top d,
                  top = west d,
                  west = bottom d}
rotate d 'W' = d {bottom = west d,
                  west = top d,
                  top = east d,
                  east = bottom d}
rotate d 'c' = d {north = west d,
                  west = south d,
                  south = east d,
                  east = north d}
rotate d 'C' = rotateAll d "ccc"

rotateAll :: Dice -> [Char] -> Dice
rotateAll d [] = d
rotateAll d (op:ops) = rotateAll (rotate d op) ops

main :: IO ()
main = do
  d1 <- getDice
  d2 <- getDice
  putStrLn $ if diceEq d1 d2 then "Yes" else "No"
    where
      getDice = fmap (fromList . map read . words) getLine
      diceEq d1 d2 = not . null $ intersect (allState d1) (allState d2)