#include<bits/stdc++.h>
using namespace std;
const int N=2e3+10;
int n,k,q;
int a[N],c[N];
pair<int,int> sor[N];
void movit(int l,int r){
	memset(c,0,sizeof(c));
	for(int i=l;i<=r;i++)
		c[sor[i].second]=1;
	for(int i=r+1;i<=n;i++)
		c[sor[i].second]=2;
}
bool  judge(){
	int ans=0,len=0,h=0;
	for(int i=1;i<=n+1;i++)
		if(c[i]) len++,h+=2-c[i];
		else{
			ans+= len>=k ? min(len-k+1,h):0;
			len=0,h=0;
		}
	return ans>=q;
}
int main()
{	
	scanf("%d%d%d",&n,&k,&q);
	for(int temp,i=1;i<=n;i++){
		scanf("%d",&a[i]);sor[i]=make_pair(a[i],i);
	}
	sort(sor+1,sor+n+1);
	int ans=1e9+10;
	for(int i=1;i<=n;i++){
		int l=i,r=n+1;
		while(l<r){
			int mid=(l+r)>>1;
			movit(i,mid);
			if(judge()) r=mid;
			else l=mid+1;
		}
		if(l>n) continue;
		ans=min(ans,sor[l].first-sor[i].first);
	}
	cout<<ans;
	return 0;
}