#include <bits/stdc++.h>
using namespace std;
int n;
long long A, B;
struct node {
  long long vx, vy, w;
} p[400005];
bool cmp(const node p1, const node p2) {
  if (p1.w == p2.w) return p1.vx < p2.vx;
  return p1.w < p2.w;
}
int main() {
  scanf("%d%I64d%I64d", &n, &A, &B);
  int i, j;
  long long gg;
  for (i = 1; i <= n; i++) scanf("%I64d%I64d%I64d", &gg, &p[i].vx, &p[i].vy);
  long long ans = 0;
  for (i = 1; i <= n; i++) {
    p[i].w = p[i].vy - p[i].vx * A;
  }
  sort(p + 1, p + n + 1, cmp);
  for (i = 1; i <= n; i++) {
    j = i;
    while (j + 1 <= n && p[j + 1].w == p[i].w) j = j + 1;
    long long num = j - i + 1;
    int k;
    for (int t = i; t <= j; t++) {
      k = t;
      while (k + 1 <= j && p[k + 1].vx == p[t].vx) k = k + 1;
      long long siz = k - t + 1;
      ans += siz * (num - siz);
      t = k;
    }
    i = j;
  }
  printf("%I64d", ans);
  return 0;
}
