#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
const double eps = 1e-4;
int n, m, aa, ab, app[20 * N];
double tmp;
struct QQ {
  int id;
  double y, l;
} x[N], y[N];
double a, b, L[N], c;
bool check(double x1, double y1, double x2, double y2) {
  return x1 * y2 >= x2 * y1;
}
bool comp(QQ ag1, QQ ag2) { return ag1.y < ag2.y; }
double calc(int i, int j) {
  return x[i].l +
         sqrt((a - b) * (a - b) + (x[i].y - y[j].y) * (x[i].y - y[j].y)) +
         y[j].l;
}
int main() {
  scanf("%d %d", &n, &m);
  scanf("%lf", &tmp);
  a = tmp;
  scanf("%lf", &tmp);
  b = tmp;
  for (int i = 1; i <= n; i++) {
    scanf("%lf", &tmp);
    x[i].y = tmp;
    x[i].id = i;
    x[i].l = sqrt(a * a + x[i].y * x[i].y);
  }
  for (int i = 1; i <= m; i++) {
    scanf("%lf", &tmp);
    y[i].y = tmp;
    y[i].id = i;
  }
  for (int i = 1; i <= m; i++) {
    scanf("%lf", &tmp);
    y[i].l = tmp;
  }
  aa = ab = -1;
  c = 1e20;
  double val = 0;
  sort(x + 1, x + n + 1, comp);
  sort(y + 1, y + m + 1, comp);
  int ed = m;
  m = 1;
  for (int i = 1; i <= ed; i++) {
    if (fabs(y[m].y - y[i].y) <= eps) {
      y[m].l = min(y[m].l, y[i].l);
    } else
      y[++m] = y[i];
  }
  int j = 1;
  for (int i = 1; i <= m; i++) {
    while (j <= n && check(a, x[j].y, b, y[i].y)) {
      val = calc(j, i);
      if (val < c) {
        c = val;
        aa = x[j].id;
        ab = y[i].id;
      }
      j++;
    }
    if (j <= n) {
      val = calc(j, i);
      if (val < c) {
        c = val;
        aa = x[j].id;
        ab = y[i].id;
      }
    }
    if (j - 1 >= 1) {
      val = calc(j - 1, i);
      if (val < c) {
        c = val;
        aa = x[j - 1].id;
        ab = y[i].id;
      }
    }
  }
  printf("%d %d\n", aa, ab);
  return 0;
}
