#include <cstdio>
#include <iostream>
using namespace std;
//抄博友程序 博友的deque程序超时 特别容易超时 用数组的巧妙 没掌握需复习
const int MAXN=1000000+10;
int maxq[MAXN];
int minq[MAXN];
int da[MAXN];
int jgd[MAXN];
int jgx[MAXN];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
int maxtail=0,maxhead=0,mintail=0,minhead=0;
for(int i=0;i<n;i++)
{
if(maxhead<maxtail && maxq[maxhead]<=(i-m))maxhead++;//巧妙
if(minhead<mintail && minq[minhead]<=(i-m))minhead++;
scanf("%d",&da[i]);//位置 抄博友
while(maxhead<maxtail && da[maxq[maxtail-1]]<=da[i])maxtail--;//抄博友 数组队列没掌握
maxtail++;
maxq[maxtail-1]=i;//抄博友 数组队列没掌握
while(minhead<mintail && da[minq[mintail-1]]>=da[i])mintail--;
mintail++;
minq[mintail-1]=i;
jgd[i]=da[maxq[maxhead]];//抄博友
jgx[i]=da[minq[minhead]];
}
/*
for(int i=m-1;i<n;i++)//抄博友 TLE
{
printf("%d ",jgx[i]);
}
printf("\n");
for(int i=m-1;i<n;i++)
{
printf("%d ",jgd[i]);
}
printf("\n");*/
for (int i=m-1;i<n;i++) cout<<jgx[i]<<' ';cout<<endl;//必不可少
for (int i=m-1;i<n;i++) cout<<jgd[i]<<' ';cout<<endl;
}
return 0;
}