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>.
import java.util.*; 
import java.io.*;
import java.lang.Math;

public class Main{
    static Scanner in;
    static PrintWriter out;
    public static void main(String args[]) throws IOException {
        in = new Scanner( System.in );
        out = new PrintWriter( new FileWriter("output.txt") );
        new Main().run();
        in.close();
        out.close();
    }
    int n,x,y,c;
    void run(){
        n=in.nextInt();
        x=in.nextInt();
        y=in.nextInt();
        c=in.nextInt();
        System.out.println( sol( 0 , n*2 , c ) );
//      System.out.println( f(1) );
//      System.out.println( f(2) );
    }
    int sol(int l,int r,int k){
//      System.out.print(l);
//      System.out.print(" ");
//      System.out.println(r);
        if(r==l+1)return l;
        int cen = (r+l)/2;
        long fcen = f(cen);
        if(fcen<k)return sol(cen+1,r,k);
        if(f(cen-1)<k)return cen;
        return sol(l,cen,k);
    }
    long f(int k) {
        long ret=1;
        ret += Math.min(k, x-1);
        ret += Math.min(k, y-1);
        ret += Math.min(k, n-x);
        ret += Math.min(k, n-y);
        ret += rect( x-1 , y-1 , k-1 );
        ret += rect( n-x , y-1 , k-1 );
        ret += rect( x-1 , n-y , k-1 );
        ret += rect( n-x , n-y , k-1 );
        return ret;
    }
    long rect(int w,int h,int k){
        if(h>w){
            int tmp=h;
            h=w;
            w=tmp;
        }
        if(k<=h)return (k+1)*(long)k/2;
        if(w+h<=k+1)return w*(long)h;
        long ret = (k-h)*h;
        int f = h;
        int to = Math.max( k-w+1 , 1);
        ret += ( f + to )*( f - to + 1 )/2;
//      System.out.printf("%d %d %d = %d\n",w,h,k,(int)ret);
        return ret;
    }   
    int min(int a,int b,int c){return Math.min( a , Math.min(b, c) );}
    int max(int a,int b,int c){return Math.max( a , Math.max(b, c) );}
};