/*
1. 需要维护:尾部插入,删除,头部删除,查找-->所以用deque
2. deque队列维护的是下标值,不是值
*/
#include<bits/stdc++.h>
using namespace std;
int n,k;
int a[1000010];
deque<int> dq;
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
while(!dq.empty() && a[dq.back()] > a[i])
dq.pop_back();
if(!dq.empty() && i-dq.front()>=k)
dq.pop_front();
dq.push_back(i);
if(i>=k-1)
cout<<a[dq.front()]<<" ";
}
cout<<endl;
dq.clear();
for(int i=0;i<n;i++)
{
//dq.push_back(i);不可以放前面,否则a[dq.back()] < a[i]就是执行的a[i]< a[i]
while(!dq.empty() && a[dq.back()] < a[i])
dq.pop_back();
if(!dq.empty() && i-dq.front()>=k)
dq.pop_front();
dq.push_back(i);
if(i>=k-1)
cout<<a[dq.front()]<<" ";
}
//错误:不可以存值,存下标不会出错
/*
输入:
8 3
8 7 6 7 7 6 5 4
输出:
6 6 6 6 5 4
8 8 7 7 7 6
*/
// for(int i=0;i<n;i++)
// {
// while(!dq.empty() && dq.back() < a[i])
// dq.pop_back();
// if(!dq.empty() && dq.size()>=k)
// dq.pop_front();
// dq.push_back(a[i]);
// if(i>=k-1)
// cout<<dq.front()<<" ";
// }
return 0;
}