// 求 [i-m+1, i] 的最值
deque<int> que;
for (int i = 1 ; i <= n ; i++) {
while (!que.empty() && a[que.back()] >= a[i]) que.pop_back();
que.emplace_back(i);
while (que.front() <= i - m) que.pop_front();
if (i >= m) mi.emplace_back(a[que.front()]);
}
for (int i = 0 ; i < n - m + 1 ; i++) cout << mi[i] << " \n"[i == n - m];
deque<int>().swap(que);
for (int i = 1 ; i <= n ; i++) {
while (!que.empty() && a[que.back()] <= a[i]) que.pop_back();
que.emplace_back(i);
while (que.front() <= i - m) que.pop_front();
if (i >= m) mx.emplace_back(a[que.front()]);
}
for (int i = 0 ; i < n - m + 1 ; i++) cout << mx[i] << " \n"[i == n - m];