#include #define rep(i,a,b) for(int i=int(a);i P; int INF = (1LL << 30) - 1; int MOD = 1e9+7; main(){ int field[110][110] = {}; int nodep[110][110] = {}; int N; cin >> N; int V[N][4]; rep(i,0,N){ cin >> V[i][0] >> V[i][1] >> V[i][2] >> V[i][3]; field[ V[i][0] ][ V[i][1] ]++; field[ V[i][2] ][ V[i][3] ]++; int dif = (V[i][0] - V[i][2] + 3)/2 + (V[i][1] - V[i][3] + 3)*2; nodep[ V[i][0] ][ V[i][1] ] += dif; nodep[ V[i][2] ][ V[i][3] ] += (dif&2||dif&8 ? dif/2 : dif*2); } while(1){ bool update = 0; rep(i,1,101)rep(j,1,101){ if(field[i][j] == 1){ update = 1; int dy[] = {-1,1,0,0} , dx[] = {0,0,-1,1}; int ind = (int)log2(nodep[i][j]); int np = nodep[i][j]; field[ i + dy[ind] ][ j + dx[ind] ]--; field[i][j]--; nodep[ i + dy[ind] ][ j + dx[ind] ] -= (np&2||np&8 ? np/2 : np*2); nodep[i][j] = 0; } } if(!update)break; } //最大値が3以上ならNG int maxi = 0; rep(i,1,101)rep(j,1,101){ maxi = max(maxi, field[i][j]); } if(maxi >= 3) cout << "NO" << endl; else cout << "YES" << endl; }