Square1001 has seen an electric bulletin board displaying the integer 1.
He can perform the following operations A and B to change this value:
 - Operation A: The displayed value is doubled.
 - Operation B: The displayed value increases by K.
Square1001 needs to perform these operations N times in total.
Find the minimum possible value displayed in the board after N operations.

-----Constraints-----
 - 1 \leq N, K \leq 10
 - All input values are integers.

-----Input-----
Input is given from Standard Input in the following format:
N
K

-----Output-----
Print the minimum possible value displayed in the board after N operations.

-----Sample Input-----
4
3

-----Sample Output-----
10

The value will be minimized when the operations are performed in the following order: A, A, B, B.

In this case, the value will change as follows: 1 → 2 → 4 → 7 → 10.

Difficulty: EASY

Solutions:
a = 1
s = int(input())
d = int(input())
for i in range(s):
	a += min(a, d)
print(a)


n = int(input())
k = int(input())
i = 1
for _ in range(n):
	i = i + min(i, k)
print(i)


N = int(input())
K = int(input())
ans = 1
for _ in range(N):
	if ans + K < 2 * ans:
		ans += K
	else:
		ans *= 2
print(ans)


n = int(input())
k = int(input())
ans = 1
for i in range(n):
	ans = min(ans * 2, ans + k)
print(ans)


n = int(input())
k = int(input())
ans = 1
for _ in range(n):
	if ans < k:
		ans *= 2
	else:
		ans += k
print(ans)


(a, b) = (int(input()), int(input()))
ans = 1
for i in range(a):
	ans = min(ans * 2, ans + b)
print(ans)


(N, K) = [int(input()) for _ in range(2)]
c = 1
for i in range(N):
	if c < K:
		c *= 2
	else:
		c += K
print(c)


(N, K) = [int(input()) for i in range(2)]
p = 1
for i in range(N):
	p = min(2 * p, p + K)
print(p)


(n, k) = map(int, open(0))
p = 1
for _ in range(1, n + 1):
	p = [p + k, p * 2][p * 2 < p + k]
print(p)


n = int(input())
k = int(input())
j = 1
for i in range(n):
	j += min(j, k)
print(j)


(n, k) = eval('int(input()),' * 2)
r = 1
exec('r+=min(r,k);' * n)
print(r)


n = int(input())
k = int(input())
A = 1
for i in range(n):
	if A < k:
		A *= 2
	else:
		A += k
print(A)


N = int(input())
K = int(input())
a = 1
for n in range(N):
	a = min(a + K, 2 * a)
print(a)


N = int(input())
K = int(input())
ans = 1
for i in range(N):
	ans += min(ans, K)
print(ans)


(N, K) = map(int, open(0))
L = 1
for i in range(N):
	L += min(L, K)
print(L)


n = int(input())
k = int(input())
m = 1
for i in range(n):
	m += min(m, k)
print(m)


N = int(input())
K = int(input())
a = 1
for i in range(N):
	if a < K:
		a *= 2
	else:
		a += K
print(a)


N = int(input())
K = int(input())
Ans = 1
for _ in range(N):
	Ans = min(Ans * 2, Ans + K)
print(Ans)


N = int(input())
K = int(input())
num = 1
for _ in range(N):
	num += min(num, K)
print(num)


n = int(input())
k = int(input())
given_integer = 1
for i in range(0, n):
	given_integer = min(given_integer * 2, given_integer + k)
print(int(given_integer))


n = int(input())
k = int(input())
a = 1
for n in range(n):
	a += min(a, k)
print(a)


N = int(input())
K = int(input())
start = 1
for i in range(N):
	start = min(start * 2, start + K)
print(str(start))


n = int(input())
k = int(input())
x = 1
for _ in range(n):
	x = min(2 * x, x + k)
print(x)


(n, k, b) = (int(input()), int(input()), 1)
for _ in [0] * n:
	b += min(b, k)
print(b)


n = int(input())
k = int(input())
x = 1
for i in range(n):
	x += min([x, k])
print(x)


N = int(input())
K = int(input())
X = 1
for i in range(N):
	if X < K:
		X += X
	else:
		X += K
print(X)


N = int(input())
K = int(input())
num = 1
for i in range(N):
	num += min(num, K)
print(num)


n = int(input())
k = int(input())
from itertools import product
pr = list(product([0, 1], repeat=n))
ans = float('inf')
for p in pr:
	tmp = 1
	for i in p:
		if i == 0:
			tmp *= 2
		else:
			tmp += k
	ans = min(ans, tmp)
print(ans)


N = int(input())
K = int(input())
cnt = 1
for i in range(N):
	cnt += min(cnt, K)
print(cnt)


N = int(input())
K = int(input())
ans = 1
for k in range(N):
	ans = min(ans * 2, ans + K)
print(ans)


n = int(input())
m = int(input())
s = 1
for i in range(n):
	s = min(s * 2, s + m)
print(s)


import math
ans = 1
count = 0
num1 = int(input())
num2 = int(input())
for i in range(num1):
	if ans < num2:
		ans *= 2
	else:
		ans += num2
print(ans)


n = int(input())
k = int(input())
ans = 1
for x in range(n):
	ans += min(ans, k)
print(ans)


n = int(input())
k = int(input())
s = 1
for i in range(n):
	s += min(k, s)
print(s)


n = int(input())
k = int(input())
ans = 1
for _ in range(n):
	ans += min(ans, k)
print(ans)


n = int(input())
k = int(input())
a = 1
for _ in [0] * n:
	a += min(a, k)
