#include <bits/stdc++.h>   using namespace std;   bool essentiallyEqual(float a, float b) {     return fabs(a - b) <= ((fabs(a) > fabs(b) ? fabs(b) : fabs(a)) * 1e-6);   }   struct TVector {     long long x, y;     TVector operator+(TVector q) const { return {x + q.x, y + q.y}; }     TVector operator-(TVector q) const { return {x - q.x, y - q.y}; }     TVector operator*(int t) const { return {x * t, y * t}; }     long long operator*(TVector q) const { return {x * q.x + y * q.y}; }     long long operator^(TVector q) const { return {x * q.y - q.x * y}; }     long double operator~() const { return {hypot(x, y)}; }     long double disPointLine(TVector p, TVector q) {       TVector r = *this;       if (((r - p) * (q - p) >= 0) && ((r - q) * (p - q) >= 0)) {         return abs((q - p) ^ (r - p)) / ~(p - q);       } else {         return min(~(r - p), ~(r - q));       }     }     bool onLine(TVector p, TVector q) {       TVector r = *this;       long double dis = r.disPointLine(p, q);       return essentiallyEqual(dis, 0);     }     long double sqrdDist(TVector p) {       return (x - p.x) * (x - p.x) + (y - p.y) * (y - p.y);     }     int orientation(TVector b, TVector c) {       TVector a = *this;       int val = (c - a) ^ (b - a);       return val;     }     int orientationV2(TVector b, TVector c) {       TVector a = *this;       int val = (c - a) ^ (b - a);       if (val == 0) return 0;       return (val > 0) ? 1 : 2;     }     void imprimePonto() { printf( %lld %lld , x, y); }   };   vector<TVector> stormtroopers;   vector<int> isShot;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     int n, x0, y0;     cin >> n >> x0 >> y0;     TVector gun;     gun.x = x0;     gun.y = y0;     for (int i = 0; i < n; ++i) {       int x, y;       cin >> x >> y;       stormtroopers.push_back({x, y});       isShot.push_back(0);     }     int tiros = 0;     for (int i = 0; i < n; ++i) {       if (!isShot[i]) {         tiros++;         for (int j = i + 1; j < n; ++j) {           if (!isShot[j]) {             if (!gun.orientationV2(stormtroopers[i], stormtroopers[j]))               isShot[j] = 1;           }         }       }     }     cout << tiros << endl;     return 0;   }   