#include using namespace std; using vc = std::vector ; using mat = vector; const int p = 67; mat prod(const mat& A, const mat& B) { mat ret(A.size(), vc(B[0].size())); for (int i = 0; i < A.size(); i ++) { for (int j = 0; j < B[0].size(); j ++) { ret[i][j] = 0; for (int k = 0; k < A[0].size(); k ++) { ret[i][j] += A[i][k] * B[k][j]; } } } return ret; } int main () { mat A(2, vc(2)), B(2, vc(2)); for (auto& a : A) { for (auto& b : a) { cin >> b; } } for (auto& a : B) { for (auto& b : a) { cin >> b; } } mat X(4, vc(4, 0)); for (int i = 0; i < 2; i ++) { for (int j = 0; j < 2; j ++) { for (int k = 0; k < 2; k ++) { int p = i * 2 + j; int q = i * 2 + k; int r = k * 2 + j; X[p][q] += A[k][j]; X[p][r] -= B[i][k]; } } } for (auto& a : X) { for (auto& b : a) { b += p * p; b %= p; } } vc iv(p, 0); for (int i = 1; i < p; i ++) { for (int j = 1; j < p; j ++) { if ((i * j) % p == 1) { iv[i] = j; iv[j] = i; } } } for (int i = 0; i < 4; i ++) { int r = i; while (r < 4 && (X[r][i] == 0)) r ++; if (r == 4) { puts("No"); return 0; } int b = X[r][i]; for (int j = 3; j >= i; j --) { swap(X[i][j], X[r][j]); X[i][j] = (X[i][j] * iv[b]) % p; } for (int x = 0; x < 4; x ++) { if (x == i) continue; for (int j = 3; j >= i; j --) { X[x][j] -= X[x][i] * X[i][j]; if (X[x][j] < 0) { X[x][j] = (-X[x][j]) % p; X[x][j] = p - X[x][j]; } X[x][j] %= p; } } } puts("Yes"); }