#include <bits/stdc++.h>
using namespace std;
double inf = 1.0e20;
double y[100010], l[100010], ans, xa, xb;
int a, b, n, m;
struct note {
  double x;
  int w;
  bool operator<(const note& o) const { return x < o.x; }
} p[100010];
int aa, bb;
int find(double t) {
  int low = 0, high = n - 1, mid = low + high >> 1;
  while (low <= high) {
    if (p[mid].x <= t) {
      low = mid + 1;
    } else {
      high = mid - 1;
    }
    mid = low + high >> 1;
  }
  return low - 1;
}
double sdis(double x1, double y1, double x2, double y2) {
  return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
double getdis(double x1, double x2) {
  return sdis(0, 0, xa, x1) + sdis(xa, x1, xb, x2);
}
int main() {
  scanf("%d%d%d%d", &n, &m, &a, &b);
  xa = a;
  xb = b;
  for (int i = 0; i < n; i++) {
    scanf("%lf", &p[i].x);
    p[i].w = i + 1;
  }
  sort(p, p + n);
  for (int i = 1; i <= m; i++) scanf("%lf", y + i);
  for (int i = 1; i <= m; i++) scanf("%lf", l + i);
  ans = inf;
  for (int i = 1; i <= m; i++) {
    double t = y[i] * xa / xb;
    int s = find(t);
    double mm = inf;
    if (s != n - 1) {
      mm = getdis(p[s + 1].x, y[i]) + l[i];
      if (ans > mm) {
        ans = mm;
        aa = p[s + 1].w;
        bb = i;
      }
    }
    if (s != -1) {
      mm = getdis(p[s].x, y[i]) + l[i];
      if (ans > mm) {
        ans = mm;
        aa = p[s].w;
        bb = i;
      }
    }
  }
  printf("%d %d\n", aa, bb);
  return 0;
}
