#include <bits/stdc++.h>
using namespace std;
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
const double PI = acos(-1);
template <class T>
T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
int n, m, a, b;
int A[100001], B[100001], L[100001];
int main() {
  int n, m, a, b;
  scanf("%d%d%d%d", &n, &m, &a, &b);
  int width = b - a;
  for (int i = 0; i < n; i++) scanf("%d", A + i);
  for (int i = 0; i < m; i++) scanf("%d", B + i);
  for (int i = 0; i < m; i++) scanf("%d", L + i);
  double ans = -1;
  int ans_a = -1, ans_b = -1;
  for (int i = 0; i < m; i++) {
    double ay = (double)((double)a / b) * B[i];
    int aid = lower_bound(A, A + n, ay) - A;
    for (int j = max(0, aid - 1); j <= min(n - 1, aid + 1); j++) {
      double OA = sqrt((long long)pow(a, 2) + (long long)pow(A[j], 2));
      double river_dist =
          sqrt((long long)pow(width, 2) + (long long)pow(A[j] - B[i], 2));
      double B_to_village = L[i];
      double total_dist = OA + river_dist + B_to_village;
      if (ans == -1 || total_dist < ans) {
        ans = total_dist;
        ans_a = j + 1;
        ans_b = i + 1;
      }
    }
  }
  printf("%d %d", ans_a, ans_b);
  return 0;
}
