/* Bismillahir Rahmanir Rahim */ #include #define rep(i, n) for(int i=0;i pii; const int N = 100007; int n, x, y; long long X[N], Y[N], Z[N], P[N]; long long dp[N]; int vis[N]; int order[N]; long long recur(int at){ if(vis[at]) return dp[at]; vis[at] = 1; long long ret = 0; for(int j=at+1;j<=n;j++){ int i = order[j]; if(abs(X[i] - X[order[at]]) <= x && abs(Y[i] - Y[order[at]]) <= y && Z[i] > Z[order[at]]) ret = max(ret, recur(j)); } return dp[at] = ret + P[order[at]]; } bool comp(int a, int b){ return Z[a] < Z[b]; } int main(){ scanf("%d %d %d", &n, &x, &y); repn(i, n) scanf("%lld %lld %lld %lld", &X[i], &Y[i], &Z[i], &P[i]); repn(i, n) order[i] = i; sort(order+1, order+1+n, comp); long long ret = 0; repn(i, n) ret = max(ret, recur(i)); cout << ret << endl; return 0; }