#include<iostream>
#include<algorithm>
using namespace std;
const int n = 1e5 + 5;
int N,M, C;
int a[n];
bool check(int mid)
{
int now = 0;
int j = 0;
int cnt = 0;
for (int i = 0; i < N; i++)
{
j++;
if (a[i] - now > mid || j>C)
{
cnt++;
j = 0;
now = a[i];
}
}
return cnt <= M;
}
int binary_search(int l, int r)
{
while (l <= r)
{
int mid = (l + r) >> 1;
if (check(mid))
{
r = mid-1;
}
else
{
l = mid + 1;
}
}
return r;
}
int main()
{
cin >> N >> M >> C;
for (int i = 0; i < N; i++) cin >> a[i];
sort(a, a + N);
cout << binary_search(0, a[N - 1]) << endl;
}