#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
int n;
int m;
pair<int, int> v[100000];
pair<int, pair<int, int> > w[100000];
double ans;
int ai, aj;
int a, b;
int upd(int i, int j) {
  double res = sqrt(abs(((a + 0.0) * (a + 0.0)) +
                        ((v[i].first + 0.0) * (v[i].first + 0.0)))) +
               sqrt(abs(((b - a + 0.0) * (b - a + 0.0)) +
                        ((v[i].first - w[j].first + 0.0) *
                         (v[i].first - w[j].first + 0.0)))) +
               w[j].second.first;
  if (res < ans) {
    ans = res;
    ai = v[i].second;
    aj = w[j].second.second;
  }
  return 0;
}
int main() {
  scanf("%d%d%d%d", &n, &m, &a, &b);
  for (int i = 0; i < n; i++) {
    scanf("%d", &v[i].first);
    v[i].second = i + 1;
  }
  for (int i = 0; i < m; i++) {
    scanf("%d", &w[i].first);
    w[i].second.second = i + 1;
  }
  for (int i = 0; i < m; i++) scanf("%d", &w[i].second.first);
  sort(v, v + n);
  sort(w, w + m);
  ans = 1e18;
  ai = aj = 0;
  int i = 0;
  for (int j = 0; j < m; j++) {
    while (i + 1 < n &&
           (long long)v[i + 1].first * b <= (long long)w[j].first * a)
      i++;
    upd(i, j);
    if (i + 1 < n) upd(i + 1, j);
  }
  printf("%d %d\n", ai, aj);
  return 0;
}
