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.Scanner;


public class D {
	public void solve(){
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int X = sc.nextInt();
		int Y = sc.nextInt();
		int C = sc.nextInt();

		int[] direction = new int[]{N-X, X-1, Y-1, N-Y};
		int[] corner = new int[]{ N-X+Y-1+1, X-1+Y-1+1, N-X+N-Y+1, X-1+N-Y+1 };
		for(int i = 0; i < direction.length; i++){
			direction[i] *= -1;
			corner[i] *= -1;
		}
		
		int total = 1;
		int move = 0;
		while( total < C){
			move++;
			total += (move) * 4;
			
			for(int d = 0; d < direction.length; d++){
				direction[d]++;
				if(direction[d] > 0){
//					total -= reduce[ direction[d]*-1 ];
					total -= (direction[d]*2-1);
//					System.out.println("reduce " + d + ": " + (direction[d]*2-1) );
				} 
				
				corner[d]++;
				if(corner[d] > 0){
					total += corner[d];
				}
			}					
//			System.out.println(total);
		}
		System.out.println(move);
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new D().solve();
	}

}
