n=int(input())
rec=[list(map(int,input().split())) for i in range(n)]
a=(min([rec[i][0] for i in range(n)]),min([rec[i][1] for i in range(n)]))
c=(max([rec[i][2] for i in range(n)]),max([rec[i][3] for i in range(n)]))
s=sum([(rec[i][2]-rec[i][0])*(rec[i][3]-rec[i][1]) for i in range(n)])
print('YES') if s==(c[1]-a[1])*(c[0]-a[0])and(c[0]-a[0]==c[1]-a[1]) else print('NO')
#include<iostream>
using namespace std;
int maxx,maxy,sum;
int main()
{
int n,x1,y1,x2,y2,i,minx=31405,miny=31405;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x1>>y1>>x2>>y2;
sum+=(x2-x1)*(y2-y1);
minx=min(minx,x1);
miny=min(miny,y1);
maxx=max(maxx,x2);
maxy=max(maxy,y2);
}
if(maxx-minx==maxy-miny&&(maxx-minx)*(maxy-miny)==sum)
cout<<"YES";
else cout<<"NO";
return 0;
}
//不重叠,所以直接比较面积就可以
46A - Ball Game | 114A - Cifera |
776A - A Serial Killer | 25B - Phone numbers |
1633C - Kill the Monster | 1611A - Make Even |
1030B - Vasya and Cornfield | 1631A - Min Max Swap |
1296B - Food Buying | 133A - HQ9+ |
1650D - Twist the Permutation | 1209A - Paint the Numbers |
1234A - Equalize Prices Again | 1613A - Long Comparison |
1624B - Make AP | 660B - Seating On Bus |
405A - Gravity Flip | 499B - Lecture |
709A - Juicer | 1358C - Celex Update |
1466B - Last minute enhancements | 450B - Jzzhu and Sequences |
1582C - Grandma Capa Knits a Scarf | 492A - Vanya and Cubes |
217A - Ice Skating | 270A - Fancy Fence |
181A - Series of Crimes | 1638A - Reverse |
1654C - Alice and the Cake | 369A - Valera and Plates |