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.io.FileNotFoundException;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main{
    public static void main(String[] args) throws FileNotFoundException {
        Scanner scanner =new Scanner(System.in);
//        Scanner scanner =new Scanner(new FileInputStream("src/in.txt"));
        int n=scanner.nextInt();
        int k=scanner.nextInt();
        int s=scanner.nextInt();
        int t=scanner.nextInt();
        int [] c=new int[n];
        int [] v=new int[n];
        for(int i=0;i<n;i++){
            c[i]=scanner.nextInt();
            v[i]=scanner.nextInt();
        }
        int pre = 0;
        int []g=new int[k];
        for(int i=0;i<k;i++){
            g[i]=scanner.nextInt();
        }
        Arrays.sort(g);


        List<Integer> list = new LinkedList<>();
        for(int i=0;i<k;i++){
            int cnt = g[i];
            list.add(cnt-pre);
            pre=cnt;
        }
        list.add(s-pre);

        int l=0,r=Integer.MAX_VALUE/2;
        int ans = -1;
        while (r>=l){
            int mid=(l+r)>>1;
            int cost = 0;
            for(int p:list){
                if(p>mid){
                    cost=Integer.MAX_VALUE;
                    break;
                }

                if(p*2<=mid){
                    cost+=p;
                }else{
                    cost+=3*p-mid;
                }
            }

            if(cost>t){
                l=mid+1;
            }else{
                ans=mid;
                r=mid-1;
            }
//            System.out.println(mid+" "+cost);
        }

        int ret = Integer.MAX_VALUE;
        for(int i=0;i<n;i++){
            if(ans<=v[i]){
                ret=Math.min(ret,c[i]);
            }
        }
        if(ret==Integer.MAX_VALUE){
            ret=-1;
        }
        System.out.println(ret);


    }
}