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.*;
import java.util.*;
public class Main
{
	static class FastReader
	{
		BufferedReader br;
		StringTokenizer st;
		public FastReader()
		{
			br=new BufferedReader(new InputStreamReader(System.in));
		}
		String next()
		{
			while(st==null || !st.hasMoreElements())
			{
				try{
				st= new StringTokenizer(br.readLine());
			}
			catch(IOException e)
			{
				e.printStackTrace();
			}
			}
			return st.nextToken();
		}
		int nextInt()
		{
			return Integer.parseInt(next());
		}
		double nextDouble()
		{
			return Double.parseDouble(next());

		}
		String nextLine()
		{
			String s="";
			try
			{
				s=br.readLine();
			}
			catch(IOException e)
			{
				e.printStackTrace();
			}
			return s;
		}
		Long nextLong()
		{
			return Long.parseLong(next());
		}
	}

		static class Car implements Comparable<Car>
		{
				long c;
				long v;
				public Car(long c,long v)
				{
					this.c=c;
					this.v=v;
				}
				public int compareTo(Car k)
				{
					if(c==k.c)
						return 0;
					else
					{
						if(c>k.c)
							return 1;
						else
							return -1;
					}
				} 
		}
	public static void main(String ar[])
	{
		FastReader s=new FastReader();
		PrintWriter out=new PrintWriter(System.out);
		int n=s.nextInt();
		int k=s.nextInt();
		long d=s.nextLong();
		long t=s.nextLong();
		ArrayList<Car> a=new ArrayList<Car>();
		for(int j=0;j<n;j++)
			a.add(new Car(s.nextLong(),s.nextLong()));
		Collections.sort(a);
		//System.out.println("hello 1");
		int gd[]=new int[k+2];
		int lastg=0;
		int g[]=new int[k+1];
		for(int j=1;j<=k;j++)
			g[j]=s.nextInt();
		Arrays.sort(g);
		//for(int p=1;p<=k;p++)
		//	System.out.print(g[p]+" " );
		for(int j=1;j<=k;j++)
		{
			//int temp=s.nextInt();
			gd[j]=g[j]-g[j-1];
			//System.out.println("j== "+j+" gd[j] = = "+gd[j]);
			//lastg=temp;
		}	
		//System.out.println("hello 2");
		gd[k+1]=(int)d-g[k];
		Arrays.sort(gd);
		//for(int p=1;p<=k+1;p++)
		//	System.out.print(gd[p]+" " );
		//System.out.println();
		for(int j=n-1;j>=0;j--)
		{
			//System.out.println("   a(j) = = = "+a.get(j).v+" gd[k+1] = = "+gd[k+1] );
			if(a.get(j).v<gd[k+1])
				{	//	System.out.println("removing = ==  = "+ j);
					a.remove(j);
				}
		}
		for(int j=0;j<a.size();j++)
		{
			long t1=0;
			for(int x=1;x<=k+1;x++)
				t1+=2*gd[x]-Math.round(Math.min(gd[x],(int)(a.get(j).v-gd[x])));
		//	out.println(a.get(j).c+" " +t1);
			if(t1<=t)
			{
				out.print(a.get(j).c);
				break;
			}

		}
		out.close();
	}
}