import java.util.*;

public class Main {
	Scanner sc;
	int N, D;
	
//=============
// constructor
//
	public Main() {
		sc = new Scanner(System.in);
	}
	
//==================
// instance methods
//
	void out(Object o) {
		System.out.println(o);
		System.out.flush();
	}
	
	public void exec() throws Exception {
		N = sc.nextInt();
		D = sc.nextInt();
		
		int n = (N+2*D) / (2*D+1);
		out(n);
	}
	
//======
// main
//
	public static void main(String[] args) throws Exception {
		Main m = new Main();
		m.exec();
	}

} import java.util.*; util.* java public class Main {
	Scanner sc;
	int N, D;
	
//=============
// constructor
//
	public Main() {
		sc = new Scanner(System.in);
	}
	
//==================
// instance methods
//
	void out(Object o) {
		System.out.println(o);
		System.out.flush();
	}
	
	public void exec() throws Exception {
		N = sc.nextInt();
		D = sc.nextInt();
		
		int n = (N+2*D) / (2*D+1);
		out(n);
	}
	
//======
// main
//
	public static void main(String[] args) throws Exception {
		Main m = new Main();
		m.exec();
	}

} Main Scanner sc; sc int N N D; D //=============
// constructor
//
	public Main() {
		sc = new Scanner(System.in);
	} Main {
		sc = new Scanner(System.in);
	} sc = new Scanner(System.in) sc new Scanner(System.in) //==================
// instance methods
//
	void out(Object o) {
		System.out.println(o);
		System.out.flush();
	} out {
		System.out.println(o);
		System.out.flush();
	} System.out.println(o) System.out.println System.out System System.out o System.out.flush() System.out.flush System.out System System.out Object o o public void exec() throws Exception {
		N = sc.nextInt();
		D = sc.nextInt();
		
		int n = (N+2*D) / (2*D+1);
		out(n);
	} exec {
		N = sc.nextInt();
		D = sc.nextInt();
		
		int n = (N+2*D) / (2*D+1);
		out(n);
	} N = sc.nextInt() N sc.nextInt() sc.nextInt sc D = sc.nextInt() D sc.nextInt() sc.nextInt sc int n = (N+2*D) / (2*D+1); n (N+2*D) / (2*D+1) (N+2*D) N 2*D 2 D (2*D+1) 2*D 2 D 1 out(n) out n //======
// main
//
	public static void main(String[] args) throws Exception {
		Main m = new Main();
		m.exec();
	} main {
		Main m = new Main();
		m.exec();
	} Main m = new Main(); m new Main() m.exec() m.exec m String[] args args public class Main {
	Scanner sc;
	int N, D;
	
//=============
// constructor
//
	public Main() {
		sc = new Scanner(System.in);
	}
	
//==================
// instance methods
//
	void out(Object o) {
		System.out.println(o);
		System.out.flush();
	}
	
	public void exec() throws Exception {
		N = sc.nextInt();
		D = sc.nextInt();
		
		int n = (N+2*D) / (2*D+1);
		out(n);
	}
	
//======
// main
//
	public static void main(String[] args) throws Exception {
		Main m = new Main();
		m.exec();
	}

} public class Main {
	Scanner sc;
	int N, D;
	
//=============
// constructor
//
	public Main() {
		sc = new Scanner(System.in);
	}
	
//==================
// instance methods
//
	void out(Object o) {
		System.out.println(o);
		System.out.flush();
	}
	
	public void exec() throws Exception {
		N = sc.nextInt();
		D = sc.nextInt();
		
		int n = (N+2*D) / (2*D+1);
		out(n);
	}
	
//======
// main
//
	public static void main(String[] args) throws Exception {
		Main m = new Main();
		m.exec();
	}

} Main
import java.util.*;

public class Main {
	Scanner sc;
	int N, D;
	
//=============
// constructor
//
	public Main() {
		sc = new Scanner(System.in);
	}
	
//==================
// instance methods
//
	void out(Object o) {
		System.out.println(o);
		System.out.flush();
	}
	
	public void exec() throws Exception {
		N = sc.nextInt();
		D = sc.nextInt();
		
		int n = (N+2*D) / (2*D+1);
		out(n);
	}
	
//======
// main
//
	public static void main(String[] args) throws Exception {
		Main m = new Main();
		m.exec();
	}

}