#include<bits/stdc++.h>
using namespace std;
const int MAXN = 505;
struct City {
int x, y;
int gamma;
int closestCity;
};
double distance(int x1, int y1, int x2, int y2) {
return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
}
bool cmpGamma(const City& a, const City& b) {
return a.gamma < b.gamma;
}
int main() {
int N;
cin >> N;
vector cities(N + 1);
cities[0].x = cities[0].y = 0;
for (int i = 1; i <= N; ++i) {
cin >> cities[i].x >> cities[i].y;
}
for (int i = 1; i <= N; ++i) {
double minDist = distance(cities[i].x, cities[i].y, 0, 0);
cities[i].closestCity = 0;
for (int j = 1; j <= N; ++j) {
if (i != j) {
double dist = distance(cities[i].x, cities[i].y, cities[j].x, cities[j].y);
if (dist < minDist || (dist == minDist && cities[j].gamma < cities[cities[i].closestCity].gamma)) {
minDist = dist;
cities[i].closestCity = j;
}
}
}
}
vector<bool> visited(N + 1, false);
queue<int> q;
q.push(0);
visited[0] = true;
cities[0].gamma = 1;
while (!q.empty()) {
int curr = q.front();
q.pop();
for (int i = 1; i <= N; ++i) {
if (cities[i].closestCity == curr && !visited[i]) {
visited[i] = true;
cities[i].gamma = cities[curr].gamma + 1;
q.push(i);
}
}
}
sort(cities.begin() + 1, cities.end(), cmpGamma);
long long gammaSum = 0;
for (int i = 1; i <= N; ++i) {
gammaSum += cities[i].gamma;
}
if (gammaSum % 2 != 0) {
cout << "No" << endl;
return 0;
}
long long targetSum = gammaSum / 2;
long long currentSum = 0;
bool found = false;
for (int i = 1; i <= N; ++i) {
currentSum += cities[i].gamma;
if (currentSum == targetSum) {
found = true;
break;
} else if (currentSum > targetSum) {
break;
}
}
cout << (found ? "Yes" : "No") << endl;
return 0;
}