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

n, k, s, t = map(int, input().split())
cars = []
val = []
lastp = 0
res = 0
lastt = 2000000001
lastq = 2000000001
lt = t
for i in range(n):
    c,v = map(int, input().split())
    cars.append(c)
    val.append(v)
g = list(map(int, input().split()))
g = sorted(g)
for y in range(n):
    mini = min(cars)
    idc = cars.index(mini)
    minival = val[idc]
    cars.remove(mini)
    val.remove(minival)
    for i in range(k):
        a = minival
        
        g[i] = g[i]-lastp
        if g[i]*2<=a:
            t-=(g[i])
            a = 0
            
        else:
            
            while g[i]*2>a:
                g[i]-=1
                a-=1
                t-=2
                if g[i]*2<=a:
                    t -=g[i]
                    a = 0
        lastp = g[i]
    

    rast = s-lastp

    while (rast*2)>minival and minival>0 and rast>0:
        print(rast)
        print(minival)
        rast-=1
        minival-=1
        t-=2
        if (rast*2)<=minival:
            t-=rast
            minival = 0
    lastp = 0
    if t>=0 and lastq>mini:
        lastq = mini
        #print(lastq)
    else:
         ot = 0
    t = lt
        

print(lastq)


         
            
