#include<bits/stdc++.h>
using namespace std;
const int N=600;
struct pt{
int x,y,id;
}city[N];
int cnt=0;
int half;
struct edge{
int u,v,nxt;
}e[N*N];
int head[N];
void add_edge(int u,int v){
e[++cnt]=(edge){u,v,head[u]};
head[u]=cnt;
}
double dis(pt a,pt b){
int dx=abs(a.x-b.x),dy=abs(a.y-b.y);
return sqrt((dx*dx)+(dy*dy));
}
bool cmp(pt a,pt b){
pt cap=(pt){0,0};
return dis(cap,a)<dis(cap,b);
}
int de[N];
int n;
bool vis[N];
void dfs(int x,int dep){
if(vis[x])return;
vis[x]=1;
de[x]=dep;
for(int i=head[x];i;i=e[i].nxt){
dfs(e[i].v,dep+1);
}
}
bool dfs1(int x,int tot){
if(tot>half)return 0;
if(tot==half)return 1;
for(int i=x+1;i<=n;i++){
if(dfs1(i,tot+de[i]))return 1;
}
return 0;
}
int main(){
cin>>n;
city[0]=(pt){0,0,0};
for(int i=1;i<=n;i++){
cin>>city[i].x>>city[i].y;
city[i].id=i;
}
sort(city+1,city+n+1,cmp);
for(int i=1;i<=n;i++){
int minj=0;
int minid=0;
double mind=dis(city[0],city[i]);
for(int j=0;j<i;j++){
double disnow=dis(city[i],city[j]);
if(disnow<mind||(disnow==mind&&city[j].id<minid)){
mind=disnow;
minid=city[j].id;
minj=j;
}
}
add_edge(i,minj);
add_edge(minj,i);
}
dfs(0,1);
for(int i=0;i<=n;i++){
half+=de[i];
}
if(half%2!=0){
cout<<"No";
return 0;
}
half/=2;
if(dfs1(-1,0)){
cout<<"Yes";
}
else
{
cout<<"No";
}
}