#include using namespace std; typedef long long ll; typedef pair pll; typedef long double ld; typedef pair pdd; #define vec vector #define For(i, a, n) for(ll i=(ll)a;i pairoperator+(const pair&a, const pair&b){ return {a.first + b.first, a.second + b.second}; } template pairoperator-(const pair&a, const pair&b){ return {a.first - b.first, a.second - b.second}; } template ostream&operator<<(ostream&os, const pair&c){ return os<<"("< basic_ostream&operator<<(basic_ostream&os, const C&c){ for(auto itr=begin(c);itr!=end(c);++itr){ os<<(itr==begin(c)?"":" ")<<*itr; } return os; } template void dbg(Args&&...args){ ((cerr< memo; ll inverz(ll n){ if(memo.count(n)) return memo[n]; else{ memo[n] = mpow(n, mod-2); return memo[n]; } } void solve(){ ll n, p;cin>>n>>p; vec points(n); for(auto&i:points)cin>>i.first>>i.second; map, ll> ciary; map vodorovne, zvysle; For(i, 0, n){ For(j, i+1, n){ pll mid = points[i] + points[j]; pll s = points[i] - points[j]; pll v = {s.second, - s.first}; if(v.first == 0) { dbg(i, j, mid.first); vodorovne[mid.first]++; continue; } if(v.second == 0){ zvysle[mid.second] ++; continue; } pll a = {v.first, v.second}; pll b = {mid.second*v.first - mid.first *v.second , v.first}; ll ga = gcd(abs(a.first), abs(a.second)), gb = gcd(abs(b.first), abs(b.second)); a = {a.first/ga, a.second/ga}, b = {b.first/gb, b.second/gb}; ciary[{a, b}]+= 1; } } // dbg(ciary); // dbg(vodorovne, zvysle); for(auto [_, pocet] : ciary){ if(pocet*2*100>=p*n){ cout<<"YES\n";return; } } for(auto [_, pocet] : vodorovne){ if(pocet*2*100>=p*n){ cout<<"YES\n";return; } } for(auto [_, pocet] : zvysle){ if(pocet*2*100>=p*n){ cout<<"YES\n";return; } } cout<<"NO"<sync_with_stdio(0); cin.exceptions(cin.failbit); int t = 1; while(t--)solve(); return 0; }