#include <bits/stdc++.h>
using namespace std;
long long n, x, y, c;
inline long long calc(long long n, long long m, long long T) {
  if (T <= 0) return 0;
  if (n < m) swap(n, m);
  if (T <= m) return T * 1LL * (T + 1) / 2;
  if (T >= n + m - 1) return n * m;
  long long xi = n - (T - m + 1);
  if (m - xi <= 0) xi = m - 1;
  return (T - m + 1) * m + (2 * m - 1 - xi) * xi / 2;
}
inline long long erfen(long long l, long long r) {
  if (l == r) return l;
  long long mid = (l + r) / 2ll;
  long long cnt = calc(x - 1, y - 1, mid - 1);
  cnt += calc(n - x, n - y, mid - 1);
  cnt += calc(n - x, y - 1, mid - 1) + calc(x - 1, n - y, mid - 1);
  cnt += min(mid, x - 1) + min(mid, n - x) + min(mid, y - 1) + min(mid, n - y);
  if ((++cnt) >= c) return erfen(l, mid);
  return erfen(mid + 1, r);
}
int main() {
  scanf("%I64d%I64d%I64d%I64d", &n, &x, &y, &c);
  printf("%I64d", erfen(0, 2 * n));
  return 0;
}
