#include #include #include using namespace std; int n; vector> edges[111][111]; int visited[111][111]; int dfs(int r, int c, int prer = -1, int prec = -1) { if (visited[r][c] == 2) { return 0; } else if (visited[r][c] == 1) { return 1; } visited[r][c] = 1; int res = 0; for (auto& edge : edges[r][c]) { int tor = edge.first, toc = edge.second; if (prer == tor && prec == toc) continue; res += dfs(tor, toc, r, c); } visited[r][c] = 2; return res; } int main() { cin >> n; for (int i = 0; i < n; i++) { int r0, c0, r1, c1; cin >> r0 >> c0 >> r1 >> c1; edges[r0][c0].emplace_back(r1, c1); edges[r1][c1].emplace_back(r0, c0); } for (int i = 0; i < 101; i++) { for (int j = 0; j < 101; j++) { if (!visited[i][j]) { int res = dfs(i, j); if (res > 1) { cout << "NO" << endl; return 0; } } } } cout << "YES" << endl; }