#include #include #include #include #include // using namespace std; // using namespace atcoder; // using mint = modint998244353; template struct Binomial { std::vector fact, invfact; Binomial(int nn) : fact(nn, 1), invfact(nn, 1) { for (int i = 0; i < nn - 1; i++) fact[i + 1] = fact[i] * (i + 1); invfact[nn - 1] = fact[nn - 1].inv(); for (int i = nn - 2; i >= 0; i--) invfact[i] = invfact[i + 1] * (i + 1); } Mint operator()(int x, int y) const { if (x < 0 || y < 0 || x - y < 0) return 0; return fact[x] * invfact[y] * invfact[x - y]; } }; int main() { using namespace std; const int mod = 67; using mint = atcoder::static_modint; using mat_t = array; auto get_mat = [&] { mat_t m; for (auto& e : m) { int x; cin >> x; e = x; } return m; }; auto a = get_mat(); auto b = get_mat(); auto mat_mul = [](mat_t m1, mat_t m2) { return mat_t{ m1[0] * m2[0] + m1[1] * m2[2], m1[0] * m2[1] + m1[1] * m2[3], m1[2] * m2[0] + m1[3] * m2[2], m1[2] * m2[1] + m1[3] * m2[3], }; }; auto cond = [&] { for (int p0 = 0; p0 < mod; ++p0) { for (int p1 = 0; p1 < mod; ++p1) { for (int p2 = 0; p2 < mod; ++p2) { for (int p3 = 0; p3 < mod; ++p3) { if (p0 * p3 - p1 * p2 == 0) continue; mat_t p{p0, p1, p2, p3}; auto pa = mat_mul(p, a); auto bp = mat_mul(b, p); if (pa == bp) return true; } } } } return false; }(); cout << (cond ? "Yes" : "No") << endl; }