#include <bits/stdc++.h>
using namespace std;
const int MAXINT = 2147483647;
int n, m, a, b, i, j, k;
int lt[200002], rt[200000], l[200000];
int p[200002], q[200000];
double ob[200000];
int u[200000];
double r, s;
bool cmp1(int a, int b) { return lt[a] < lt[b]; }
bool cmp2(int a, int b) { return rt[a] < rt[b]; }
double dist(int a, int b, int x, int y) {
  double r, s;
  r = a - x;
  s = b - y;
  return sqrt(r * r + s * s);
}
int b_search(int lb, int ub, bool isLowerBound, double key) {
  int mid, ret;
  while (lb <= ub) {
    mid = (lb + ub) / 2;
    if (isLowerBound) {
      if (abs(lt[mid] - key) < 1e-12)
        return mid;
      else if (lt[mid] < key) {
        lb = mid + 1;
        ret = mid;
      } else
        ub = mid - 1;
    } else {
      if (abs(lt[mid] - key) < 1e-12)
        return mid;
      else if (lt[mid] >= key) {
        ub = mid - 1;
        ret = mid;
      } else
        lb = mid + 1;
    }
  }
  return ret;
}
int main() {
  while (scanf("%d%d%d%d", &n, &m, &a, &b) != EOF) {
    for (i = 1; i <= n; i++) scanf("%d", &lt[i]);
    lt[0] = -MAXINT;
    lt[n + 1] = MAXINT;
    for (i = 0; i < m; i++) scanf("%d", &rt[i]);
    for (i = 0; i < m; i++) scanf("%d", &l[i]);
    for (j = 0; j < m; j++) {
      i = b_search(0, n + 1, true, rt[j] * 1.0 / b * a);
      k = b_search(0, n + 1, false, rt[j] * 1.0 / b * a);
      r = dist(0, 0, a, lt[i]) + dist(a, lt[i], b, rt[j]);
      s = dist(0, 0, a, lt[i + 1]) + dist(a, lt[i + 1], b, rt[j]);
      if (r < s) {
        u[j] = i;
        ob[j] = r;
      } else {
        u[j] = i + 1;
        ob[j] = s;
      }
    }
    b = 0;
    for (i = 1; i < m; i++)
      if (ob[i] + l[i] < ob[b] + l[b]) b = i;
    printf("%d %d\n", u[b], b + 1);
  }
  return 0;
}
