#include<bits/stdc++.h>
using namespace std;
struct num
{
int val,id;
bool operator < (const num t) const
{
return val<t.val;
}
};
struct num2
{
int val,id;
bool operator < (const num2 t) const
{
return val>t.val;
}
};
int a[1000005];
priority_queue<num> q;
priority_queue<num2> q2;
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for (int i=1;i<=k;i++)
{
scanf("%d",&a[i]);
q2.push({a[i],i});
}
printf("%d ",q2.top().val);
for (int i=k+1;i<=n;i++)
{
cin>>a[i];
q2.push({a[i],i});
while (!q2.empty()&&q2.top().id<=i-k)
{
q2.pop();
}
printf("%d ",q2.top().val);
}
printf("\n");
for (int i=1;i<=k;i++)
{
q.push({a[i],i});
}
printf("%d ",q.top().val);
for (int i=k+1;i<=n;i++)
{
q.push({a[i],i});
while (!q.empty()&&q.top().id<=i-k)
{
q.pop();
}
printf("%d ",q.top().val);
}
return 0;
}