#include <bits/stdc++.h>
using namespace std;
template <class F, class T>
T convert(F a, int p = -1) {
  stringstream ss;
  if (p >= 0) ss << fixed << setprecision(p);
  ss << a;
  T r;
  ss >> r;
  return r;
}
template <class T>
T gcd(T a, T b) {
  T r;
  while (b != 0) {
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}
template <class T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <class T>
T sqr(T x) {
  return x * x;
}
template <class T>
T cube(T x) {
  return x * x * x;
}
template <class T>
int getbit(T s, int i) {
  return (s >> i) & 1;
}
template <class T>
T onbit(T s, int i) {
  return s | (T(1) << i);
}
template <class T>
T offbit(T s, int i) {
  return s & (~(T(1) << i));
}
template <class T>
int cntbit(T s) {
  return s == 0 ? 0 : cntbit(s >> 1) + (s & 1);
}
const int bfsz = 1 << 16;
char bf[bfsz + 5];
int rsz = 0;
int ptr = 0;
char gc() {
  if (rsz <= 0) {
    ptr = 0;
    rsz = (int)fread(bf, 1, bfsz, stdin);
    if (rsz <= 0) return EOF;
  }
  --rsz;
  return bf[ptr++];
}
void ga(char &c) {
  c = EOF;
  while (!isalpha(c)) c = gc();
}
int gs(char s[]) {
  int l = 0;
  char c = gc();
  while (isspace(c)) c = gc();
  while (c != EOF && !isspace(c)) {
    s[l++] = c;
    c = gc();
  }
  s[l] = '\0';
  return l;
}
template <class T>
bool gi(T &v) {
  v = 0;
  char c = gc();
  while (c != EOF && c != '-' && !isdigit(c)) c = gc();
  if (c == EOF) return false;
  bool neg = c == '-';
  if (neg) c = gc();
  while (isdigit(c)) {
    v = v * 10 + c - '0';
    c = gc();
  }
  if (neg) v = -v;
  return true;
}
const long double PI = acos(-1.0);
const long double eps = 1e-9;
const int dr[] = {-1, 0, +1, 0};
const int dc[] = {0, +1, 0, -1};
const int inf = (int)1e9 + 5;
const long long linf = (long long)1e16 + 5;
const long long mod = (long long)(1e9 + 7 + eps);
int n, m, a, b;
int h1[200005], h2[200005], d[200005];
long double dist(int id1, int id2) {
  return sqrt(sqr(a * 1.0) + sqr(h1[id1] * 1.0)) +
         sqrt(sqr((a - b) * 1.0) + sqr((h1[id1] - h2[id2]) * 1.0)) + d[id2];
}
int main() {
  cin >> n >> m >> a >> b;
  for (int i = (1); i <= (n); ++i) scanf("%d", &h1[i]);
  for (int i = (1); i <= (m); ++i) scanf("%d", &h2[i]);
  for (int i = (1); i <= (m); ++i) scanf("%d", &d[i]);
  h1[n + 1] = inf;
  h1[0] = -inf;
  long double res = linf, x;
  int u = 0;
  pair<int, int> P;
  for (int i = (1); i <= (m); ++i) {
    x = h2[i] * 1.0 * a / b;
    while (h1[u + 1] <= x) u++;
    long double D = dist(u, i);
    if (D < res) {
      res = D;
      P = make_pair(u, i);
    }
    D = dist(u + 1, i);
    if (D < res) {
      res = D;
      P = make_pair(u + 1, i);
    }
  }
  cout << P.first << " " << P.second << endl;
  return 0;
}
