#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,k;
int head=0,tail=0;
struct node{
ll num;
ll value;
};
node orgin[1000010],p[1000010];
void _min(ll a){
if(a-p[head+1].num==k){
head++;
}
while(tail>=head+1 and p[tail].value>orgin[a].value){
p[tail].value=0;
p[tail].num=0;
tail--;
}
tail++;
p[tail]=orgin[a];
// for(int i=head+1;i<=tail;i++){
// cout<<p[i].value<<" ";
// }
// cout<<endl;
if(a>=k) cout<<p[head+1].value<<" ";
}
void _max(ll a){
if(a-p[head+1].num==k){
head++;
}
while(tail>=head+1 and p[tail].value<orgin[a].value){
p[tail].value=0;
p[tail].num=0;
tail--;
}
tail++;
p[tail]=orgin[a];
// for(int i=head+1;i<=tail;i++){
// cout<<p[i].value<<" ";
// }
// cout<<endl;
if(a>=k) cout<<p[head+1].value<<" ";
}
int main()
{
cin>>n>>k;
for(ll i=1;i<=n;i++){
scanf("%ld",&orgin[i].value);
orgin[i].num=i;
}
for(ll i=1;i<=n;i++){
_min(i);
}
cout<<endl;
head=0;tail=1;
for(ll i=1;i<=n;i++){
_max(i);
}
return 0;
}