#include <bits/stdc++.h>
    
using namespace std;
    
typedef long long ll;
const int N = (int)1e6 + 12, MOD = 998244353, inf = (int)1e9 + 1;
int n, k;
array<int, 4> a[N];
bool cmp(array<int, 4> x, array<int, 4> y) {
    if(make_pair(x[0], x[1]) == make_pair(y[0], y[1])) {
        if(x[3] != y[3]) {
            return x[3] < y[3];
        }
        return x[2] < y[2];
    }
    if(x[1] != y[1]) {
        return x[1] < y[1];
    }
    return x[0] < y[0];
}
vector<array<int, 4>> ans;
bool can(int l, int r, bool v) {
    if(l > r) return true;
    int mn = inf, mx = -inf;
    for(int i = l; i <= r; i++) {
        mn = min(mn, a[i][1]);
        mx = max(mx, a[i][0]);
    }
    array<int, 4> res;
    if(mx > mn) return 0;
    res[0] = mx;
    res[1] = mn;
    mx = -inf, mn = inf;
    for(int i = l; i <= r; i++) {
        mn = min(mn, a[i][3]);
        mx = max(mx, a[i][2]);
    }
    if(mx > mn) return 0;
    res[2] = mx;
    res[3] = mn;
    if(v) {
        ans.push_back(res);
    }
    return true;
}
bool check(int l, int r, bool v) {
    if(l > r) return true;
    for(int i = l; i <= r; i++) {
        if(can(l, i, 0) && can(i + 1, r, 0))  {
            if(v) {
                can(l, i, 1);
                can(i + 1, r, 1);
            }
            return true;
        } 
    }
    return false;
}
void test() {
    cin >> n >> k;
    if(k != 2) return;
    for(int i = 1; i <= n; ++i) {
        cin >> a[i][0] >> a[i][2] >> a[i][1] >> a[i][3];
    }
    sort(a + 1, a + n + 1, cmp);
    int l = 1, r = n + 1;
    while(r - l > 1) {
        int mid = (l + r) >> 1;
        if(check(1, mid, 0)) {
            l = mid;
        } else {
            r = mid;
        }
    }
    check(1, l, 1);
    check(l + 1, n, 1);
    assert(l ==n);
    while((int)ans.size() < k) {
        ans.push_back(ans.back());
    }
    for(auto [l, r, u, d] : ans) {
        cout << l << ' ' << u << '\n';
    }
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int t = 1;
    // cin >> t;
    while(t--) {
        test();
    }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |