import java.io.*;
import java.util.*;

public class Main
{
	public static void main(String[] argv)
	{
		try{
			BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
			String[] ctx=bf.readLine().split(" ");
			int N,D;
			N=Integer.parseInt(ctx[0]);
			D=Integer.parseInt(ctx[1]);
			Solver s =new Solver(N,D);
			s.res();
		}
		catch (IOException e)
		{
			System.exit(0);
		}
	}
}
class Solver
{
	int totalNum,dist;

	public Solver(int N,int D)
	{
		totalNum=N;
		dist=D;
	}
	public void res()
	{
		int gap=2*dist+1;
		if(totalNum%gap==0)
			System.out.printf("%d\n",totalNum/gap);
		else
			System.out.printf("%d\n",1+totalNum/gap);
	}
} import java.io.*; io.* java import java.util.*; util.* java public class Main
{
	public static void main(String[] argv)
	{
		try{
			BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
			String[] ctx=bf.readLine().split(" ");
			int N,D;
			N=Integer.parseInt(ctx[0]);
			D=Integer.parseInt(ctx[1]);
			Solver s =new Solver(N,D);
			s.res();
		}
		catch (IOException e)
		{
			System.exit(0);
		}
	}
} Main public static void main(String[] argv)
	{
		try{
			BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
			String[] ctx=bf.readLine().split(" ");
			int N,D;
			N=Integer.parseInt(ctx[0]);
			D=Integer.parseInt(ctx[1]);
			Solver s =new Solver(N,D);
			s.res();
		}
		catch (IOException e)
		{
			System.exit(0);
		}
	} main {
		try{
			BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
			String[] ctx=bf.readLine().split(" ");
			int N,D;
			N=Integer.parseInt(ctx[0]);
			D=Integer.parseInt(ctx[1]);
			Solver s =new Solver(N,D);
			s.res();
		}
		catch (IOException e)
		{
			System.exit(0);
		}
	} try{
			BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
			String[] ctx=bf.readLine().split(" ");
			int N,D;
			N=Integer.parseInt(ctx[0]);
			D=Integer.parseInt(ctx[1]);
			Solver s =new Solver(N,D);
			s.res();
		}
		catch (IOException e)
		{
			System.exit(0);
		} catch (IOException e)
		{
			System.exit(0);
		} IOException e {
			System.exit(0);
		} System.exit(0) System.exit System 0 {
			BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
			String[] ctx=bf.readLine().split(" ");
			int N,D;
			N=Integer.parseInt(ctx[0]);
			D=Integer.parseInt(ctx[1]);
			Solver s =new Solver(N,D);
			s.res();
		} BufferedReader bf =new BufferedReader(new InputStreamReader(System.in)); bf new BufferedReader(new InputStreamReader(System.in)) String[] ctx=bf.readLine().split(" "); ctx bf.readLine().split(" ") bf.readLine().split bf.readLine() bf.readLine bf " " int N N D; D N=Integer.parseInt(ctx[0]) N Integer.parseInt(ctx[0]) Integer.parseInt Integer ctx[0] ctx 0 D=Integer.parseInt(ctx[1]) D Integer.parseInt(ctx[1]) Integer.parseInt Integer ctx[1] ctx 1 Solver s =new Solver(N,D); s new Solver(N,D) s.res() s.res s String[] argv argv class Solver
{
	int totalNum,dist;

	public Solver(int N,int D)
	{
		totalNum=N;
		dist=D;
	}
	public void res()
	{
		int gap=2*dist+1;
		if(totalNum%gap==0)
			System.out.printf("%d\n",totalNum/gap);
		else
			System.out.printf("%d\n",1+totalNum/gap);
	}
} Solver int totalNum totalNum dist; dist public Solver(int N,int D)
	{
		totalNum=N;
		dist=D;
	} Solver {
		totalNum=N;
		dist=D;
	} totalNum=N totalNum N dist=D dist D int N N int D D public void res()
	{
		int gap=2*dist+1;
		if(totalNum%gap==0)
			System.out.printf("%d\n",totalNum/gap);
		else
			System.out.printf("%d\n",1+totalNum/gap);
	} res {
		int gap=2*dist+1;
		if(totalNum%gap==0)
			System.out.printf("%d\n",totalNum/gap);
		else
			System.out.printf("%d\n",1+totalNum/gap);
	} int gap=2*dist+1; gap 2*dist+1 2*dist 2 dist 1 if(totalNum%gap==0)
			System.out.printf("%d\n",totalNum/gap);
		else
			System.out.printf("%d\n",1+totalNum/gap); totalNum%gap==0 totalNum%gap totalNum gap 0 System.out.printf("%d\n",totalNum/gap) System.out.printf System.out System System.out "%d\n" totalNum/gap totalNum gap System.out.printf("%d\n",1+totalNum/gap) System.out.printf System.out System System.out "%d\n" 1+totalNum/gap 1 totalNum/gap totalNum gap public class Main
{
	public static void main(String[] argv)
	{
		try{
			BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
			String[] ctx=bf.readLine().split(" ");
			int N,D;
			N=Integer.parseInt(ctx[0]);
			D=Integer.parseInt(ctx[1]);
			Solver s =new Solver(N,D);
			s.res();
		}
		catch (IOException e)
		{
			System.exit(0);
		}
	}
} public class Main
{
	public static void main(String[] argv)
	{
		try{
			BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
			String[] ctx=bf.readLine().split(" ");
			int N,D;
			N=Integer.parseInt(ctx[0]);
			D=Integer.parseInt(ctx[1]);
			Solver s =new Solver(N,D);
			s.res();
		}
		catch (IOException e)
		{
			System.exit(0);
		}
	}
} Main
import java.io.*;
import java.util.*;

public class Main
{
	public static void main(String[] argv)
	{
		try{
			BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
			String[] ctx=bf.readLine().split(" ");
			int N,D;
			N=Integer.parseInt(ctx[0]);
			D=Integer.parseInt(ctx[1]);
			Solver s =new Solver(N,D);
			s.res();
		}
		catch (IOException e)
		{
			System.exit(0);
		}
	}
}
class Solver
{
	int totalNum,dist;

	public Solver(int N,int D)
	{
		totalNum=N;
		dist=D;
	}
	public void res()
	{
		int gap=2*dist+1;
		if(totalNum%gap==0)
			System.out.printf("%d\n",totalNum/gap);
		else
			System.out.printf("%d\n",1+totalNum/gap);
	}
}
