#include #include #include #define ll long long #define ull unsigned long long #define mpa make_pair #define pb push_back #define ff first #define ss second #define boost ios_base::sync_with_stdio(0) #define forp(i,a,b) for(ll i=a;i<=b;i++) #define rep(i,n) for(ll i=0;i=0;i--) #define forn(i,a,b) for(ll i=a;i>=b;i--) #define fre freopen("input.txt","r",stdin),freopen("output.txt","w",stdout) #define all(c) (c).begin(),(c).end() #define tr(c,i) for(typeof((c).begin()) i = (c).begin(); i != (c).end(); #define sc(x) scanf("%lld",&x) #define clr(x,val) memset(x,val,sizeof(x)) #define pr(x) printf("%lld\n",x) using namespace std; template inline void umax(T &a,T b) { if(a inline void umin(T &a,T b) { if(a>b) a = b ; } template inline T abs(T a) { return a>0 ? a : -a; } template inline T gcd(T a,T b) { return __gcd(a, b); } template inline T lcm(T a,T b) { return a/gcd(a,b)*b; } ll modpow(ll a,ll n,ll temp) { ll res=1,y=a; while(n>0) { if(n&1)res=(res*y)%temp; y=(y*y)%temp; n/=2; } return res%temp; } //ll a[100005],n,dp[1000005]={0},b[1000005],c[100005],dp1[1000005],bit[100005]; //ll vis[100005]; //vector adj[100005]; #define sz(x) x.size() ll ison(ll mask,ll pos) { return (mask&(1< vi; typedef vector vvi; typedef pair pii; ll cbit(ll n) { ll k=0; while(n) n&=(n-1),k++; return k; } ll nbit(ll n) { ll k=0; while(n) n/=2,k++; return k; } //ll b1[1001][1001],b2[1001][1001],g1[1001][1001],g2[1001][1001],w[1001][1001]; //bool a1[101][101],a2[102][101],a3[103][101]; ll mod=1e9+7; int sgn(ll x) { return x < 0 ? -1 : !!x; } const double eps = 1e-7; const double pi = acos(-1.0); //pair a[1000005]; /* void upd(ll ind,ll val){ if(ind==0) return; while(ind<=n){ bit[ind]+=val; ind+=(ind&-ind); } } ll qu(ll ind){ ll k=0; while(ind>0){ k+=bit[ind]; ind-=(ind&-ind); } return k; }*/ //ll tree[500005]; //vector > b; //vector adj[100005]; /*Tarjan incomplette void dfs(ll s){ vis[s]=1; for(ll i=0;i >ver; //string s; /*ll tree[200005]; ll a[100005]; void build(ll node,ll ss,ll se) { if(ss==se) tree[node]=a[ss]; else { ll mid=(ss+se)/2; build(2*node,ss,mid); build(2*node+1,mid+1,se); tree[node]=tree[2*node]&tree[2*node+1]; } }*/ /*void upd(ll node,ll ss,ll se,ll idx,ll val) { if(ss==se) a[idx]=val,tree[node]=a[idx]; else { ll mid=(ss+se)/2; if(ss<=idx && idx<=mid) upd(2*node,ss,mid,idx,val); else upd(2*node+1,mid+1,se,idx,val); tree[node]=tree[node*2]+tree[node*2+1]; } }*/ /*ll query(ll node,ll ss,ll se,ll l,ll r) { if(r help; //ll dp[1ll<<11]; //ll csum[100005],b[100005],help[100005]; //vector adj[1005]; //vector ans; /*ll kmp[1000005]; ll zee[1000005]; void kmpm(string p){ ll i,j,k=0,l; kmp[0]=0; j=0; for(i=1;i zFunction(vector &s) { int n = (ll) s.size(); vector z (n); for (int i=1, l=0, r=0; i r) l = i, r = i+z[i]-1; } return z; }*/ //map help; /*ll chk(ll val,ll n,ll m){ ll t=0,i; val--; for(i=1;i<=n;i++) t+=min(m,val/i); return t; }*/ /*ll size[100005]; void init(ll n) {for(int i=1;i<=n;i++) a[i]=i;} ll root(ll x) { while(a[x]!=x) { a[x]=a[a[x]]; x=a[x]; } return x; } ll u1(ll x,ll y) { int p=root(x); int q=root(y); a[p]=a[q]; } */ /*ll tree[100005]; void update(ll idx, ll val){ while(idx < 100005){ tree[idx] = max(tree[idx], val); idx += (idx & (-idx)); } } ll query(ll idx){ ll ret = 0; while(idx > 0){ ret = max(ret, tree[idx]); idx -= (idx & (-idx)); } return ret; }*/ //pair >p[5005];[10004] /* //(topsort) vector adj[100005]; vector fino; ll vis[100005]; void dfs(ll v){ vis[v]=1; for(ll i=0;i p[10005]; /*ll a[100005]; ll bit[100005]; ll lmr[1000005]; ll pi[1000005]; ll ans[1000005]; void upd(ll ind,ll val){ if(ind==0) return; while(ind<=n){ bit[ind]+=val; ind+=(ind&-ind); } } ll qu(ll ind){ ll k=0; while(ind>0){ k+=bit[ind]; ind-=(ind&-ind); } return k; } pair,ll> >query[1000005]; */ //pair a[1000005]; /* void upd(ll ind,ll val){ if(ind==0) return; while(ind<=n){ bit[ind]+=val; ind+=(ind&-ind); } } ll qu(ll ind){ ll k=0; while(ind>0){ k+=bit[ind]; ind-=(ind&-ind); } return k; }*/ //ll tree[500005]; //vector > b; //vector adj[100005]; /*Tarjan incomplette void dfs(ll s){ vis[s]=1; for(ll i=0;i >ver; //string s; /*ll tree[200005]; ll a[100005]; void build(ll node,ll ss,ll se) { if(ss==se) tree[node]=a[ss]; else { ll mid=(ss+se)/2; build(2*node,ss,mid); build(2*node+1,mid+1,se); tree[node]=tree[2*node]&tree[2*node+1]; } }*/ /*void upd(ll node,ll ss,ll se,ll idx,ll val) { if(ss==se) a[idx]=val,tree[node]=a[idx]; else { ll mid=(ss+se)/2; if(ss<=idx && idx<=mid) upd(2*node,ss,mid,idx,val); else upd(2*node+1,mid+1,se,idx,val); tree[node]=tree[node*2]+tree[node*2+1]; } }*/ /*ll query(ll node,ll ss,ll se,ll l,ll r) { if(r help; //ll dp[1ll<<11]; //ll csum[100005],b[100005],help[100005]; //vector adj[1005]; //vector ans; /*ll kmp[1000005]; ll zee[1000005]; void kmpm(string p){ ll i,j,k=0,l; kmp[0]=0; j=0; for(i=1;i zFunction(vector &s) { int n = (ll) s.size(); vector z (n); for (int i=1, l=0, r=0; i r) l = i, r = i+z[i]-1; } return z; }*/ //map help; /*ll chk(ll val,ll n,ll m){ ll t=0,i; val--; for(i=1;i<=n;i++) t+=min(m,val/i); return t; }*/ /*ll size[100005]; void init(ll n) {for(int i=1;i<=n;i++) a[i]=i;} ll root(ll x) { while(a[x]!=x) { a[x]=a[a[x]]; x=a[x]; } return x; } ll u1(ll x,ll y) { int p=root(x); int q=root(y); a[p]=a[q]; } */ /*ll tree[100005]; void update(ll idx, ll val){ while(idx < 100005){ tree[idx] = max(tree[idx], val); idx += (idx & (-idx)); } } ll query(ll idx){ ll ret = 0; while(idx > 0){ ret = max(ret, tree[idx]); idx -= (idx & (-idx)); } return ret; }*/ //pair >p[5005];[10004] /* //(topsort) vector adj[100005]; vector fino; ll vis[100005]; void dfs(ll v){ vis[v]=1; for(ll i=0;i p[10005]; /*ll a[100005]; ll bit[100005]; ll lmr[1000005]; ll pi[1000005]; ll ans[1000005]; void upd(ll ind,ll val){ if(ind==0) return; while(ind<=n){ bit[ind]+=val; ind+=(ind&-ind); } } ll qu(ll ind){ ll k=0; while(ind>0){ k+=bit[ind]; ind-=(ind&-ind); } return k; } pair,ll> >query[1000005]; */ /*ll root(ll x,ll typ) { while(a[typ][x]!=x) { a[typ][x]=a[typ][a[typ][x]]; x=a[typ][x]; } return x; } void u1(ll typ,ll x,ll y) { ll p=root(x,typ); ll q=root(y,typ); a[typ][q]=a[typ][p]; } */ //////////////// ll a[300005],b[300005]; int main(){ ll i,j,k,l,n; set x,y; cin>>n; while(n--){ ll p,q; cin>>p>>q; x.insert(p); y.insert(q); } if(x.size()==1|| y.size()==1) cout<<"YES"; else cout<<"NO"; }