Language: C++

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class Dice{
public:
	long top, front, right, left, back, bottom;
	//Dice(long top, long front);
	Dice(long top, long front, long right);
	void setData(long top, long front, long right);
	void north();
	void south();
	void west();
	void east();
	void showTop();
	void guessRightFromTopAndFront(long top, long front, long *right);
	void rightTurn();
	void ChangeTop(long top);
};

/*
Dice::Dice(long top, long front)
{
	long r = 0;
	this->top = top;
	this->front = front;
	if (top == 1){
		if (front == 2) r = 3;
		else if (front == 5) r = 4;
		else if (front == 3) r = 5;
		else if (front == 4) r = 2;
	}
	else if (top == 6){
		if (front == 2) r = 4;
		else if (front == 5) r = 3;
		else if (front == 3) r = 2;
		else if (front == 4) r = 5;
	}
	else if (top == 2){
		if (front == 1) r = 4;
		else if (front == 6) r = 3;
		else if (front == 3) r = 1;
		else if (front == 4) r = 6;
	}
	else if (top == 5){
		if (front == 1) r = 3;
		else if (front == 6) r = 4;
		else if (front == 3) r = 6;
		else if (front == 4) r = 1;
	}
	else if (top == 3){
		if (front == 1) r = 2;
		else if (front == 6) r = 5;
		else if (front == 2) r = 6;
		else if (front == 5) r = 1;
	}
	else if (top == 4){
		if (front == 1) r = 5;
		else if (front == 6) r = 2;
		else if (front == 2) r = 1;
		else if (front == 5) r = 6;
	}
	this->right = r;
	this->left = 7 - r;
	this->back = 7 - front;
	this->bottom = 7 - top;
}
*/

Dice::Dice(long top, long front, long right){
	this->top = top;
	this->front = front;
	this->right = right;
	this->left = 7 - right;
	this->back = 7 - front;
	this->bottom = 7 - top;
}

void Dice::setData(long top, long front, long right){
	this->top = top;
	this->front = front;
	this->right = right;
	this->left = 7 - right;
	this->back = 7 - front;
	this->bottom = 7 - top;
}

void Dice::north(){
	long sv[6];
	sv[0] = this->front;
	sv[1] = this->bottom;
	sv[2] = this->right;
	sv[3] = this->left;
	sv[4] = this->top;
	sv[5] = this->back;

	this->top = sv[0];
	this->front = sv[1];
	this->right = sv[2];
	this->left = sv[3];
	this->back = sv[4];
	this->bottom = sv[5];
}

void Dice::south(){
	long sv[6];
	sv[0] = this->back;
	sv[1] = this->top;
	sv[2] = this->right;
	sv[3] = this->left;
	sv[4] = this->bottom;
	sv[5] = this->front;

	this->top = sv[0];
	this->front = sv[1];
	this->right = sv[2];
	this->left = sv[3];
	this->back = sv[4];
	this->bottom = sv[5];
}

void Dice::west(){
	long sv[6];
	sv[0] = this->right;
	sv[1] = this->front;
	sv[2] = this->bottom;
	sv[3] = this->top;
	sv[4] = this->back;
	sv[5] = this->left;

	this->top = sv[0];
	this->front = sv[1];
	this->right = sv[2];
	this->left = sv[3];
	this->back = sv[4];
	this->bottom = sv[5];
}

void Dice::east(){
	long sv[6];
	sv[0] = this->left;
	sv[1] = this->front;
	sv[2] = this->top;
	sv[3] = this->bottom;
	sv[4] = this->back;
	sv[5] = this->right;

	this->top = sv[0];
	this->front = sv[1];
	this->right = sv[2];
	this->left = sv[3];
	this->back = sv[4];
	this->bottom = sv[5];
}

void Dice::showTop(){
	cout << this->top << endl;
}

