#include using namespace std; typedef long long ll; const int MAXN = 2e5 + 10; const int SQ = 450; int n, x, y, a[MAXN], b[MAXN], c[MAXN], val[MAXN], sec[MAXN], mp[MAXN]; ll d[MAXN]; bool cmp(int u, int v){return c[u] > c[v];} int main(){ ios::sync_with_stdio(false); cin.tie(0); cin >> n >> x >> y; for (int i = 0; i < n; i++) cin >> a[i] >> b[i] >> c[i] >> val[i]; memset(mp, -1, sizeof(mp)); iota(sec, sec + n, 0); sort(sec, sec + n, cmp); ll ans = 0; for (int i = 0; i < n; i++){ int v = sec[i]; d[v] = val[v]; for (int j = i-1; ~j && j >= i-SQ; j--) if (abs(a[v] - a[sec[j]]) <= x && abs(b[v] - b[sec[j]]) <= y) d[v] = max(d[v], d[sec[j]] + val[v]); for (int j = max({0, a[v]-x, a[v]-SQ}); j < n && j <= a[v]+SQ && j <= a[v]+x; j++) if (~mp[j] && abs(b[mp[j]] - b[v]) <= y) d[v] = max(d[v], d[mp[j]] + val[v]); mp[a[v]] = v; ans = max(ans, d[v]); } cout << ans << "\n"; return 0; }