# 2019-11-15 14:12:24(JST)

import sys

# import collections

import math

# from string import ascii_lowercase, ascii_uppercase, digits

# from bisect import bisect_left as bi_l, bisect_right as bi_r

# import itertools

# from functools import reduce

# import operator as op

# from scipy.misc import comb # float

# import numpy as np 



def main():

    n, d = [int(x) for x in sys.stdin.readline().split()]

    ran = 1 + d * 2

    number = math.ceil(n / ran)

    print(number)



if __name__ == "__main__":

    main()

import sys



n, d = list(map(int, sys.stdin.readline().split()))



def main():

    c = 2*d + 1

    return (n + c - 1) // c



if __name__ == '__main__':

    ans = main()

    print(ans)
# 2019-11-15 14:12:24(JST)
import sys

# import collections
import math

# from string import ascii_lowercase, ascii_uppercase, digits
# from bisect import bisect_left as bi_l, bisect_right as bi_r
# import itertools
# from functools import reduce
# import operator as op
# from scipy.misc import comb # float
# import numpy as np
def main():
    n, d = [int(x) for x in sys.stdin.readline().split()]
    ran = 1 + d * 2
    number = math.ceil(n / ran)
    print(number)


if __name__ == "__main__":
    main()

import sys

n, d = list(map(int, sys.stdin.readline().split()))


def main():
    c = 2 * d + 1
    return (n + c - 1) // c


if __name__ == "__main__":
    ans = main()
    print(ans)

-# 2019-11-15 14:12:24(JST) -# import collections -import math +n, d = list(map(int, sys.stdin.readline().split())) -# from string import ascii_lowercase, ascii_uppercase, digits -# from bisect import bisect_left as bi_l, bisect_right as bi_r -# import itertools -# from functools import reduce -# import operator as op -# from scipy.misc import comb # float -# import numpy as np + -    n, d = [int(x) for x in sys.stdin.readline().split()] -    ran = 1 + d * 2 -    number = math.ceil(n / ran) -    print(number) +    c = 2 * d + 1 +    return (n + c - 1) // c -    main() +    ans = main() +    print(ans)