#include <bits/stdc++.h>
const int N = 100000 + 10;
long long A[N], B[N], L[N];
int n, m, a, b;
std::set<std::pair<long long, int> > dic;
double ans = 1e100;
int ansx, ansy;
double sqr(long long x) { return (double)x * x; }
void Cal(int idx) {
  double dis;
  long long x = B[idx] * a / b;
  std::set<std::pair<long long, int> >::iterator u;
  u = dic.lower_bound(std::pair<long long, int>(x, 0));
  dis = L[idx];
  dis += sqrt(sqr(u->first) + sqr(a));
  dis += sqrt(sqr(u->first - B[idx]) + sqr(b - a));
  if (dis < ans) {
    ans = dis;
    ansx = u->second;
    ansy = idx;
  }
  if (u != dic.begin()) {
    --u;
    dis = L[idx];
    dis += sqrt(sqr(u->first) + sqr(a));
    dis += sqrt(sqr(u->first - B[idx]) + sqr(b - a));
    if (dis < ans) {
      ans = dis;
      ansx = u->second;
      ansy = idx;
    }
  }
  u = dic.upper_bound(std::pair<long long, int>(x, 0));
  if (u == dic.end()) return;
  dis = L[idx];
  dis += sqrt(sqr(u->first) + sqr(a));
  dis += sqrt(sqr(u->first - B[idx]) + sqr(b - a));
  if (dis < ans) {
    ans = dis;
    ansx = u->second;
    ansy = idx;
  }
  if (++u != dic.end()) {
    dis = L[idx];
    dis += sqrt(sqr(u->first) + sqr(a));
    dis += sqrt(sqr(u->first - B[idx]) + sqr(b - a));
    if (dis < ans) {
      ans = dis;
      ansx = u->second;
      ansy = idx;
    }
  }
}
int main() {
  scanf("%d%d%d%d", &n, &m, &a, &b);
  for (int i = 0; i < n; ++i) {
    scanf("%I64d", &A[i]);
    dic.insert(std::pair<long long, int>(A[i], i + 1));
  }
  for (int i = 0; i < m; ++i) scanf("%I64d", &B[i]);
  for (int i = 0; i < m; ++i) scanf("%I64d", &L[i]);
  for (int i = 0; i < m; ++i) Cal(i);
  printf("%d %d\n", ansx, ansy + 1);
  return 0;
}
