OI VIII - prz

// https://szkopul.edu.pl/problemset/problem/w5PRX1QCpJeRUHpwNUpcbF6S/site/?key=statement

// Przedziały

#include <bits/stdc++.h>

// using namespace std;

#define int long long

constexpr int sizik = 1000 * 1001;
constexpr int INF = INT32_MAX;

#define ar std::array
#define pr std::pair
#define vec std::vector

typedef vec<vec<int>> _kra;
typedef ar<int, 2> P;

void solve() {
    int n;
    std::cin >> n;

    std::map<int, int> m;
    for (int i = 0; i < n; i++) {
        int a, b;
        std::cin >> a >> b;

        m[a] = std::max(m[a], b);
    }

    m[INF] = INF;

    std::vector<ar<int, 2>> ans;
    auto [begin1_ref, end_ref] = *m.begin();
    auto begin1 = begin1_ref;
    auto end = end_ref;
    for (const auto& [a, b] : m) {
        if (a <= end) {
            end = std::max(end, b);
        } else {
            ans.push_back({begin1, end});
            begin1 = a;
            end = b;
        }
    }

    for (const auto& [a, b] : ans) {
        std::cout << a << " " << b << std::endl;
    }
    std::cout << '\n';
}

int32_t main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int t = 1;
    // std::cin >> t;

    for (; t > 0; t--) {
        solve();
    }

    return 0;
}