#include<iostream>
#include<deque>
using namespace std;
struct node{
int id;
int num;
};
deque<node>Q1;
deque<node>Q2;
int n,k;
int a[1000010];
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
Q1.push_front( {1,a[1]} );
for(int i=2;i<=n;i++){
while(Q1.back().num>=a[i]&&!Q1.empty()) Q1.pop_back();
Q1.push_back( {i,a[i]} );
if(Q1.front().id<=i-k){
Q1.pop_front();
}
if(i>=k){
cout<<Q1.front().num<<' ';
}
}
cout<<endl;
Q2.push_front( {1,a[1]} );
for(int i=2;i<=n;i++){
while(Q2.back().num<=a[i]&&!Q2.empty()) Q2.pop_back();
Q2.push_back({i,a[i]});
if(Q2.front().id<=i-k){
Q2.pop_front();
}
if(i>=k){
cout<<Q2.front().num<<' ';
}
}
return 0;
}