#include<iostream>
#include<string>

using namespace std;

class dice
{
public:
  int d[6];
  int t;
  int n;
  int e;
  int s;
  int w;
  int b;
  
  dice();
  int init();
  int move(char c);
  int runCmd(string cmd);
  int toTop(int x);
  int toFront(int x);
  int top();
  int right();
  int left();
  int back();
  int front();
  int bottom();
};

dice::dice()
{
  t = 0;
  n = 4;
  e = 2;
  s = 1;
  w = 3;
  b = 5;
}

int dice::init()
{
  for(int i = 0; i < 6; i++ )
    {
      cin >> d[i];
    }
  return 0;
}

int dice::move(char c)
{
  int tmp;
  
  if ( c == 'E' )
    {
      tmp = t;
      t = w;
      w = b;
      b = e;
      e = tmp;
    }
  else if ( c == 'N' )
    {
      tmp = t;
      t = s;
      s = b;
      b = n;
      n = tmp;
    }
  else if ( c == 'S' )
    {
      tmp = t;
      t = n;
      n = b;
      b = s;
      s = tmp;
    }
  else if ( c == 'W' )
    {
      tmp = t;
      t = e;
      e = b;
      b = w;
      w = tmp;
    }

  return 0;
}

int dice::runCmd(string cmd)
{
  for ( int i = 0; i < (int)cmd.size(); i++ )
    move( cmd[i] );

  return 0;
}

int dice::toTop(int x)
{
  int pt;
  
  for ( int i = 0; i < 6; i++ )
    {
      if ( d[i] == x )
        {
          pt = i;
          break;
        }
    }
  
  if ( n == pt )
    {
      runCmd( "S" );
    }
  else if ( e == pt )
    {
      runCmd( "W" );
    }
  else if ( s == pt )
    {
      runCmd( "N" );
    }
  else if ( w == pt )
    {
      runCmd( "E" );
    }
  else if ( b == pt )
    {
      runCmd("NN");
    }

  return 0;
}

int dice::toFront(int x)
{
  int pt;
  
  for ( int i = 0; i < 6; i++ )
    {
      if ( d[i] == x )
        {
          pt = i;
          break;
        }
    }
  
  if ( n == pt )
    {
      runCmd( "ESWESW" );
    }
  else if ( e == pt )
    {
      runCmd( "NWS" );
    }
  else if ( w == pt )
    {
      runCmd( "ESW" );
    }
}

int dice::top()
{
  return d[t];
}

int dice::right()
{
  return d[e];
}

int dice::left()
{
  return d[w];
}

int dice::back()
{
  return d[n];
}

int dice::front()
{
  return d[s];
}

int dice::bottom()
{
  return d[b];
}

int main()
{
  dice d1, d2;

  string cmd[] = { "ENW",
                   "ENW",
                   "ENW",
                   "ENW",
                   "S",
                   "ENW",
                   "ENW",
                   "ENW",
                   "ENWNN",
                   "ENW",
                   "ENW",
                   "ENW",
                   "ENWSE",
                   "ENW",
                   "ENW",
                   "ENW",
                   "ENWWW",
                   "ENW",
                   "ENW",
                   "ENW",
                   "ENWENN",
                   "ENW",
                   "ENW",
                   "ENW" };
  
  d1.init();
  d2.init();

  for ( int i = 0; i < 24; i++ )
    {
      d1.runCmd( cmd[i] );
  
      if ( d1.right() == d2.right() &&
           d1.left() == d2.left() &&
           d1.top() == d2.top() &&
           d1.front() == d2.front() &&
           d1.back() == d2.back() &&
           d1.bottom() == d2.bottom() )
        {
          cout << "Yes" << endl;
          return 0;
        }
    }
  
  cout << "No" << endl;
  
  return 0;
}

Measured memory_bytes: 1204