#include <bits/stdc++.h>
#define int long long
using namespace std ;
int n , k , que[100010] , ma[100010] , mi[10010] , l , r , a[100010];
int macnt = 1 ;
int micnt = 1 ;
signed main(){
cin >> n >> k ;
l = 1 ;
r = 1 ;
int cnt = 0 ;
for( int i = 1 ; i <= n ; i ++ ){
cnt ++ ;
cin >> a[i] ;
if( l == r ){
que[r] = i ;
r ++ ;
}else{
bool mark = false ;
while( a[que[r]] < a[i] && r > l ){
r -- ;
mark = true ;
}
if( mark == false ){
r ++ ;
que[r] = i ;
}else{
que [r] = i ;
r ++ ;
}
if( cnt >= k ){
ma[macnt] = que[l] ;
macnt ++ ;
if( i - k + 1 > l ){
l ++ ;
}
}
}
}
l = 1 ; r = 1 ;
cnt = 0 ;
memset ( que , 0 , sizeof(que));
for( int i = 1 ; i <= n ; i ++ ){
cnt ++ ;
if( l == r ){
que[r] = i ;
r ++ ;
}else{
bool mark = false ;
while( a[que[r]] > a[i] && r > l ){
r -- ;
mark = true ;
}
if( mark == false ){
r ++ ;
que[r] = i ;
}else{
que[r] = i ;
r ++ ;
}
if( cnt >= k ){
mi[micnt] = que[l];
micnt++;
if( i - k + 1 >l){
l ++ ;
}
}
}
}
for( int i =1 ; i <= n - k + 1; i ++ ){
cout << a[mi[i] ]<<" ";
}
cout << endl;
for( int i = 1 ; i <= n - k + 1 ; i ++ ){
cout << a[ma[i] ]<<" ";
}
cout << endl;
return 0 ;
}