print(a)


N = int(input())
K = int(input())
start = 1
for i in range(N):
	start_a = start * 2
	start_b = start + K
	if start_a <= start_b:
		start = start_a
	else:
		start = start_b
print(start)


import sys
input = sys.stdin.readline
N = int(input())
K = int(input())
c = 0
tmp = 1
while c < N:
	if tmp < K:
		tmp *= 2
	else:
		tmp += K
	c += 1
print(tmp)


(n, k) = [int(input()) for _ in range(2)]
result = 10 ** 9
for bit in range(2 ** n):
	tmp = 1
	for i in range(n):
		if bit & 1 << i:
			tmp *= 2
		else:
			tmp += k
	result = min(result, tmp)
print(result)


a = int(input())
b = int(input())
x = 1
for i in range(a):
	if x + b > x * 2:
		x = x * 2
	else:
		x = x + b
print(x)


n = int(input())
k = int(input())
ans = 1
while n > 0:
	ans = min(2 * ans, ans + k)
	n -= 1
print(ans)


A = int(input())
B = int(input())
z = 1
for i in range(A):
	if z + B < 2 * z:
		z = z + B
	else:
		z = 2 * z
print(z)


(n, k) = (int(input()) for i in range(0, 2))
ans = 1
for i in range(0, n):
	if ans * 2 <= ans + k:
		ans *= 2
	else:
		ans += k
print(ans)


from functools import reduce

def operator(x, K, N):
	res = (lambda x: 2 * x if x < K else x + K)(x)
	return res if N == 1 else operator(res, K, N - 1)

def main():
	with open(0) as f:
		(N, K) = list(map(int, f.read().split()))
	ans = operator(1, K, N)
	print(ans)
main()


n = int(input())
k = int(input())
cnt = 1
tmp = 0
for i in range(n):
	cnt = min(cnt * 2, cnt + k)
print(cnt)


n = int(input())
k = int(input())
res = 1
for _ in range(n):
	res += min(res, k)
print(res)


n = int(input())
k = int(input())
x = 1
i = 0
while i < n:
	i += 1
	x = min(2 * x, k + x)
print(x)


def solve():
	n = int(input())
	k = int(input())
	ans = 1
	for i in range(n):
		if ans < k:
			ans *= 2
		else:
			ans += k
	print(ans)

def __starting_point():
	solve()
__starting_point()


(n, k, w) = (int(input()), int(input()), 1)
for _ in range(n):
	w += min(w, k)
print(w)


(n, k) = map(int, open(0))
r = 1
exec('r+=min(r,k);' * n)
print(r)


N = int(input())
K = int(input())
a = 1
for i in range(N):
	a += min(a, K)
print(a)


N = int(input())
K = int(input())
ans = 1
for _ in range(N):
	ans += min(ans, K)
print(ans)


import sys
sys.setrecursionlimit(10 ** 6)
n = int(input())
k = int(input())
ans = 1
for i in range(n):
	if ans * 2 <= ans + k:
		ans *= 2
	else:
		ans += k
print(ans)


n = int(input())
k = int(input())
t = 1
for i in range(n):
	t = min(t + t, t + k)
print(t)


N = int(input())
K = int(input())
x = 1
for _ in range(N):
	x += min(x, K)
print(x)


n = int(input())
k = int(input())
c = 1
for i in range(n):
	c += min(c, k)
print(c)


(n, k) = eval('int(input()),' * 2)
r = 1
for _ in [0] * n:
	r += min(r, k)
print(r)


ans = float('inf')
(n, k) = (int(input()), int(input()))
for i in range(2 ** n):
	ans = min(ans, eval('(' * n + '1' + ''.join(('*2)' if (i >> j) % 2 else '+' + str(k) + ')' for j in range(n)))))
print(ans)


a = int(input())
b = int(input())
num = 1
for _ in range(a):
	num = min(num * 2, num + b)
print(num)


(n, k) = (int(input()), int(input()))
ans = 1
i = 0
while i != n:
	if ans >= k:
		ans += k
	else:
		ans *= 2
	i += 1
print(ans)


n = int(input())
k = int(input())
ans = 1
for i in [0] * n:
	ans += min(ans, k)
print(ans)


N = int(input())
K = int(input())
ans = 1

def A(n):
	return 2 * n

def B(n):
	return n + K
for i in range(N):
	if A(ans) <= B(ans):
		ans = A(ans)
	else:
		ans = B(ans)
print(ans)


n = int(input())
k = int(input())
num = 1
count = 0
while count < n:
	num = min(num * 2, num + k)
	count += 1
print(num)


(n, k) = (int(input()), int(input()))
s = 1
while n:
	s += min(s, k)
	n -= 1
print(s)


N = int(input())
K = int(input())
j = 1

def func(x, y):
	r = x * 2 if x * 2 < x + y else x + y
	return r
for i in range(N):
	j = func(j, K)
print(j)


a = int(input())
b = int(input())
c = 1
for i in range(a):
	c += min(b, c)
else:
	print(c)


def answer(n: int, k: int) -> int:
	current_num = 1
	for _ in range(n):
		current_num = min(current_num * 2, current_num + k)
	return current_num

def main():
	n = int(input())
	k = int(input())
	print(answer(n, k))

def __starting_point():
	main()
__starting_point()


N = int(input())
K = int(input())
val = 1
for i in range(N):
	val += min(val, K)
print(val)


(n, k) = map(int, open(0).read().split())
a = 1
for i in range(n):
	a = min(a * 2, a + k)
print(a)