1 1 2 2
1000000000 1000000000
1
 1 1 1000000000 1000000000
100 1000000000
1
 1 1 10 18
5 6
5
 2 1 1000000000 2000000000
111 999999999
101 999999998
1
 4 13 400 600
13 30
1 19
1 160
1 113
58 73 15 319 194 362 128 157 336 162 77 90 96
 1 15 100 200
283 8
30 58 16 45 80 82 55 95 24 23 86 28 51 47 20
 3 2 300 400
24 68
13 65
15 113
127 177
 1 1 2 1
1 10
1
 4 2 7 15
10 9
4 4
9 3
4 10
1 6
 2 1 1000000000 2000000000
111 1000000000
101 1000000000
5
 2 1 1000000000 2000000000
111 999999998
101 999999998
1
 1 1 1000000000 1000000000
1 1000000000
1

1000000000
 -1
 5
 111
 1
 -1
 -1
 -1
 4
 101
 -1
 -1

import sys
input = sys.stdin.readline

N = int(2e5+1)
n, k, s, t = map(int, input().split())
car = [list(map(int, input().split())) for _ in range(n)]
g = sorted(list(map(int, input().split()))) + [0]
g[k] = s - g[k - 1]
for i in range(k-1, 0, -1):
    g[i] -= g[i - 1]

def is_valid(g, k, v, t):
    need = 0
    for i in range(k+1):
        need += max(g[i], 3 * g[i] - v)
    return need <= t
    
def binary_search(g, k):
    l, r = max(g), int(2e9)
    while l < r:
        v = l + (r - l) // 2
        if is_valid(g, k, v, t):
            r = v
        else:
            l = v + 1
    return l

l = binary_search(g, k)
res = int(2e9)
for i in range(n):
    if car[i][1] >= l:
      res = min(res, car[i][0])
print(-1 if res == int(2e9) else res)
