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 java.util.*;

public class Solution
{
       static int n,k,s,t;
       static int c[] , v[] , g[];
       
       static boolean check(int x)
       {
              long tt = 0;
              for(int i = 0 ; i < k+1 ; i++)
              {
                     int dist = g[i+1] - g[i];
                     if(x < dist)
                     return false;
                     
                     int xx = Math.min(x-dist , dist);
                     int yy = dist - xx;
                     
                     
                     tt += xx + 2*yy;
              }
              if(tt <= t)
              return true;
              
              return false;
       }
       public static void main(String []args)
       {
              Scanner sc = new Scanner(System.in);
              n = sc.nextInt();
              k = sc.nextInt();
              s = sc.nextInt();
              t = sc.nextInt();
              
              c = new int[n];
              v = new int[n];
              g = new int[k+2];
              g[0] = 0;
              g[1] = s;
              for(int i = 0 ; i < n ; i++)
              {
                     c[i] = sc.nextInt();
                     v[i] = sc.nextInt();
              }
              for(int i = 2 ; i <= k+1 ; i++)
              {
                     g[i] = sc.nextInt();
              }
              Arrays.sort(g);
              int l = 1 , r = 1000000010;
              while(l < r)
              {
                     int mid = (l+r)/2;
                     if(check(mid))
                     r = mid;
                     
                     else
                     l = mid+1;
              }
              int min = Integer.MAX_VALUE;
              for(int i = 0 ; i < n ; i++)
              {
                     if(v[i] >= l)
                     min = Math.min(min,c[i]);
              }
              if(min == Integer.MAX_VALUE)
              System.out.println(-1);
              
              else
              System.out.println(min);
       }
}