#include using namespace std; #define MINF -500000 int n, x, y; long long dp[200001]; struct city{ int l1, l2, h, p; } c[200001]; long long best(int w) { long long maxp = MINF; for (int i = w + 1; i <= n; ++i) { if (abs(c[w].l1 - c[i].l1) > x) continue; if (abs(c[w].l2 - c[i].l2) > y) continue; if (dp[i] == MINF) { dp[i] = best(i); } if (dp[i] > maxp) maxp = dp[i]; } dp[w] = max((long long)c[w].p, c[w].p + maxp); return dp[w]; } bool compare(city a, city b) { return (a.h < b.h); } int main(){ cin >> n >> x >> y; for (int i = 1; i <= n; i++){ int latitude; int longitude; int height; int points; cin >> latitude >> longitude >> height >> points; c[i].l1 = latitude; c[i].l2 = longitude; c[i].h = height; c[i].p = points; dp[i] = MINF; } sort(c + 1, c + n + 1, compare); long long maxp = MINF; for (int i = 1; i <= n; ++i) { if (dp[i] == MINF) { dp[i] = best(i); } if (dp[i] > maxp) maxp = dp[i]; } if (maxp < 0) maxp = 0; cout << maxp; return 0; }