#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000 * 100 + 3, inf = 1000 * 1000 * 100;
int n, m, a[MAXN], b[MAXN], t[MAXN], ans = 0, y, z;
int main() {
  cin >> n >> m >> y >> z;
  for (int i = 0; i < n; i++) cin >> a[i];
  b[0] = -inf;
  b[m + 1] = inf;
  for (int i = 1; i <= m; i++) cin >> b[i];
  for (int i = 0; i <= m; i++) t[i] = -1;
  for (int i = 0; i < n; i++) {
    int ind = lower_bound(b, b + m + 2, a[i]) - b;
    int nex = b[ind], prev = b[ind - 1];
    if (nex - a[i] < a[i] - prev) {
      if (t[ind] != -1) ans++;
      t[ind] = nex - a[i];
    } else if (nex - a[i] > a[i] - prev) {
      if (t[ind - 1] != -1 && t[ind - 1] < a[i] - prev) {
        ans++;
      } else {
        if (t[ind - 1] > a[i] - prev) ans++;
        t[ind - 1] = a[i] - prev;
      }
    } else {
      if (t[ind - 1] == -1 || t[ind - 1] == a[i] - prev) {
        t[ind - 1] = a[i] - prev;
      } else {
        t[ind] = nex - a[i];
      }
    }
  }
  cout << ans << endl;
  return 0;
}
