#include <bits/stdc++.h>
#pragma GCC target( \
    "sse,sse2,sse3,ssse3,sse4,sse4.1,sse4.2,abm,mmx,avx,avx2,popcnt,tune=native")
using namespace std;
const long double EPS = 1e-4;
const long double EPS2 = 1e-12;
const long double PI = acos(-1);
int mod = (int)998244353;
const int MOD7 = 1000000007;
const int MOD9 = 1000000009;
const int a228 = 18;
const long long INF = 1e18;
const int inf = 1e9;
mt19937 rnd(time(0));
const long long kekmod = 1791791791;
const long long bestmod = 1148822869;
long double dist(pair<long long, long long> a, pair<long long, long long> b) {
  return sqrt(((a.first - b.first) * (a.first - b.first)) +
              ((a.second - b.second) * (a.second - b.second)));
}
signed main() {
  ios_base::sync_with_stdio(0);
  cout.tie(0);
  cin.tie(0);
  srand(time(NULL));
  long long n, m, a, b;
  cin >> n >> m >> a >> b;
  vector<long long> y1(n);
  for (long long i = 0; i < y1.size(); ++i) cin >> y1[i];
  ;
  vector<long long> y2(m);
  for (long long i = 0; i < y2.size(); ++i) cin >> y2[i];
  ;
  vector<long long> al(m);
  for (long long i = 0; i < al.size(); ++i) cin >> al[i];
  ;
  pair<long long, long long> anso;
  long double ans = INF;
  for (long long i = 0; i < m; ++i) {
    long double nw = INF;
    long long l = 0, r = n - 1;
    while (r - l > 2) {
      long long m1 = (l * 2 + r) / 3;
      long long m2 = (l + 2 * r) / 3;
      if (dist({a, y1[m1]}, {b, y2[i]}) + dist({0, 0}, {a, y1[m1]}) <
          dist({a, y1[m2]}, {b, y2[i]}) + dist({0, 0}, {a, y1[m2]})) {
        r = m2;
      } else
        l = m1;
    }
    for (long long j = l; j <= r; ++j) {
      if (al[i] + dist({a, y1[j]}, {b, y2[i]}) + dist({0, 0}, {a, y1[j]}) <
          ans) {
        ans = al[i] + dist({a, y1[j]}, {b, y2[i]}) + dist({0, 0}, {a, y1[j]});
        anso = {j, i};
      }
    }
  }
  cout << anso.first + 1 << ' ' << anso.second + 1;
}
