#include #include #include using namespace atcoder; using namespace std; #define REP(i, m, n) for (int64_t i = (int64_t)(m); i < (int64_t)(n); i++) #define rep(i, n) REP(i, 0, n) #define RREP(i, m, n) for (int64_t i = (int64_t)(m - 1); i >= (int64_t)(n); i--) #define rrep(i, n) RREP(i, n, 0) #define all(v) v.begin(), v.end() using vi = vector; using vvi = vector; using vb = vector; using vvb = vector; using vc = vector; using vvc = vector; using vs = vector; using vvs = vector; using vd = vector; using vvd = vector; using pii = pair; using tii = tuple; using vp = vector; using vvp = vector; using vt = vector; using vvt = vector; using mint = modint; using vm = vector; using vvm = vector; using mii = map; using pdi = pair; using tdi = tuple; const int64_t INF = 2e18; const vp dxy = {{0, -1}, {-1, 0}, {0, 1}, {1, 0}}; template bool chmax(T &a, const T &b) { if (a < b) { a = b; return true; } return false; } template bool chmin(T &a, const T &b) { if (a > b) { a = b; return true; } return false; } int64_t to_int(char c) { return c - 'A'; } int64_t n = 3; bool check_inner(vvc &s, int64_t x, int64_t y) { for (auto [dx, dy] : dxy) { int64_t next_x = x + dx, next_y = y + dy; if (next_x < 0 || next_x >= n || next_y < 0 || next_y >= n) continue; if (s[x][y] == s[next_x][next_y]) return false; } return true; } bool check(vvc &s) { rep(i, n) rep(j, n) { if (!check_inner(s, i, j)) return false; } return true; } int main() { vvc s(n, vc(n)); rep(i, n) rep(j, n) cin >> s[i][j]; if (check(s)) cout << "Yes" << endl; else cout << "No" << endl; }