#include <bits/stdc++.h>
using namespace std;
int N, M;
int A0, B0;
int A[(100005)];
int B[(100005)];
int L[(100005)];
set<pair<int, int> > S;
inline double sqr(double a) { return a * a; }
int main() {
  int i;
  scanf("%d %d %d %d", &N, &M, &A0, &B0);
  for (i = 0; i < N; ++i) {
    scanf("%d", A + i);
    S.insert(pair<int, int>(A[i], i));
  }
  for (i = 0; i < M; ++i) scanf("%d", B + i);
  for (i = 0; i < M; ++i) scanf("%d", L + i);
  double sol = 1e20;
  int sola = -1;
  int solb = -1;
  double AB = double(A0) / B0;
  for (i = 0; i < M; ++i) {
    double y = B[i] * AB;
    int yi = ceil(y) + 1e-9;
    set<pair<int, int> >::iterator si1;
    si1 = S.lower_bound(pair<int, int>(yi, 0));
    if (si1 != S.end()) {
      double res = sqrt(sqr(A0) + sqr(si1->first)) +
                   sqrt(sqr(B0 - A0) + sqr(B[i] - si1->first)) + L[i];
      if (sol > res) {
        sol = res;
        sola = si1->second + 1;
        solb = i + 1;
      }
    }
    if (si1 != S.begin()) {
      --si1;
      double res = sqrt(sqr(A0) + sqr(si1->first)) +
                   sqrt(sqr(B0 - A0) + sqr(B[i] - si1->first)) + L[i];
      if (sol > res) {
        sol = res;
        sola = si1->second + 1;
        solb = i + 1;
      }
    }
  }
  printf("%d %d\n", sola, solb);
  return 0;
}
