#include using namespace std; int main(){ int N, A, B; cin >> N >> A >> B; vector X(N), Y(N), K(N); for (int i = 0; i < N; i++){ cin >> X[i] >> Y[i] >> K[i]; } vector> d(N, vector(N)); for (int i = 0; i < N; i++){ for (int j = 0; j < N; j++){ d[i][j] = abs(X[i] - X[j]) + abs(Y[i] - Y[j]); } } vector>> dp(N, vector>(N, vector(1 << N, false))); dp[0][0][0] = true; int ans = 0; for (int i = 0; i < (1 << N); i++){ for (int j = 0; j < N; j++){ for (int k = 0; k < N; k++){ if (dp[j][k][i]){ for (int l = 0; l < N; l++){ if ((i >> l & 1) == 0){ int c = __builtin_popcount(i); bool ok = false; if (c == 0){ ok = true; } else if (c == 1){ ok = d[k][l] >= A; } else { ok = abs(K[k] - K[l]) >= B || d[j][l] + d[k][l] >= A; } if (ok){ ans = max(ans, c + 1); dp[k][l][i | (1 << l)] = true; } } } } } } } cout << ans << endl; }