#include<bits/stdc++.h>
#define maxn 262144
using namespace std;
int read(){
	int x=0,c;while(!isdigit(c=getchar()));
	while(x=x*10+c-'0',isdigit(c=getchar()));
	return x;
}
struct node{
	int x,id;
}a[maxn];
bool cmp(node x,node y){
	return x.x<y.x;
}
int n,m,k,vis[maxn],c[maxn],d[maxn],b[maxn];
int ans=1e9;
void work(){
	int cnt=0,tot=0;
	for(int i=1,j;i<=n;){
		j=i;while(j<=n&&vis[j]==0)j++;
		cnt=0;for(int t=i;t<j;t++)c[++cnt]=b[t];
		sort(c+1,c+cnt+1);
		for(int t=1;t<=cnt-m+1;t++)d[++tot]=c[t];
		while(j<=n&&vis[j]==1)j++;
		i=j;
	}
	sort(d+1,d+tot+1);
	if(tot<k)return;
	ans=min(ans,d[k]-d[1]);
}
int main(){
	n=read();m=read();k=read();
	for(int i=1;i<=n;i++)a[i].x=b[i]=read(),a[i].id=i;
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++){
		work();vis[a[i].id]=1;
	}
	printf("%d\n",ans);
	return 0;
}
