#include <bits/stdc++.h>
using namespace std;
const int INF = 1500000002;
const long long INFLL = 100000000000000000ll;
const long long MOD = 1000000007;
long long N, X, Y, C;
long long sum(long long a, long long b) {
  if (a > b) return 0;
  long long q = b - a + 1;
  long long ret = q * (q + 1) / 2;
  ret += (a - 1) * q;
  return ret;
}
long long simul(long long steps) {
  long long ret = steps * (steps + 1) * 2 + 1;
  long long l = min(X - 1, steps);
  long long r = min(N - X, steps);
  long long up = max(1 - (Y - steps), 0ll);
  long long down = max(Y + steps - N, 0ll);
  long long a = max(up - l, 0ll);
  long long b = up - 1;
  ret -= sum(a, b);
  a = max(up - r, 0ll);
  b = up - 1;
  ret -= sum(a, b);
  a = max(down - l, 0ll);
  b = down - 1;
  ret -= sum(a, b);
  a = max(down - r, 0ll);
  b = down - 1;
  ret -= sum(a, b);
  ret -= down;
  ret -= up;
  long long left = max(1 - (X - steps), 0ll);
  ret -= left * left;
  long long right = max(X + steps - N, 0ll);
  ret -= right * right;
  return ret;
}
int main() {
  cin >> N >> X >> Y >> C;
  long long a = 0, b = 500000000;
  while (b - a > 1) {
    long long p = (a + b) / 2;
    long long have = simul(p);
    if (have >= C)
      b = p;
    else
      a = p;
  }
  if (simul(a) >= C)
    cout << a;
  else
    cout << b;
}
