#include using namespace std; #define int long long int t[80008]; const int inf = 1e16; void update(int v,int l,int r,int p,int x){ if(l==r){ t[v] = x; return; } int m = (l+r)/2; if(p<=m) update(2*v,l,m,p,x); else update(2*v+1,m+1,r,p,x); t[v] = min(t[2*v],t[2*v+1]); return; } int query(int v,int l,int r,int ll,int rr){ if(l==ll && r==rr) return t[v]; int m = (l+r)/2; int x = inf; if(ll<=m) x = query(2*v,l,m,ll,min(rr,m)); if(rr>m) x = min(x,query(2*v+1,m+1,r,max(ll,m+1),rr)); return x; } signed main() { int n,k; cin >> n >> k; for(int i=0;i<8008;i++) t[i] = inf; int a[n]; for(int i=0;i> a[i]; int d[n+1]; for(int i=0;i<=k;i++){ update(1,0,n-1,i,a[i]); d[i] = a[i]; } for(int i=k+1;i=0 && i>=(n-1-k);i--) m = min(m,d[i]); cout << m; return 0; }