#include <bits/stdc++.h>
using namespace std;
long long n, x, y, c;
long long calc(long long k) {
  long long ans = (k + 1) * (k + 1) + k * k;
  if (k + 1 > x) ans -= (k + 1 - x) * (k + 1 - x);
  if (k >= n - x) ans -= (k - (n - x)) * (k - (n - x));
  if (k + 1 > y) {
    long long end = k + 1 - y;
    long long first = max(1ll, k + 1 - y - (x - 1));
    ans -= (end + first) * (end - first + 1) / 2;
  }
  if (k > n - y) {
    long long end = k - (n - y);
    long long first = max(1ll, k - (n - y) - (x - 1));
    ans -= (end + first) * (end - first + 1) / 2;
  }
  if (k > y) {
    long long end = k - y;
    long long first = max(1ll, k + 1 - y - (n - x));
    ans -= (end + first) * (end - first + 1) / 2;
  }
  if (k - 1 > n - y) {
    long long end = k - (n - y) - 1;
    long long first = max(1ll, k - (n - y) - (n - x));
    ans -= (end + first) * (end - first + 1) / 2;
  }
  return ans;
}
int main() {
  cin >> n >> y >> x >> c;
  long long f = 0;
  long long e = c + 1;
  long long bestAns = e;
  while (f < e) {
    long long mid = (f + e) / 2;
    if (calc(mid) >= c) {
      bestAns = mid;
      e = mid;
    } else
      f = mid + 1;
  }
  cout << bestAns << endl;
}
