#include <bits/stdc++.h>
using namespace std;
int n, m, ax, bx;
int a[200000], b[200000], bl[200000];
inline double dist(double x, double y) { return sqrt(x * x + y * y); }
inline double dist(double x0, double y0, double x1, double y1) {
  double x = x0 - x1, y = y0 - y1;
  return dist(x, y);
}
int solve(int by) {
  int i0 = 0, i1, i2, i3 = n;
  while (1) {
    int len = i3 - i0;
    if (len < 3) break;
    len /= 3;
    i1 = i0 + len;
    i2 = i1 + len;
    double j1 = dist(ax, a[i1], bx, by) + dist(ax, a[i1]);
    double j2 = dist(ax, a[i2], bx, by) + dist(ax, a[i2]);
    if (j1 > j2)
      i0 = i1 + 1;
    else
      i3 = i2;
  }
  int ret = i0;
  double min = dist(ax, a[i0], bx, by) + dist(ax, a[i0]);
  for (int i = (i0 + 1); i < (int)(i3); ++i) {
    double tmp = dist(ax, a[i], bx, by) + dist(ax, a[i]);
    if (tmp < min) {
      min = tmp;
      ret = i;
    }
  }
  return ret;
}
int main() {
  while (cin >> n >> m >> ax >> bx) {
    for (int i = (0); i < (int)(n); ++i) scanf("%d", a + i);
    for (int i = (0); i < (int)(m); ++i) scanf("%d", b + i);
    for (int i = (0); i < (int)(m); ++i) scanf("%d", bl + i);
    int ans[2];
    double min;
    ans[0] = ans[1] = 0;
    min = dist(ax, a[0]) + dist(ax, a[0], bx, b[0]) + bl[0];
    for (int i = (0); i < (int)(m); ++i) {
      int j = solve(b[i]);
      double tmp = dist(ax, a[j]) + dist(ax, a[j], bx, b[i]) + bl[i];
      if (tmp < min) {
        min = tmp;
        ans[0] = j;
        ans[1] = i;
      }
    }
    printf("%d %d\n", ans[0] + 1, ans[1] + 1);
  }
  return 0;
}
