#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct Point {
ll x, y, w;
int L, R; // chỉ số nén trên trục Y
};
const int MAXN = 100000;
const int MAXM = 2 * MAXN + 5;
ll seg[4*MAXM], lazy[4*MAXM];
void push(int id) {
if (lazy[id] != 0) {
ll v = lazy[id];
seg[id<<1] += v; lazy[id<<1] += v;
seg[id<<1|1] += v; lazy[id<<1|1] += v;
lazy[id] = 0;
}
}
void update(int id, int l, int r, int u, int v, ll val) {
if (v < l || r < u) return;
if (u <= l && r <= v) {
seg[id] += val;
lazy[id] += val;
return;
}
push(id);
int mid = (l + r) >> 1;
update(id<<1, l, mid, u, v, val);
update(id<<1|1, mid+1, r, u, v, val);
seg[id] = max(seg[id<<1], seg[id<<1|1]);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
ll W, H;
if (!(cin >> N >> W >> H)) return 0;
vector<Point> a(N);
vector<ll> ys;
ys.reserve(2 * N);
for (int i = 0; i < N; ++i) {
cin >> a[i].x >> a[i].y >> a[i].w;
ll L = a[i].y - H;
ll R = a[i].y;
ys.push_back(L);
ys.push_back(R);
a[i].y = R; // lưu lại cho rõ ràng, L sẽ nén sau
}
sort(ys.begin(), ys.end());
ys.erase(unique(ys.begin(), ys.end()), ys.end());
int M = ys.size();
for (int i = 0; i < N; ++i) {
ll Lval = a[i].y - H;
ll Rval = a[i].y;
a[i].L = lower_bound(ys.begin(), ys.end(), Lval) - ys.begin();
a[i].R = lower_bound(ys.begin(), ys.end(), Rval) - ys.begin();
}
sort(a.begin(), a.end(), [](const Point &p, const Point &q) {
return p.x < q.x;
});
ll ans = 0;
int l = 0;
for (int r = 0; r < N; ++r) {
// thêm điểm r
update(1, 0, M-1, a[r].L, a[r].R, a[r].w);
// đảm bảo chiều rộng theo x không vượt W
while (l <= r && a[r].x - a[l].x > W) {
update(1, 0, M-1, a[l].L, a[l].R, -a[l].w);
++l;
}
ans = max(ans, seg[1]); // seg[1] là max toàn cục
}
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCnN0cnVjdCBQb2ludCB7CiAgICBsbCB4LCB5LCB3OwogICAgaW50IEwsIFI7IC8vIGNo4buJIHPhu5EgbsOpbiB0csOqbiB0cuG7pWMgWQp9OwoKY29uc3QgaW50IE1BWE4gPSAxMDAwMDA7CmNvbnN0IGludCBNQVhNID0gMiAqIE1BWE4gKyA1OwoKbGwgc2VnWzQqTUFYTV0sIGxhenlbNCpNQVhNXTsKCnZvaWQgcHVzaChpbnQgaWQpIHsKICAgIGlmIChsYXp5W2lkXSAhPSAwKSB7CiAgICAgICAgbGwgdiA9IGxhenlbaWRdOwogICAgICAgIHNlZ1tpZDw8MV0gKz0gdjsgbGF6eVtpZDw8MV0gKz0gdjsKICAgICAgICBzZWdbaWQ8PDF8MV0gKz0gdjsgbGF6eVtpZDw8MXwxXSArPSB2OwogICAgICAgIGxhenlbaWRdID0gMDsKICAgIH0KfQoKdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdiwgbGwgdmFsKSB7CiAgICBpZiAodiA8IGwgfHwgciA8IHUpIHJldHVybjsKICAgIGlmICh1IDw9IGwgJiYgciA8PSB2KSB7CiAgICAgICAgc2VnW2lkXSArPSB2YWw7CiAgICAgICAgbGF6eVtpZF0gKz0gdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHB1c2goaWQpOwogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIHVwZGF0ZShpZDw8MSwgbCwgbWlkLCB1LCB2LCB2YWwpOwogICAgdXBkYXRlKGlkPDwxfDEsIG1pZCsxLCByLCB1LCB2LCB2YWwpOwogICAgc2VnW2lkXSA9IG1heChzZWdbaWQ8PDFdLCBzZWdbaWQ8PDF8MV0pOwp9CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IE47CiAgICBsbCBXLCBIOwogICAgaWYgKCEoY2luID4+IE4gPj4gVyA+PiBIKSkgcmV0dXJuIDA7CgogICAgdmVjdG9yPFBvaW50PiBhKE4pOwogICAgdmVjdG9yPGxsPiB5czsKICAgIHlzLnJlc2VydmUoMiAqIE4pOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKSB7CiAgICAgICAgY2luID4+IGFbaV0ueCA+PiBhW2ldLnkgPj4gYVtpXS53OwogICAgICAgIGxsIEwgPSBhW2ldLnkgLSBIOwogICAgICAgIGxsIFIgPSBhW2ldLnk7CiAgICAgICAgeXMucHVzaF9iYWNrKEwpOwogICAgICAgIHlzLnB1c2hfYmFjayhSKTsKICAgICAgICBhW2ldLnkgPSBSOyAvLyBsxrB1IGzhuqFpIGNobyByw7UgcsOgbmcsIEwgc+G6vSBuw6luIHNhdQogICAgfQoKICAgIHNvcnQoeXMuYmVnaW4oKSwgeXMuZW5kKCkpOwogICAgeXMuZXJhc2UodW5pcXVlKHlzLmJlZ2luKCksIHlzLmVuZCgpKSwgeXMuZW5kKCkpOwogICAgaW50IE0gPSB5cy5zaXplKCk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyArK2kpIHsKICAgICAgICBsbCBMdmFsID0gYVtpXS55IC0gSDsKICAgICAgICBsbCBSdmFsID0gYVtpXS55OwogICAgICAgIGFbaV0uTCA9IGxvd2VyX2JvdW5kKHlzLmJlZ2luKCksIHlzLmVuZCgpLCBMdmFsKSAtIHlzLmJlZ2luKCk7CiAgICAgICAgYVtpXS5SID0gbG93ZXJfYm91bmQoeXMuYmVnaW4oKSwgeXMuZW5kKCksIFJ2YWwpIC0geXMuYmVnaW4oKTsKICAgIH0KCiAgICBzb3J0KGEuYmVnaW4oKSwgYS5lbmQoKSwgW10oY29uc3QgUG9pbnQgJnAsIGNvbnN0IFBvaW50ICZxKSB7CiAgICAgICAgcmV0dXJuIHAueCA8IHEueDsKICAgIH0pOwoKICAgIGxsIGFucyA9IDA7CiAgICBpbnQgbCA9IDA7CgogICAgZm9yIChpbnQgciA9IDA7IHIgPCBOOyArK3IpIHsKICAgICAgICAvLyB0aMOqbSDEkWnhu4NtIHIKICAgICAgICB1cGRhdGUoMSwgMCwgTS0xLCBhW3JdLkwsIGFbcl0uUiwgYVtyXS53KTsKCiAgICAgICAgLy8gxJHhuqNtIGLhuqNvIGNoaeG7gXUgcuG7mW5nIHRoZW8geCBraMO0bmcgdsaw4bujdCBXCiAgICAgICAgd2hpbGUgKGwgPD0gciAmJiBhW3JdLnggLSBhW2xdLnggPiBXKSB7CiAgICAgICAgICAgIHVwZGF0ZSgxLCAwLCBNLTEsIGFbbF0uTCwgYVtsXS5SLCAtYVtsXS53KTsKICAgICAgICAgICAgKytsOwogICAgICAgIH0KCiAgICAgICAgYW5zID0gbWF4KGFucywgc2VnWzFdKTsgLy8gc2VnWzFdIGzDoCBtYXggdG/DoG4gY+G7pWMKICAgIH0KCiAgICBjb3V0IDw8IGFucyA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0K