func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long N = 2 * 1e5 + 100;   long long n, k, s, t, c[N], v[N], g[N], d[N], sum[N];   inline long long read() {     long long f = 1, x = 0;     char s = getchar();     while (s <  0  || s >  9 ) {       if (s ==  - ) f = -1;       s = getchar();     }     while (s >=  0  && s <=  9 ) {       x = x * 10 + s -  0 ;       s = getchar();     }     return x * f;   }   signed main() {     n = read();     k = read();     s = read();     t = read();     for (long long i = 1; i <= n; i++) c[i] = read(), v[i] = read();     for (long long i = 1; i <= k; i++) g[i] = read();     sort(g + 1, g + 1 + k);     for (long long i = 1; i <= k; i++) d[i] = g[i] - g[i - 1];     d[k + 1] = s - g[k];     k++;     sort(d + 1, d + 1 + k);     for (long long i = 1; i <= k; i++) sum[i] = sum[i - 1] + d[i];     if (t < s) {       printf( -1 n );       return 0;     }     long long MIN = 0x3f3f3f3f;     for (long long i = 1; i <= n; i++) {       if (v[i] < d[k]) continue;       long long pos = upper_bound(d + 1, d + 1 + k, v[i] / 2) - d - 1;       long long all = sum[pos] + (sum[k] - sum[pos]) * 3 - (k - pos) * v[i];       if (all <= t) MIN = min(MIN, c[i]);     }     if (MIN == 0x3f3f3f3f)       printf( -1 n );     else       printf( %lld n , MIN);   }   