#include <bits/stdc++.h>
using namespace std;
int in(int &a, int &b, int &c, int &d) {
  return scanf("%d%d%d%d", &a, &b, &c, &d);
}
int in(int &a, int &b, int &c) { return scanf("%d%d%d", &a, &b, &c); }
int in(int &a, int &b) { return scanf("%d%d", &a, &b); }
int in(long long &a) { return scanf("%lld", &a); }
int in(int &a) { return scanf("%d", &a); }
int in(char *s) { return scanf("%s", s); }
int in(char &s) { return scanf("%c", &s); }
int in(long double &a) { return scanf("%Lf", &a); }
void out(int a) { printf("%d", a); }
void outln(int a) { printf("%d\n", a); }
void out(long long a) { printf("%lld", a); }
void outln(long long a) { printf("%lld\n", a); }
const long double pi = acos((long double)-1);
const long long inf = 2.1e9;
const long double eps = 1e-8;
const int N = 2.1e5;
const long long mod = 1e9 + 7;
int sign(long double a) { return a < -eps ? -1 : a > eps; }
int db_cmp(long double a, long double b) { return sign(a - b); }
int a[N], b[N];
int main() {
  int n, m, ta, tb, k;
  in(n, m, ta, tb);
  in(k);
  for (int i = 0; i < n; i++) {
    in(a[i]);
    a[i] += ta;
  }
  for (int i = 0; i < m; i++) in(b[i]);
  if (k >= min(n, m)) {
    puts("-1");
    return 0;
  }
  int ans = 0;
  for (int i = 0; i < k + 1; i++) {
    int p = lower_bound(b, b + m, a[i]) - b;
    p += k - i;
    if (p >= m) {
      ans = -1;
      break;
    } else
      ans = max(ans, b[p]);
  }
  if (ans < 0)
    puts("-1");
  else
    outln(ans + tb);
  return 0;
}
