#include <bits/stdc++.h>
#define r(i,n) for(int i=0;i<n;i++)
using namespace std;
typedef pair<int,int>P;
int n,k,q;
bool used[20009];
map<int,vector<int> >M;

int main(){
  priority_queue<P,vector<P>,greater<P> >q;
  int ans=1e9;
  map<int,int>m;
  cin>>n>>k>>q;
  for(int i=0;i<n;i++){
    cin>>a[i];
    q.push(P(a[i],i));
    m[a[i]]++;
    M[a[i]].push_back(i);
  }
  int ans=1e9;
  int mi=1e9;
  int ma=0;
  int num=k;
  r(i,k-1){
    P p=q.top();q.pop();
    mi=min(mi,p.first);
    ma=max(ma,p.first);
    used[p.second]=1;
  }
  for(int i=k-1;i<n;i++){
    P p.q.top();q.pop();
    if(p.first<mi)continue;
    if(num==k){
      vector<int>v=M[mi];
      r(j,v.size())used[v[j]]=0;
      continue;
    }
    int l=p.second;
    int r=p.second;
    int cnt1=0,cnt2=0;
    while(1){
      if(l==0)break;
      if(used[l-1])cnt1++;
      else if(a[l-1]<p.first)break;
      l--;
    }
    while(1){
      if(r==n-1)break;
      if(used[r+1])cnt1++;
      else if(a[r+1]<p.first)break;
      r++;
    }
    if(cnt2-cnt>k)continue;
    used[p.second]=1;
    ans=min(ans,ma-mi);
  }
  cout<<ans<<endl;
}