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.lang.*;
import java.io.*;
public class Main
{
    static long c(long x){
        if(x<=0)return 0;
        else return x*x;
    }
    static long c1(long x){
        if(x<=0)return 0;
        else return (x*(x+1))/2;
    }
    static boolean check(long n,long x,long y,long c,long mid){
        long tot=mid*mid*2-(2*mid-1);
        long up=x-1;
        long down=n-x;
        long left=y-1;
        long right=n-y;
        tot=tot-c(mid-1-up);
        tot=tot-c(mid-1-down);
        tot=tot-c(mid-1-right);
        tot=tot-c(mid-1-left);
        tot=tot+c1(mid-2-up-right);
        tot=tot+c1(mid-2-up-left);
        tot=tot+c1(mid-2-down-right);
        tot=tot+c1(mid-2-down-left);
        if(tot>=c) return true;
        else return false;
        
    }
	public static void main (String[] args) throws java.lang.Exception
	{
	    Scanner sc=new Scanner(System.in);
	   // BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
	    int t=1;
	   // t=sc.nextInt();
	  //  int t=Integer.parseInt(br.readLine());
	    while(--t>=0){
	        long n=sc.nextLong();
	        long x=sc.nextLong();
	        long y=sc.nextLong();
	        long c=sc.nextLong();
	        long l=1,r=(long)2e9;
	        long min=Long.MAX_VALUE;
	        while(l<=r){
	            long mid=(l+r)/2;
	            if(check(n,x,y,c,mid)){
	                min=Math.min(min,mid);
	                r=mid-1;
	            }
	            else{
	                l=mid+1;
	            }
	        }
	        if(min>(long)2e9)
	        System.out.println(0);
	        else
	        System.out.println(min-1);
	     
	        
	    }
	    
	}
}