import sys input = sys.stdin.readline from bisect import bisect_left N,L=list(map(int,input().split())) K=int(input()) A=list(map(int,input().split())) A=[0]+A+[L] OK=1 NG=L+1 while NG>OK+1: mid=(OK+NG)//2 DP0=[0]*len(A) DP1=[-100]*len(A) DP2=[-100]*len(A) for i in range(len(A)-1): x=DP0[i] DP0[i+1]=max(DP0[i+1],x+1) k=bisect_left(A,A[i]+mid) if k=K+1: OK=mid else: NG=mid #print(mid) #print(DP0) #print(DP1) #print(DP2) print(OK)