#include<iostream>
#include<deque>
#define swift ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
deque<int> que_max;
deque<int> que_min;
int a[1000005], res_min[1000005], res_max[1000005];
void POP(deque<int> & que, int val){
if(!que.empty() && val == que.front())
que.pop_front();
}
void push_min(deque<int> & que, int val){
while(!que.empty() && val < que.back())
que.pop_back();
que.push_back(val);
}
void push_max(deque<int> & que, int val){
while(!que.empty() && val > que.back())
que.pop_back();
que.push_back(val);
}
int result(deque<int> que){
return que.front();
}
int main(){
swift
int count_min = 1, count_max = 1;
int n, k;
cin>>n>>k;
for(int i = 1;i <= n;++i){
cin>>a[i];
push_min(que_min, a[i]);
push_max(que_max, a[i]);
if(i > k){
POP(que_min, a[i - k]);
POP(que_max, a[i - k]);
}
if(i >= k){
res_min[count_min++] = result(que_min);
res_max[count_max++] = result(que_max);
}
}
for(int i = 1;i < count_min;++i)
cout<<res_min[i]<<' ';
cout<<endl;
for(int i = 1;i < count_max;++i)
cout<<res_max[i]<<' ';
cout<<endl;
return 0;
}