Mr. Bender has a digital table of size n × n, each cell can be switched on or off. He wants the field to have at least c switched on squares. When this condition is fulfilled, Mr Bender will be happy.

We'll consider the table rows numbered from top to bottom from 1 to n, and the columns — numbered from left to right from 1 to n. Initially there is exactly one switched on cell with coordinates (x, y) (x is the row number, y is the column number), and all other cells are switched off. Then each second we switch on the cells that are off but have the side-adjacent cells that are on.

For a cell with coordinates (x, y) the side-adjacent cells are cells with coordinates (x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1).

In how many seconds will Mr. Bender get happy?

Input

The first line contains four space-separated integers n, x, y, c (1 ≤ n, c ≤ 109; 1 ≤ x, y ≤ n; c ≤ n2).

Output

In a single line print a single integer — the answer to the problem.

Examples

Input

6 4 3 1


Output

0


Input

9 3 8 10


Output

2

Note

Initially the first test has one painted cell, so the answer is 0. In the second test all events will go as is shown on the figure. <image>.
####################################################
# -*- coding: utf-8 -*-
import sys

w = sys.stdout.write
read = sys.stdin.readline
reads = sys.stdin.read

def r(f=None):
    if f:
        return map(f, read().split())
    else:
        return read().split()

def rs(t,f=None):
    result = []
    result_append = result.append
    for i in xrange(t):
        if f:
            result_append(tuple(map(f, read().split())))
        else:
            result_append(read().replace('\n', ''))
    return result


####################################################
import math
sqrt = math.sqrt
from collections import deque


[n, x, y, c] = r(int)
c -= 1
o = [x - 1, n - x, y - 1, n - y]
#print o
cc = 0
k = max([x-1+y-1, x-1+n-y, n-x+y-1, n-x+n-y])
oo = [x-1+ n-y+2, y-1+x-1+2, n-x+y-1+2, n-x+n-y+2]
#print oo
def su(x):
    return (x + 1) * x / 2

def val(t):
    res = 2 * t * t + 2 * t
    for x in o:
        if x < t:
            res -= (t-x+1) * (t-x+1) - (2 * (t-x+1) - 1)
    for x in oo:
        if x <= t:
            res += su(t+1-x)
    
    return res
    
#print [val(t) for t in range(1, k+1)]

def binary_search():
    mi = 1; ma = k
    while mi < ma:
        m = (mi + ma) / 2
        tt = val(m)
        if tt < c:
            mi = m + 1
        elif tt > c:
            ma = m
        else:
            return m
    return mi

if c == 0:
    w("0")
else:
    result = binary_search()
    #print val(37707), val(result)
    w("%s" % (result, ))


    