#include<bits/stdc++.h>
using namespace std;
using ll = long long;
template<typename X, typename Y>
bool chmax(X& a, Y b) { return (a < b) ? a = b, 1 : 0; }
template<typename X, typename Y>
bool chmin(X& a, Y b) { return (a > b) ? a = b, 1 : 0; }
void print(__int128 x) {
if (x == 0) {
cout << "0\n";
return;
}
if (x < 0) { cout << "-"; x = -x; }
string s;
while (x) {
s.push_back((char)(x % 10) + '0');
x /= 10;
}
reverse(s.begin(), s.end());
cout << s << '\n';
}
const int N = 1e5+5;
struct Del {
ll s, f, w;
};
struct Event {
ll t, w, op;
bool operator<(const Event& o) const {
return t < o.t;
}
};
int n, m;
vector<ll> vals;
struct Node {
int cnt;
__int128 sum;
} st[4*N];
void update(int id, int l, int r, int k, ll s, ll x) {
if (l == r) {
st[id].cnt += s;
st[id].sum += (__int128)s * x;
return;
}
int mid = (l + r) >> 1;
if (k <= mid) update(id << 1, l, mid, k, s, x);
else update(id << 1 | 1, mid + 1, r, k, s, x);
st[id].cnt = st[id << 1].cnt + st[id << 1 | 1].cnt;
st[id].sum = st[id << 1].sum + st[id << 1 | 1].sum;
}
__int128 walk(int id, int l, int r, ll x) {
if (x <= 0 || st[id].cnt == 0) return 0;
if (st[id].cnt <= x) return st[id].sum;
if (l == r) return (__int128)x * vals[l - 1];
int mid = (l + r) >> 1;
if (st[id << 1 | 1].cnt >= x) return walk(id << 1 | 1, mid + 1, r, x);
return st[id << 1 | 1].sum + walk(id << 1, l, mid, x - st[id << 1 | 1].cnt);
}
void solve() {
cin >> n >> m;
vector<Del> dels;
__int128 base = 0;
for (int i = 0; i < n; i++) {
int a, b, s, f; cin >> a >> b >> s >> f;
base += (__int128)(f - s) * b;
if (a > b) {
dels.push_back({s, f, a - b});
vals.push_back(a - b);
}
}
if (dels.empty()) {
print(base);
return;
}
sort(vals.begin(), vals.end());
vals.erase(unique(vals.begin(), vals.end()), vals.end());
int sz = vals.size();
vector<Event> events;
for (auto& [s, f, w] : dels) {
events.push_back({s, w, 1});
events.push_back({f, w, -1});
}
sort(events.begin(), events.end());
__int128 ans = base;
ll last_t = events[0].t;
for (int i = 0; i < (int)events.size(); ) {
int j = i;
if (events[i].t > last_t) {
ans += walk(1, 1, sz, m) * (events[i].t - last_t);
last_t = events[i].t;
}
while (j < (int)events.size() && events[j].t == events[i].t) {
int idx = lower_bound(vals.begin(), vals.end(), events[j].w) - vals.begin() + 1;
update(1, 1, sz, idx, events[j].op, events[j].w);
j++;
}
i = j;
}
print(ans);
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
#define TASK "ORCONF"
if (fopen(TASK".INP", "r")) {
freopen(TASK".INP", "r", stdin);
freopen(TASK".OUT", "w", stdout);
}
int tests = 1; // cin >> tests;
while (tests--) solve();
#ifndef LOCAL
cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVzaW5nIGxsID0gbG9uZyBsb25nOwoKdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KYm9vbCBjaG1heChYJiBhLCBZIGIpIHsgcmV0dXJuIChhIDwgYikgPyBhID0gYiwgMSA6IDA7IH0KdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KYm9vbCBjaG1pbihYJiBhLCBZIGIpIHsgcmV0dXJuIChhID4gYikgPyBhID0gYiwgMSA6IDA7IH0KCnZvaWQgcHJpbnQoX19pbnQxMjggeCkgewogICAgaWYgKHggPT0gMCkgewogICAgICAgIGNvdXQgPDwgIjBcbiI7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKHggPCAwKSB7IGNvdXQgPDwgIi0iOyB4ID0gLXg7IH0KICAgIHN0cmluZyBzOwogICAgd2hpbGUgKHgpIHsKICAgICAgICBzLnB1c2hfYmFjaygoY2hhcikoeCAlIDEwKSArICcwJyk7CiAgICAgICAgeCAvPSAxMDsKICAgIH0KICAgIHJldmVyc2Uocy5iZWdpbigpLCBzLmVuZCgpKTsKICAgIGNvdXQgPDwgcyA8PCAnXG4nOwp9Cgpjb25zdCBpbnQgTiA9IDFlNSs1OwoKc3RydWN0IERlbCB7CiAgICBsbCBzLCBmLCB3Owp9OwoKc3RydWN0IEV2ZW50IHsKICAgIGxsIHQsIHcsIG9wOwogICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRXZlbnQmIG8pIGNvbnN0IHsKICAgICAgICByZXR1cm4gdCA8IG8udDsKICAgIH0KfTsKCmludCBuLCBtOwp2ZWN0b3I8bGw+IHZhbHM7CgpzdHJ1Y3QgTm9kZSB7CiAgICBpbnQgY250OwogICAgX19pbnQxMjggc3VtOwp9IHN0WzQqTl07Cgp2b2lkIHVwZGF0ZShpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IGssIGxsIHMsIGxsIHgpIHsKICAgIGlmIChsID09IHIpIHsKICAgICAgICBzdFtpZF0uY250ICs9IHM7CiAgICAgICAgc3RbaWRdLnN1bSArPSAoX19pbnQxMjgpcyAqIHg7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIGlmIChrIDw9IG1pZCkgdXBkYXRlKGlkIDw8IDEsIGwsIG1pZCwgaywgcywgeCk7CiAgICBlbHNlIHVwZGF0ZShpZCA8PCAxIHwgMSwgbWlkICsgMSwgciwgaywgcywgeCk7CiAgICBzdFtpZF0uY250ID0gc3RbaWQgPDwgMV0uY250ICsgc3RbaWQgPDwgMSB8IDFdLmNudDsgCiAgICBzdFtpZF0uc3VtID0gc3RbaWQgPDwgMV0uc3VtICsgc3RbaWQgPDwgMSB8IDFdLnN1bTsgCn0KCl9faW50MTI4IHdhbGsoaW50IGlkLCBpbnQgbCwgaW50IHIsIGxsIHgpIHsKICAgIGlmICh4IDw9IDAgfHwgc3RbaWRdLmNudCA9PSAwKSByZXR1cm4gMDsKICAgIGlmIChzdFtpZF0uY250IDw9IHgpIHJldHVybiBzdFtpZF0uc3VtOwogICAgaWYgKGwgPT0gcikgcmV0dXJuIChfX2ludDEyOCl4ICogdmFsc1tsIC0gMV07CiAgICBpbnQgbWlkID0gKGwgKyByKSA+PiAxOwogICAgaWYgKHN0W2lkIDw8IDEgfCAxXS5jbnQgPj0geCkgcmV0dXJuIHdhbGsoaWQgPDwgMSB8IDEsIG1pZCArIDEsIHIsIHgpOwogICAgcmV0dXJuIHN0W2lkIDw8IDEgfCAxXS5zdW0gKyB3YWxrKGlkIDw8IDEsIGwsIG1pZCwgeCAtIHN0W2lkIDw8IDEgfCAxXS5jbnQpOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG4gPj4gbTsKICAgIHZlY3RvcjxEZWw+IGRlbHM7CiAgICBfX2ludDEyOCBiYXNlID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IGEsIGIsIHMsIGY7IGNpbiA+PiBhID4+IGIgPj4gcyA+PiBmOwogICAgICAgIGJhc2UgKz0gKF9faW50MTI4KShmIC0gcykgKiBiOwogICAgICAgIGlmIChhID4gYikgewogICAgICAgICAgICBkZWxzLnB1c2hfYmFjayh7cywgZiwgYSAtIGJ9KTsKICAgICAgICAgICAgdmFscy5wdXNoX2JhY2soYSAtIGIpOwogICAgICAgIH0KICAgIH0KICAgIGlmIChkZWxzLmVtcHR5KCkpIHsKICAgICAgICBwcmludChiYXNlKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBzb3J0KHZhbHMuYmVnaW4oKSwgdmFscy5lbmQoKSk7CiAgICB2YWxzLmVyYXNlKHVuaXF1ZSh2YWxzLmJlZ2luKCksIHZhbHMuZW5kKCkpLCB2YWxzLmVuZCgpKTsKICAgIGludCBzeiA9IHZhbHMuc2l6ZSgpOwogICAgdmVjdG9yPEV2ZW50PiBldmVudHM7CiAgICBmb3IgKGF1dG8mIFtzLCBmLCB3XSA6IGRlbHMpIHsKICAgICAgICBldmVudHMucHVzaF9iYWNrKHtzLCB3LCAxfSk7CiAgICAgICAgZXZlbnRzLnB1c2hfYmFjayh7ZiwgdywgLTF9KTsKICAgIH0KICAgIHNvcnQoZXZlbnRzLmJlZ2luKCksIGV2ZW50cy5lbmQoKSk7CiAgICBfX2ludDEyOCBhbnMgPSBiYXNlOwogICAgbGwgbGFzdF90ID0gZXZlbnRzWzBdLnQ7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IChpbnQpZXZlbnRzLnNpemUoKTsgKSB7CiAgICAgICAgaW50IGogPSBpOwogICAgICAgIGlmIChldmVudHNbaV0udCA+IGxhc3RfdCkgewogICAgICAgICAgICBhbnMgKz0gd2FsaygxLCAxLCBzeiwgbSkgKiAoZXZlbnRzW2ldLnQgLSBsYXN0X3QpOwogICAgICAgICAgICBsYXN0X3QgPSBldmVudHNbaV0udDsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKGogPCAoaW50KWV2ZW50cy5zaXplKCkgJiYgZXZlbnRzW2pdLnQgPT0gZXZlbnRzW2ldLnQpIHsKICAgICAgICAgICAgaW50IGlkeCA9IGxvd2VyX2JvdW5kKHZhbHMuYmVnaW4oKSwgdmFscy5lbmQoKSwgZXZlbnRzW2pdLncpIC0gdmFscy5iZWdpbigpICsgMTsKICAgICAgICAgICAgdXBkYXRlKDEsIDEsIHN6LCBpZHgsIGV2ZW50c1tqXS5vcCwgZXZlbnRzW2pdLncpOwogICAgICAgICAgICBqKys7CiAgICAgICAgfQogICAgICAgIGkgPSBqOwogICAgfQogICAgcHJpbnQoYW5zKTsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsKCiAgICAjZGVmaW5lIFRBU0sgIk9SQ09ORiIKICAgIGlmIChmb3BlbihUQVNLIi5JTlAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihUQVNLIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBpbnQgdGVzdHMgPSAxOyAvLyBjaW4gPj4gdGVzdHM7CiAgICB3aGlsZSAodGVzdHMtLSkgc29sdmUoKTsKCiAgICAjaWZuZGVmIExPQ0FMCiAgICBjZXJyIDw8ICJcblRpbWUgZWxhcHNlZDogIiA8PCAxLjAgKiBjbG9jaygpIC8gQ0xPQ0tTX1BFUl9TRUMgPDwgIiBzLlxuIjsKICAgICNlbmRpZgogICAgcmV0dXJuIDA7Cn0K