#include<cstdio>
#include<iostream>
#define RI register int
using namespace std;
const int maxn = 1000010;
int llog[maxn];
int f[maxn][20];
int g[maxn][20];
int n, k;
inline void qread(int &x) {
x = 0;
register int ch = getchar(), flag = 0;
while(ch < '0' || ch > '9') {
if(ch == '-')
flag = 1;
ch = getchar();
}
while(ch >= '0' && ch <= '9') {
x = 10 * x + ch - 48;
ch = getchar();
}
if(flag) x = -x;
}
int main(void) {
qread(n);
qread(k);
for(RI i = 2; i <= n; ++i)
llog[i] = llog[i >> 1] + 1;
for(RI i = 1; i <= n; ++i)
qread(f[i][0]);
for(RI i = 1; i <= n; ++i)
g[i][0] = f[i][0];
for(int i = 1; i <= llog[k]; ++i)
for(int j = 1; j <= n; ++j) {
f[j][i] = max(f[j][i - 1], f[j + (1 << (i - 1))][i - 1]);
g[j][i] = min(g[j][i - 1], g[j + (1 << (i - 1))][i - 1]);
}
for(int i = 1; (i + k - 1) <= n; ++i) {
printf("%d ", max(f[i][llog[k]], f[i + k - (1 << llog[k])][llog[k]]));
printf("%d\n", min(g[i][llog[k]], g[i + k - (1 << llog[k])][llog[k]]));
}
}