#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 4000000000000000001LL int main(){ int N,L; cin>>N>>L; int K; cin>>K; vector a(N); rep(i,N){ cin>>a[i]; } a.push_back(L); a.insert(a.begin(),0); N = a.size(); long long ok = 0,ng = L+1; while(ng-ok>1LL){ long long mid = (ok+ng)/2; vector dp(N,vector(3,-Inf32)); dp[0][0] = 0; rep(i,N-1){ rep(j,3){ dp[i+1][j] = max(dp[i][j]+1,dp[i+1][j]); int d = distance(a.begin(),lower_bound(a.begin(),a.end(),a[i] + mid)); if(j!=2 && d != a.size()){ dp[d][j+1] = max(dp[i][j]+1,dp[d][j+1]); } } } if(dp[N-1][2] >= K+1)ok = mid; else ng = mid; } cout<