#include <stdio.h>
//#define DEBUG
#define YES 1
#define NO 0

typedef struct dice{
	int TOP ;
	int FRONT ;
	int RIGHT ;
	int LEFT ;
	int BACK ;
	int BOTTOM ;
}DICE;

#ifdef DEBUG
void showdice(DICE *);				//???????¢??????¨
#endif

void dicescan(DICE *);			//?????????????????????????????????

void rotateN(DICE *);			//N?????¢
void rotateS(DICE *);			//S?????¢
void rotateE(DICE *);			//E?????¢
void rotateW(DICE *);			//W?????¢
void rotateCW(DICE *);			//TOP-BOTTOM????????¨??????????¨???????????????¢

int judge (int);				//????????¨?????¨????????????????????°????????¨?????¢??°

int main(void){

	DICE DICE1 = {1,2,3,4,5,6};
	DICE DICE2 = {1,2,3,4,5,6};
	int flag = 1 ;				//??????????¢??????§?????????judge??¢??°???flag???0??????????????????
	int i = 0 ;					//???????????°


	dicescan(&DICE1);
	dicescan(&DICE2);

	/*DICE1????????¬??¨???????????¢?????????*/
	/*??????DICE1.TOP???DICE2????????¢???????????¢?????\??????????????????????????¢??????*/

	if(DICE1.TOP == DICE2.TOP){
		flag = judge(YES);
		/*nop*/
	}
	else if(DICE1.TOP == DICE2.FRONT){
		rotateN(&DICE2);		//?????¢??????N?????¢
	}
	else if(DICE1.TOP == DICE2.RIGHT){
		rotateW(&DICE2);		//?????¢??????W?????¢
	}
	else if(DICE1.TOP == DICE2.LEFT){
		rotateE(&DICE2);		//?????¢??????E?????¢
	}
	else if(DICE1.TOP == DICE2.BACK){
		rotateS(&DICE2);		//?????¢??????S?????¢
	}
	else if(DICE1.TOP == DICE2.BOTTOM ){
		rotateN(&DICE2);
		rotateN(&DICE2);		//?????¢??????N?????¢2???
	}
	else{
		flag = judge(NO);				//???????????????????????°?????´????????????????????¨????????????
			}
	/*????????????????????????flag???1(??????????¢???????????????????)?????´??????????????????*/
	/*?????¨?????¶??????TOP????????´*/

	/*?????¢????????????*/
	if(flag && ( DICE1.BOTTOM != DICE2.BOTTOM) ){
		flag = judge(NO);				//?????¢????????´??????????????°?????????????????¨?¢????
	}

	/*?????¨?????¶??????TOP??¨BOTTOM????????´*/

	while(flag){
		if( DICE1.FRONT == DICE2.FRONT){	//FRONT????????´??????????¬???????????????????
			break;
		}
		else{
			rotateCW(&DICE2);			//?????´??????????????°CW?????¢????????£????????????
			i++;
		}
		if( i > 3){						//4????????????????????´??????????????°
			flag = judge(NO);			//DICE1.FRONT??????????????????????????§?????????????????¨?¢????
		}
	}

	/*?????¨?????¶??????TOP???FRONT???BOTTOM????????´*/
	/*??????????????????????????? Dice I ??¨????????¨?¨????????????????????????¨????????¢?????°????????°??????????????¨????????????*/
	/*????????\????????????????????¢?????????????????????????????§??????????????¢?????°??????????????????*/

	if(flag){
		if( (DICE1.RIGHT == DICE2.RIGHT) && (DICE1.LEFT == DICE2.LEFT) && (DICE1.BACK == DICE2.BACK) ){
			flag = judge(YES);
		}
		else{
			flag = judge(NO);
		}
	}

	/*??????????????§flag???1??????????????£?????????????????¨??????*/

	if(flag){
		printf("error\n");
	}

	return 0;
}

void rotateN(DICE *rotate){
	int tmp = 0;

	tmp = rotate -> BACK ;
	rotate -> BACK = rotate -> TOP ;
	rotate -> TOP = rotate -> FRONT ;
	rotate -> FRONT = rotate -> BOTTOM ;
	rotate -> BOTTOM = tmp ;
}
void rotateS(DICE *rotate){
	/*N?????¢???3???*/
	rotateN(rotate);
	rotateN(rotate);
	rotateN(rotate);
}

void rotateE(DICE *rotate){
	int tmp = 0;

	tmp = rotate -> TOP ;
	rotate -> TOP = rotate -> LEFT ;
	rotate -> LEFT = rotate -> BOTTOM ;
	rotate -> BOTTOM = rotate -> RIGHT ;
	rotate -> RIGHT  = tmp ;
}
void rotateW(DICE *rotate){
	/*E?????¢???3???*/
	rotateE(rotate);
	rotateE(rotate);
	rotateE(rotate);
}

void rotateCW(DICE *rotate){
	int tmp = 0;

	tmp = rotate -> BACK ;
	rotate -> BACK = rotate -> LEFT;
	rotate -> LEFT = rotate -> FRONT ;
	rotate -> FRONT = rotate -> RIGHT;
	rotate -> RIGHT = tmp ;
}

void dicescan(DICE *scan){
	scanf("%d",&scan -> TOP);
	scanf("%d",&scan -> FRONT);
	scanf("%d",&scan -> RIGHT);
	scanf("%d",&scan -> LEFT);
	scanf("%d",&scan -> BACK);
	scanf("%d",&scan -> BOTTOM);
}

int judge (int i){
	if(i){				//?????°???YES?????´???
		printf("Yes\n");
		return 0;
	}
	else{				//?????°???NO?????´???
		printf("No\n");
		return 0;
	}
}

Measured memory_bytes: 580