#include <bits/stdc++.h>
using namespace std;
int d1[int(4e5+10)],a[int(1e5+10)],d2[int(4e5+10)];
void build1(int s,int t,int p)
{
if(s==t)
{
d1[p]=a[s];
return;
}
int m=s+((t-s)>>1);
build1(s,m,p*2);
build1(m+1,t,p*2+1);
d1[p]=max(d1[p*2],d1[p*2+1]);
}
void build2(int s,int t,int p)
{
if(s==t)
{
d2[p]=a[s];
return;
}
int m=s+((t-s)>>1);
build2(s,m,p*2);
build2(m+1,t,p*2+1);
d2[p]=min(d2[p*2],d2[p*2+1]);
}
int query1(int l,int r,int s,int t,int p)
{
if(l<=s&&t<=r) return d1[p];
int m=s+((t-s)>>1);
int ans=-2e9;
if(l<=m) ans=max(ans,query1(l,r,s,m,p*2));
if(m<=r) ans=max(ans,query1(l,r,m+1,t,p*2+1));
return ans;
}
int query2(int l,int r,int s,int t,int p)
{
if(l<=s&&t<=r) return d2[p];
int m=s+((t-s)>>1);
int ans=2e9;
if(l<=m) ans=min(ans,query2(l,r,s,m,p*2));
if(m<=r) ans=min(ans,query2(l,r,m+1,t,p*2+1));
return ans;
}
int main()
{
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
build1(1,n,1);
build2(1,n,1);
for(int i=1;i<=n-k+1;i++) cout<<query2(i,i+k-1,1,n,1)<<' ';
cout<<endl;
for(int i=1;i<=n-k+1;i++) cout<<query1(i,i+k-1,1,n,1)<<' ';
return 0;
}