#include using namespace std; #define rep(i, a, b) for (int i =a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define fo(i, n) rep(i, 0, n) #define F first #define S second #define MP make_pair #define PB push_back typedef long long ll; typedef vector vi; typedef pair pii; typedef vector> vpii; typedef vector> vvi; typedef vector vll; typedef pair pll; typedef vector> vpll; typedef vector> vvll; template struct Point { typedef Point P; T x, y; explicit Point(T x=0, T y=0) : x(x), y(y) {} P operator +(P p) const { return P(x+p.x, y+p.y); } P operator -(P p) const { return P(x-p.x, y-p.y); } P operator *(T p) const { return P(x*p, y*p); } P operator /(T p) const { return P(x/p, y/p); } T cross(P p) const { return x*p.y - y*p.x; } T dist2() const { return x*x + y*y; } T dist() const { return sqrt((double)dist2()); } P unit() const { return *this/dist(); } P perp() const { return P(-y, x); } }; typedef Point P; double lineDist(const P& a, const P& b, const P& p) { return (double) (b-a).cross(p-a)/(b-a).dist(); } signed main() { cin.tie(0)->sync_with_stdio(0); int n, p; cin >> n >> p; vector

v(n); set v_set; fo(i, n) { int x, y; cin >> x >> y; v[i] = P(x, y); v_set.insert({v[i].x, v[i].y}); } map, int> s; fo(i, n) { for (int j=i+1; j sig = {{d.x*ord, d.y*ord}, {c.x*ord, c.y*ord}}; if (s.count(sig) == 0) s[sig] = 0; s[sig]++; } } int best = 0; for (auto [k, v]: s) { best = max(v, best); } if (200*best/n >= p) cout << "YES" << endl; else cout << "NO" << endl; }