#include <bits/stdc++.h>
using namespace std;
int dcmp(double x) { return (x > 1e-8) - (x < -1e-8); }
const int MAXN = 200000 + 5;
struct Ghost {
  long long x, vx, vy, t;
} ghost[MAXN];
int cmp(Ghost &a, Ghost &b) {
  if (a.t == b.t) return a.vx < b.vx;
  return a.t < b.t;
}
int main() {
  long long n, a, b;
  scanf("%lld %lld %lld", &n, &a, &b);
  for (int i = 0; i < n; i++) {
    scanf("%lld %lld %lld", &ghost[i].x, &ghost[i].vx, &ghost[i].vy);
    ghost[i].t = a * ghost[i].vx - ghost[i].vy;
  }
  sort(ghost, ghost + n, cmp);
  long long ans = 0;
  for (int i = 0; i < n;) {
    long long t = ghost[i].t;
    long long cnt = 0;
    long long tot = 0;
    long long precnt = 0;
    while (i < n && ghost[i].t == t) {
      long long cnt2 = 0;
      long long vx = ghost[i].vx;
      for (; i < n; i++) {
        if (ghost[i].t == t && ghost[i].vx == vx) {
          cnt++;
          cnt2++;
        } else {
          break;
        }
      }
      tot += precnt * cnt2;
      precnt = cnt;
    }
    if (cnt > 1) {
      ans += tot;
    }
  }
  printf("%lld\n", 2 * ans);
  return 0;
}
