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

/*     !ya khoda!     */#include <bits/stdc++.h>
using namespace std;
long long n,k,s,t , l,mid,r=100000000000 , ans=100000000000  ,  m      ,     c[2001000],v[2001000],g[2001000];
bool check(long long x)   {   m=0;
	for(int i=0;i<k;i++)   {
		if(g[i]>x)          return 0;
		if(2*g[i]<=x)   {   m+=g[i];   continue;   }
		m+=3*g[i]-x;   }
	return(m<=t);   }
int main()   {
	ios_base::sync_with_stdio(false) , cin.tie(0) , cout.tie(0);
	cin>>n>>k>>s>>t;
	for(int i=0;i<n;i++)   cin>>c[i]>>v[i];
    for(int i=0;i<k;i++)   cin>>g[i];
	sort(g,g+k) , g[k]=s , k++;
	for(int i=k-1;i>0;i--)   g[i]-=g[i-1];
	while(r-l>1)   {
		mid=(l+r)/2;
		if(check(mid))   r=mid;
		else             l=mid;   }
	for(int i=0;i<n;i++)
		if(v[i]>=r)
			ans=min(ans,c[i]);
	return cout<<(ans==100000000000?-1:ans),0;   }
