#include <bits/stdc++.h>
int n, m, ap, bp;
double ax, bx;
double a[100002], b[100002], l[100002];
double getDis(double ya, double yb) {
  double dis = sqrt(ax * ax + ya * ya) +
               sqrt((bx - ax) * (bx - ax) + (ya - yb) * (ya - yb));
  return dis;
}
int dichotomy(int l, int r, double val) {
  int mid = (l + r) >> 1;
  while (l < r) {
    if (a[mid] > val) {
      r = mid - 1;
      if (r <= l || a[r] <= val) return mid;
    } else if (a[mid] == val)
      return mid;
    else {
      l = mid + 1;
      if (l >= r || a[l] >= val) return l;
    }
    mid = (l + r) >> 1;
  }
  return mid;
}
void solve() {
  int i, pos;
  double dis, min_L = getDis(a[1], b[1]) + l[1];
  ap = 1;
  bp = 1;
  for (i = 1; i <= m; i++) {
    pos = dichotomy(1, n, b[i] * ax / bx);
    dis = getDis(a[pos], b[i]) + l[i];
    if (min_L > dis) {
      min_L = dis;
      ap = pos;
      bp = i;
    }
    if (pos == 1) continue;
    pos--;
    dis = getDis(a[pos], b[i]) + l[i];
    if (min_L > dis) {
      min_L = dis;
      ap = pos;
      bp = i;
    }
  }
}
int main() {
  int i;
  while (~scanf("%d %d %llf %llf", &n, &m, &ax, &bx)) {
    for (i = 1; i <= n; i++) scanf("%llf", &a[i]);
    for (i = 1; i <= m; i++) scanf("%llf", &b[i]);
    for (i = 1; i <= m; i++) scanf("%llf", &l[i]);
    solve();
    printf("%d %d\n", ap, bp);
  }
  return 0;
}
