N,K,Q = map(int,input().split())
A = list(map(int,input().split()))
B = sorted(A)
L = [[i,B[i+Q-1] - B[i]] for i in range(N-Q+1)]
sL = sorted(L,key=lambda x:x[1])

if Q == 1:
    # 一つしか選ばない -> max == min -> 0
    print(0)
    exit()
if Q == N - K + 1:
    print(L[0][1])
    exit()
if K == 1:
    # 一つずつ選べる -> 必ず最小のパターンに出来る
    print(sL[0][1])
    exit()

if sL[0][0] == 0:
    # minが最小の時 最小のパターンになる時
    print(sL[0][1])
    exit()

a = A[N-K-Q+1:K+Q-1]
# 必ず選ばないといけない要素
if a:
    m_index = B.index(min(a))
    if m_index == 0:
        # 必ず最小値が含まれるなら
        print(L[0][1])
        exit()
    sL = [i for i in sL if i[0] <= m_index]
    # 最小値の幅が狭まるためsLを更新
for key,value in sL:
    f = False
    for b_value in B[key:key+Q]:
        a_indeces = [i for i, x in enumerate(A) if x == b_value]
        for a_index in a_indeces:
            length = 1
            for j in range(a_index-1,a_index-K,-1):
                if j < 0:
                    break 
                if A[j] < b_value:
                    break
                length += 1
            for j in range(a_index+1,a_index+K):
                if j > N-1:
                    break 
                if A[j] < b_value:
                    break
                length += 1
            if length >= K:
                f = True
                break
        if not f:
            break
        
    if f:
        print(value)
        exit()

print(L[0][1])
