OIG V - par

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

// OIG V (1 etap)

#include <iostream>

constexpr int sizik = 1000 * 1000 + 15;

int v[sizik];
int suf[sizik];

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

    int n;
    std::cin >> n;

    if (n == 1) {
        int a;
        std::cin >> a;
        std::cout << a << " " << a << '\n';
        return 0;
    }

    if (n == 2) {
        int a, b;
        std::cin >> a >> b;

        std::cout << a << " " << b << "\n" << a << " " << b << '\n';
        return 0;
    }

    for (int i = 0; i < n; i++) {
        std::cin >> v[i];
    }

    int l_max = v[n - 1];
    for (int i = n - 1; i >= 0; i--) {
        l_max = std::max(l_max, v[i]);

        suf[i] = l_max;
    }

    l_max = v[0];

    for (int i = 0; i < n; i++) {
        l_max = std::max(l_max, v[i]);

        std::cout << l_max << " " << suf[i] << '\n';
    }

    return 0;
}