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.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class TaskC {

    public static void main(String[] args) throws IOException {


        BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));
        String[] array = scan.readLine().split(" ");
        int n = Integer.parseInt(array[0]);
        int k = Integer.parseInt(array[1]);
        int s = Integer.parseInt(array[2]);
        int t = Integer.parseInt(array[3]);

        int[] bak = new int[n];
        int[] cost = new int[n];
        for (int i = 0; i < n; i++) {
            String[] arr = scan.readLine().split(" ");
            cost[i] = Integer.parseInt(arr[0]);
            bak[i] = Integer.parseInt(arr[1]);
        }

        String[] z = scan.readLine().split(" ");
        int[] p = new int[z.length];
        for (int i = 0; i < z.length; i++) {
            p[i] = Integer.parseInt(z[i]);
        }
        Arrays.sort(p);
        int[] zap = new int[z.length + 1];
        for(int i = 0; i < z.length; i++){
            if(i == 0) zap[0] = p[i]; else zap[i] =  - p[i - 1] + p[i];
        }
        zap[z.length] = s - p[z.length - 1];
        Arrays.sort(zap);
        int max = zap[zap.length - 1] * 2;

        int arend = 0;
        for (int i = 0; i < n; i++) {
            if(bak[i] >= max){
                if(cost[i] < arend || arend == 0) arend = cost[i];
            }
        }

        if(arend == 0){
            max = max/2;
            for (int i = 0; i < n; i++) {
                if(bak[i] >= max){
                    if(cost[i] < arend || arend == 0){
                        arend = cost[i];
                        max = bak[i];
                    }
                }
            }
            if(arend == 0){
                System.out.println("-1");
            }else System.out.println(arend);
        }else System.out.println(arend);

    }

}