#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:65000000")
using namespace std;
int n, m, a, b;
double dst(double x1, double y1, double x2, double y2) {
  return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int ya[100000], yb[100000];
int lb[100000];
int dual[100000];
double dstall(int na, int nb) {
  return dst(0, 0, a, ya[na]) + dst(a, ya[na], b, yb[nb]);
}
int src(int nb) {
  int from = 0;
  int to = n - 1;
  int answ = 0;
  double d = 1e18;
  while (from <= to) {
    int s1 = (2 * from + to) / 3;
    int s2 = (from + 2 * to) / 3;
    double d1 = dstall(s1, nb);
    double d2 = dstall(s2, nb);
    if (d1 < d2) {
      if (d > d1) {
        d = d1;
        answ = s1;
      }
      to = s2 - 1;
    } else {
      if (d > d2) {
        d = d2;
        answ = s2;
      }
      from = s1 + 1;
    }
  }
  return answ;
}
int main() {
  scanf("%d%d%d%d", &n, &m, &a, &b);
  for (int i = 0; i < n; ++i) scanf("%d", ya + i);
  for (int i = 0; i < m; ++i) scanf("%d", yb + i);
  for (int i = 0; i < m; ++i) scanf("%d", lb + i);
  for (int i = 0; i < m; ++i) dual[i] = src(i);
  double answ = 1e18;
  int pos = 0;
  for (int i = 0; i < m; ++i) {
    double d = dstall(dual[i], i) + lb[i];
    if (d < answ) {
      answ = d;
      pos = i;
    }
  }
  printf("%d %d\n", dual[pos] + 1, pos + 1);
  return 0;
}
