#t = int(input()) t = 1 for _ in range(t): n,l = map(int, input().split()) k = int(input()) a = [0] + list(map(int, input().split())) + [l] from bisect import bisect_left cur = bisect_left(a,l/2) if l/2 - a[cur-1] < a[cur]-l/2: cur -= 1 li = [] r = [] for i in range(cur+1): li.append(a[i]) for i in range(cur,n+2): r.append(a[i]-a[cur]) ll,lr,rl,rr = 0,len(li)-1,0,len(r)-1 for i in range(k-1): if ll != lr: m1 = min(li[lr]-li[ll+1],r[rr]-r[rl]) m2 = min(li[lr-1]-li[ll],r[rr]-r[rl]) else: m1 = -10**18 m2 = -10**18 if rl != rr: m3 = min(li[lr]-li[ll],r[rr]-r[rl+1]) m4 = min(li[lr]-li[ll],r[rr-1]-r[rl]) else: m3 = -10**18 m4 = -10**18 ma = max(m1,m2,m3,m4) if ma == m1: ll += 1 elif ma == m2: lr -= 1 elif ma == m3: rl += 1 else: rr -= 1 #print(li,r,ll,lr,rl,rr) ma = min(li[lr]-li[ll],r[rr]-r[rl]) print(ma)