#include <bits/stdc++.h>
#define up(i,a,b) for (int i = (int)a; i <= (int)b; i++)
using namespace std;
const int maxn = 1e5 + 10;
const int maxk = 55;
const int MOD = 1e9 + 7;
struct EVENT{
int x;
int y1;
int y2;
int type;
};
//Các sự kiện sweepline gồm tọa độ x, độ dài y1, y2, và kiểu sự kiện
//đóng hay mở một đoạn thẳng
bool comp(EVENT& A, EVENT& B){
if (A.x == B.x) return A.type > B.type;
return A.x < B.x;
}
//Xử lý các sự kiện x trước
vector<EVENT> events;
vector<int> tempY;
int n, k, treesize;
long long T[maxk+1][maxn << 3];
int delta[maxn << 3];
// T[j][nod]: Tổng chiều dài trong khoảng quản lý của nút nod bị phủ ÍT NHẤT j lần.
// delta[nod]: Số lần toàn đoạn [l,r] bị phủ đang được quản lý bởi nod
//maxn << 1 cho số lượng sự kiện tối đa có thể xảy ra (1 mở và 1 đóng)
//maxn << 3 cho ước lượng segment tree trên toàn sự kiện
//maxk+1 để tránh tràn mảng vì phải lấy T(k) - T(k+1)
void push_up(int nod, int l, int r){
int len = tempY[r+1] - tempY[l];
int d = delta[nod];
if (d >= k+1){
up(j,1,k+1) T[j][nod] = len;
return;
}
// Ngay cả khi bỏ qua con, delta đã đủ >= k+1 lần → mọi ngưỡng đều đạt
if (l == r){
up(j,1,k+1) T[j][nod] = (d >= j) ? len : 0;
return;
}
// leaf
up(j,1,k+1){
if (j <= d) T[j][nod] = len;
else{
int need = j - d;
// đã đóng góp được d lần thì cần đóng góp thêm j-d lần nữa
T[j][nod] = T[need][nod*2] + T[need][nod*2+1];
}
}
}
//Nếu "khoảng" [l, r] bị bao hoàn toàn thì lấy toàn bộ
//Nếu "khoảng" [l, r] chỉ bị bao một phần và không phải nút lá thì cập nhật dựa theo con
//Nếu "khoảng" lá không bị bao thì phải bằng 0
//Chú ý: nếu không có điều kiện (l != r) thì segment tree có thể lấy T[nod*2] với nod*2 là chỉ số tràn ngoài phạm vi đã khai báo
//Chú ý: delta không bao giờ đẩy xuống nút con
void update(int nod, int l, int r, int u, int v, int val){
if (r < u || l > v) return;
if (l >= u && r <= v){
delta[nod] += val;
push_up(nod, l, r);
return;
}
int mid = (l+r) >> 1;
update(nod*2, l, mid, u, v, val);
update(nod*2+1, mid+1, r, u, v, val);
push_up(nod, l, r);
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
#define Task "A"
if (fopen(Task".inp", "r")){
freopen(Task".inp", "r", stdin);
freopen(Task".out", "w", stdout);
}
cin >> n >> k;
up(i,1,n){
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
tempY.push_back(y1);
tempY.push_back(y2);
events.push_back({x1, y1, y2, 1});
events.push_back({x2, y1, y2, -1});
}
tempY.push_back(-MOD);
sort(tempY.begin(), tempY.end());
tempY.resize(unique(tempY.begin(), tempY.end()) - tempY.begin());
treesize = tempY.size()-1;
// tempY thêm phần tử -MOD để lấy lowerbound với chỉ số bắt đầu từ 1
// treesize = tempY.size()-1 vì phải bỏ qua phần tử -MOD;
sort(events.begin(), events.end(), comp);
long long res = 0;
for (int i = 0; i < (int)(events.size()-1); i++){
int u = lower_bound(tempY.begin(), tempY.end(), events[i].y1) - tempY.begin();
int v = lower_bound(tempY.begin(), tempY.end(), events[i].y2) - tempY.begin();
update(1, 1, treesize-1, u, v-1, events[i].type);
// Đúng k lần = (>= k) - (>= k+1)
res += 1ll*(T[k][1] - T[k+1][1]) * 1ll*(events[i+1].x - events[i].x);
// Segment tree quản lý các "khoảng" giữa tọa độ điểm này và tọa độ điểm kia
// có treesize tọa độ điểm thì có treesize-1 "khoảng"
// Tại mỗi nút chỉ số v quản lý khoảng [l, r], lấy kết quả nút nếu bị bao toàn bộ là tempY[r+1] - tempY[l]
// Do đó, mỗi lần lấy kết quả trong tọa độ [u, v] thì lấy kết quả trên "khoảng" [u, v-1] trên segment tree
}
cout << res;
}
/** Code Trâu **/
//#include <bits/stdc++.h>
//#define up(i,a,b) for (int i = (int)a; i <= (int)b; i++)
//using namespace std;
//
//int n, k;
//map<pair<int, int>, int> a;
//// Lưu số lần bị phủ của từng ô vuông đơn vị 1x1
//
//signed main(){
// ios_base::sync_with_stdio(false);
// cin.tie(0);
// #define Task "A"
// if (fopen(Task".inp", "r")){
// freopen(Task".inp", "r", stdin);
// freopen(Task".out", "w", stdout);
// }
//
// cin >> n >> k;
// up(i, 1, n){
// int x1, y1, x2, y2;
// cin >> x1 >> y1 >> x2 >> y2;
// // x từ x1 đến x2-1 đại diện cho các ô vuông trên trục X
// up(x, x1, x2-1){
// up(y, y1, y2-1){
// a[make_pair(x, y)]++;
// }
// }
// }
//
// int cnt = 0;
// for (auto it : a){
// if (it.second == k) {
// cnt++;
// }
// }
// cout << cnt << "\n";
//
//
//// down(j,maxy,-maxy){
//// up(i,-maxx,maxx){
//// cout << a[make_pair(i, j)] << " ";
//// }
//// cout << "\n";
//// }
//}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgdXAoaSxhLGIpIGZvciAoaW50IGkgPSAoaW50KWE7IGkgPD0gKGludCliOyBpKyspCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgbWF4biA9IDFlNSArIDEwOwpjb25zdCBpbnQgbWF4ayA9IDU1Owpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKc3RydWN0IEVWRU5UewogICAgaW50IHg7CiAgICBpbnQgeTE7CiAgICBpbnQgeTI7CiAgICBpbnQgdHlwZTsKfTsKLy9Dw6FjIHPhu7Ega2nhu4duIHN3ZWVwbGluZSBn4buTbSB04buNYSDEkeG7mSB4LCDEkeG7mSBkw6BpIHkxLCB5MiwgdsOgIGtp4buDdSBz4buxIGtp4buHbgovL8SRw7NuZyBoYXkgbeG7nyBt4buZdCDEkW/huqFuIHRo4bqzbmcKCmJvb2wgY29tcChFVkVOVCYgQSwgRVZFTlQmIEIpewogICAgaWYgKEEueCA9PSBCLngpIHJldHVybiBBLnR5cGUgPiBCLnR5cGU7CiAgICByZXR1cm4gQS54IDwgQi54Owp9Ci8vWOG7rSBsw70gY8OhYyBz4buxIGtp4buHbiB4IHRyxrDhu5tjCnZlY3RvcjxFVkVOVD4gZXZlbnRzOwoKCgp2ZWN0b3I8aW50PiB0ZW1wWTsKaW50IG4sIGssIHRyZWVzaXplOwpsb25nIGxvbmcgVFttYXhrKzFdW21heG4gPDwgM107CmludCBkZWx0YVttYXhuIDw8IDNdOwovLyBUW2pdW25vZF06IFThu5VuZyBjaGnhu4F1IGTDoGkgdHJvbmcga2hv4bqjbmcgcXXhuqNuIGzDvSBj4bunYSBuw7p0IG5vZCBi4buLIHBo4bunIMONVCBOSOG6pFQgaiBs4bqnbi4KLy8gZGVsdGFbbm9kXTogU+G7kSBs4bqnbiB0b8OgbiDEkW/huqFuIFtsLHJdIGLhu4sgcGjhu6cgxJFhbmcgxJHGsOG7o2MgcXXhuqNuIGzDvSBi4bufaSBub2QKLy9tYXhuIDw8IDEgY2hvIHPhu5EgbMaw4bujbmcgc+G7sSBraeG7h24gdOG7kWkgxJFhIGPDsyB0aOG7gyB44bqjeSByYSAoMSBt4bufIHbDoCAxIMSRw7NuZykKLy9tYXhuIDw8IDMgY2hvIMaw4bubYyBsxrDhu6NuZyBzZWdtZW50IHRyZWUgdHLDqm4gdG/DoG4gc+G7sSBraeG7h24KLy9tYXhrKzEgxJHhu4MgdHLDoW5oIHRyw6BuIG3huqNuZyB2w6wgcGjhuqNpIGzhuqV5IFQoaykgLSBUKGsrMSkKCgoKdm9pZCBwdXNoX3VwKGludCBub2QsIGludCBsLCBpbnQgcil7CiAgICBpbnQgbGVuID0gdGVtcFlbcisxXSAtIHRlbXBZW2xdOwogICAgaW50IGQgPSBkZWx0YVtub2RdOwoKICAgIGlmIChkID49IGsrMSl7CiAgICAgICAgdXAoaiwxLGsrMSkgVFtqXVtub2RdID0gbGVuOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIC8vIE5nYXkgY+G6oyBraGkgYuG7jyBxdWEgY29uLCBkZWx0YSDEkcOjIMSR4bunID49IGsrMSBs4bqnbiDihpIgbeG7jWkgbmfGsOG7oW5nIMSR4buBdSDEkeG6oXQKCiAgICBpZiAobCA9PSByKXsKICAgICAgICB1cChqLDEsaysxKSBUW2pdW25vZF0gPSAoZCA+PSBqKSA/IGxlbiA6IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgLy8gbGVhZgoKCiAgICB1cChqLDEsaysxKXsKICAgICAgICBpZiAoaiA8PSBkKSBUW2pdW25vZF0gPSBsZW47CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgaW50IG5lZWQgPSBqIC0gZDsKICAgICAgICAgICAgLy8gxJHDoyDEkcOzbmcgZ8OzcCDEkcaw4bujYyBkIGzhuqduIHRow6wgY+G6p24gxJHDs25nIGfDs3AgdGjDqm0gai1kIGzhuqduIG7hu69hCiAgICAgICAgICAgIFRbal1bbm9kXSA9IFRbbmVlZF1bbm9kKjJdICsgVFtuZWVkXVtub2QqMisxXTsKICAgICAgICB9CiAgICB9Cn0KLy9O4bq/dSAia2hv4bqjbmciIFtsLCByXSBi4buLIGJhbyBob8OgbiB0b8OgbiB0aMOsIGzhuqV5IHRvw6BuIGLhu5kKLy9O4bq/dSAia2hv4bqjbmciIFtsLCByXSBjaOG7iSBi4buLIGJhbyBt4buZdCBwaOG6p24gdsOgIGtow7RuZyBwaOG6o2kgbsO6dCBsw6EgdGjDrCBj4bqtcCBuaOG6rXQgZOG7sWEgdGhlbyBjb24KLy9O4bq/dSAia2hv4bqjbmciIGzDoSBraMO0bmcgYuG7iyBiYW8gdGjDrCBwaOG6o2kgYuG6sW5nIDAKLy9DaMO6IMO9OiBu4bq/dSBraMO0bmcgY8OzIMSRaeG7gXUga2nhu4duIChsICE9IHIpIHRow6wgc2VnbWVudCB0cmVlIGPDsyB0aOG7gyBs4bqleSBUW25vZCoyXSB24bubaSBub2QqMiBsw6AgY2jhu4kgc+G7kSB0csOgbiBuZ2/DoGkgcGjhuqFtIHZpIMSRw6Mga2hhaSBiw6FvCi8vQ2jDuiDDvTogZGVsdGEga2jDtG5nIGJhbyBnaeG7nSDEkeG6qXkgeHXhu5FuZyBuw7p0IGNvbgoKCgp2b2lkIHVwZGF0ZShpbnQgbm9kLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdiwgaW50IHZhbCl7CiAgICBpZiAociA8IHUgfHwgbCA+IHYpIHJldHVybjsKICAgIGlmIChsID49IHUgJiYgciA8PSB2KXsKICAgICAgICBkZWx0YVtub2RdICs9IHZhbDsKICAgICAgICBwdXNoX3VwKG5vZCwgbCwgcik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsK3IpID4+IDE7CiAgICB1cGRhdGUobm9kKjIsIGwsIG1pZCwgdSwgdiwgdmFsKTsKICAgIHVwZGF0ZShub2QqMisxLCBtaWQrMSwgciwgdSwgdiwgdmFsKTsKICAgIHB1c2hfdXAobm9kLCBsLCByKTsKfQoKc2lnbmVkIG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsKICAgICNkZWZpbmUgVGFzayAiQSIKICAgIGlmIChmb3BlbihUYXNrIi5pbnAiLCAiciIpKXsKICAgICAgICBmcmVvcGVuKFRhc2siLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oVGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGNpbiA+PiBuID4+IGs7CiAgICB1cChpLDEsbil7CiAgICAgICAgaW50IHgxLCB5MSwgeDIsIHkyOwogICAgICAgIGNpbiA+PiB4MSA+PiB5MSA+PiB4MiA+PiB5MjsKICAgICAgICB0ZW1wWS5wdXNoX2JhY2soeTEpOwogICAgICAgIHRlbXBZLnB1c2hfYmFjayh5Mik7CiAgICAgICAgZXZlbnRzLnB1c2hfYmFjayh7eDEsIHkxLCB5MiwgMX0pOwogICAgICAgIGV2ZW50cy5wdXNoX2JhY2soe3gyLCB5MSwgeTIsIC0xfSk7CiAgICB9CgogICAgdGVtcFkucHVzaF9iYWNrKC1NT0QpOwogICAgc29ydCh0ZW1wWS5iZWdpbigpLCB0ZW1wWS5lbmQoKSk7CiAgICB0ZW1wWS5yZXNpemUodW5pcXVlKHRlbXBZLmJlZ2luKCksIHRlbXBZLmVuZCgpKSAtIHRlbXBZLmJlZ2luKCkpOwogICAgdHJlZXNpemUgPSB0ZW1wWS5zaXplKCktMTsKLy8gICAgdGVtcFkgdGjDqm0gcGjhuqduIHThu60gLU1PRCDEkeG7gyBs4bqleSBsb3dlcmJvdW5kIHbhu5tpIGNo4buJIHPhu5EgYuG6r3QgxJHhuqd1IHThu6sgMQovLyAgICB0cmVlc2l6ZSA9IHRlbXBZLnNpemUoKS0xIHbDrCBwaOG6o2kgYuG7jyBxdWEgcGjhuqduIHThu60gLU1PRDsKCgogICAgc29ydChldmVudHMuYmVnaW4oKSwgZXZlbnRzLmVuZCgpLCBjb21wKTsKCiAgICBsb25nIGxvbmcgcmVzID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludCkoZXZlbnRzLnNpemUoKS0xKTsgaSsrKXsKICAgICAgICBpbnQgdSA9IGxvd2VyX2JvdW5kKHRlbXBZLmJlZ2luKCksIHRlbXBZLmVuZCgpLCBldmVudHNbaV0ueTEpIC0gdGVtcFkuYmVnaW4oKTsKICAgICAgICBpbnQgdiA9IGxvd2VyX2JvdW5kKHRlbXBZLmJlZ2luKCksIHRlbXBZLmVuZCgpLCBldmVudHNbaV0ueTIpIC0gdGVtcFkuYmVnaW4oKTsKCgogICAgICAgIHVwZGF0ZSgxLCAxLCB0cmVlc2l6ZS0xLCB1LCB2LTEsIGV2ZW50c1tpXS50eXBlKTsKICAgICAgICAvLyDEkMO6bmcgayBs4bqnbiA9ICg+PSBrKSAtICg+PSBrKzEpCiAgICAgICAgcmVzICs9IDFsbCooVFtrXVsxXSAtIFRbaysxXVsxXSkgKiAxbGwqKGV2ZW50c1tpKzFdLnggLSBldmVudHNbaV0ueCk7CgovLyAgICAgICAgU2VnbWVudCB0cmVlIHF14bqjbiBsw70gY8OhYyAia2hv4bqjbmciIGdp4buvYSB04buNYSDEkeG7mSDEkWnhu4NtIG7DoHkgdsOgIHThu41hIMSR4buZIMSRaeG7g20ga2lhCi8vICAgICAgICBjw7MgdHJlZXNpemUgdOG7jWEgxJHhu5kgxJFp4buDbSB0aMOsIGPDsyB0cmVlc2l6ZS0xICJraG/huqNuZyIKLy8gICAgICAgIFThuqFpIG3hu5dpIG7DunQgY2jhu4kgc+G7kSB2IHF14bqjbiBsw70ga2hv4bqjbmcgW2wsIHJdLCBs4bqleSBr4bq/dCBxdeG6oyBuw7p0IG7hur91IGLhu4sgYmFvIHRvw6BuIGLhu5kgbMOgIHRlbXBZW3IrMV0gLSB0ZW1wWVtsXQovLyAgICAgICAgRG8gxJHDsywgbeG7l2kgbOG6p24gbOG6pXkga+G6v3QgcXXhuqMgdHJvbmcgdOG7jWEgxJHhu5kgW3UsIHZdIHRow6wgbOG6pXkga+G6v3QgcXXhuqMgdHLDqm4gImtob+G6o25nIiBbdSwgdi0xXSB0csOqbiBzZWdtZW50IHRyZWUKICAgIH0KICAgIGNvdXQgPDwgcmVzOwp9CgoKCgoKCgovKiogQ29kZSBUcsOidSAqKi8KLy8jaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KLy8jZGVmaW5lIHVwKGksYSxiKSBmb3IgKGludCBpID0gKGludClhOyBpIDw9IChpbnQpYjsgaSsrKQovL3VzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vCi8vaW50IG4sIGs7Ci8vbWFwPHBhaXI8aW50LCBpbnQ+LCBpbnQ+IGE7Ci8vLy8gTMawdSBz4buRIGzhuqduIGLhu4sgcGjhu6cgY+G7p2EgdOG7q25nIMO0IHZ1w7RuZyDEkcahbiB24buLIDF4MQovLwovL3NpZ25lZCBtYWluKCl7Ci8vICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwovLyAgICBjaW4udGllKDApOwovLyAgICAjZGVmaW5lIFRhc2sgIkEiCi8vICAgIGlmIChmb3BlbihUYXNrIi5pbnAiLCAiciIpKXsKLy8gICAgICAgIGZyZW9wZW4oVGFzayIuaW5wIiwgInIiLCBzdGRpbik7Ci8vICAgICAgICBmcmVvcGVuKFRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKLy8gICAgfQovLwovLyAgICBjaW4gPj4gbiA+PiBrOwovLyAgICB1cChpLCAxLCBuKXsKLy8gICAgICAgIGludCB4MSwgeTEsIHgyLCB5MjsKLy8gICAgICAgIGNpbiA+PiB4MSA+PiB5MSA+PiB4MiA+PiB5MjsKLy8gICAgICAgIC8vIHggdOG7qyB4MSDEkeG6v24geDItMSDEkeG6oWkgZGnhu4duIGNobyBjw6FjIMO0IHZ1w7RuZyB0csOqbiB0cuG7pWMgWAovLyAgICAgICAgdXAoeCwgeDEsIHgyLTEpewovLyAgICAgICAgICAgIHVwKHksIHkxLCB5Mi0xKXsKLy8gICAgICAgICAgICAgICAgYVttYWtlX3BhaXIoeCwgeSldKys7Ci8vICAgICAgICAgICAgfQovLyAgICAgICAgfQovLyAgICB9Ci8vCi8vICAgIGludCBjbnQgPSAwOwovLyAgICBmb3IgKGF1dG8gaXQgOiBhKXsKLy8gICAgICAgIGlmIChpdC5zZWNvbmQgPT0gaykgewovLyAgICAgICAgICAgIGNudCsrOwovLyAgICAgICAgfQovLyAgICB9Ci8vICAgIGNvdXQgPDwgY250IDw8ICJcbiI7Ci8vCi8vCi8vLy8gICAgZG93bihqLG1heHksLW1heHkpewovLy8vICAgICAgICB1cChpLC1tYXh4LG1heHgpewovLy8vICAgICAgICAgICAgY291dCA8PCBhW21ha2VfcGFpcihpLCBqKV0gPDwgIiAiOwovLy8vICAgICAgICB9Ci8vLy8gICAgICAgIGNvdXQgPDwgIlxuIjsKLy8vLyAgICB9Ci8vfQ==