void Dice::guessRightFromTopAndFront(long top, long front, long *right){
	if (top == 1){
		if (front == 2) *right =  3;
		else if (front == 5) *right =  4;
		else if (front == 3) *right =  5;
		else if (front == 4) *right =  2;
	}
	else if (top == 6){
		if (front == 2) *right =  4;
		else if (front == 5) *right =  3;
		else if (front == 3) *right =  2;
		else if (front == 4) *right =  5;
	}
	else if (top == 2){
		if (front == 1) *right =  4;
		else if (front == 6) *right =  3;
		else if (front == 3) *right =  1;
		else if (front == 4) *right =  6;
	}
	else if (top == 5){
		if (front == 1) *right =  3;
		else if (front == 6) *right =  4;
		else if (front == 3) *right =  6;
		else if (front == 4) *right =  1;
	}
	else if (top == 3){
		if (front == 1) *right =  2;
		else if (front == 6) *right =  5;
		else if (front == 2) *right =  6;
		else if (front == 5) *right =  1;
	}
	else if (top == 4){
		if (front == 1) *right =  5;
		else if (front == 6) *right =  2;
		else if (front == 2) *right =  1;
		else if (front == 5) *right =  6;
	}
}

void Dice::rightTurn(){
	long vs[4];
	vs[0] = this->left;
	vs[1] = this->right;
	vs[2] = this->front;
	vs[3] = this->back;
	this->left = vs[2];
	this->right = vs[3];
	this->front = vs[1];
	this->back = vs[0];
}

void Dice::ChangeTop(long top){
	if (top == this->top) return;
	else if (top == this->back) Dice::south();
	else if (top == this->front) Dice::north();
	else if (top == this->left) Dice::east();
	else if (top == this->right) Dice::west();
	else for (long i = 0; i < 2; i++) Dice::north();
	return;
}

int main(){
	long n;
	cin >> n;
	vector< vector<long> > roll(n);
	Dice d[n];
	for (long i = 0; i < n; i++){
		for (long j = 0; j < 6; j++){
			cin >> roll[i][j];
		}
		d[i] = new Dice(roll[i][0], roll[i][1], roll[i][2]);
	}
	long c = 1;
	for (long i = 1; i < n; i++){
		d[i].ChangeTop(roll[0][0]);
		for (long j = 0; j < 3; j++){
			if (d[1].front == d[i].front) d[i].rightTurn();
		}
		if (d[1].right != d[i].right) c = 0;
	}
	if (c == 1) cout << "Yes" << endl;
	else cout << "No" << endl;
	return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:226:17: error: no matching function for call to 'Dice::Dice()'
  226 |         Dice d[n];
      |                 ^
a.cc:71:1: note: candidate: 'Dice::Dice(long int, long int, long int)'
   71 | Dice::Dice(long top, long front, long right){
      | ^~~~
a.cc:71:1: note:   candidate expects 3 arguments, 0 provided
a.cc:6:7: note: candidate: 'constexpr Dice::Dice(const Dice&)'
    6 | class Dice{
      |       ^~~~
a.cc:6:7: note:   candidate expects 1 argument, 0 provided
a.cc:6:7: note: candidate: 'constexpr Dice::Dice(Dice&&)'
a.cc:6:7: note:   candidate expects 1 argument, 0 provided
a.cc:231:67: error: no match for 'operator=' (operand types are 'Dice' and 'Dice*')
  231 |                 d[i] = new Dice(roll[i][0], roll[i][1], roll[i][2]);
      |                                                                   ^
a.cc:6:7: note: candidate: 'constexpr Dice& Dice::operator=(const Dice&)'
    6 | class Dice{
      |       ^~~~
a.cc:6:7: note:   no known conversion for argument 1 from 'Dice*' to 'const Dice&'
a.cc:6:7: note: candidate: 'constexpr Dice& Dice::operator=(Dice&&)'
a.cc:6:7: note:   no known conversion for argument 1 from 'Dice*' to 'Dice&&'