'''
โจทย์ที่ยาวหลายบรรทัดได้กล่าวไว้ว่า
S(n, k) = k*S(n-1, k) + S(n-1, k-1)
จงหา
ผลรวม S(n, k) โดยที่ K เท่ากับ 1 ถึง n
'''

# ไปอ่านก้อนล่างก่อน
def ss(n, k):
	# โจทย์ได้บอกอีกว่า S(n, k) เนี่ยถ้า k == 1 หรือ k == n แล้ว S(n, k) จะมีค่าเป็น 1
	if k == 1 or k == n:
		return 1
	# ถ้า mem มันไมีเคยคิด n ตัวนี้หรือ ไม่เคยคิด n,k คู่นี้
	if not n in mem or not k in mem[n]:
		# ก็ให้มันคิดซะ
		tmp = k * ss(n - 1, k) + ss(n - 1, k - 1)
		# ถ้ามันเคยคิด n นี้มาให้เพิ่มเข้าไปใน key k เลย
		if n in mem:
			mem[n][k] = tmp
		# แต่ถ้ามันไม่เคย ให้มันสร้าง key n ขึ้นมาค่อยแล้วค่อยยัด dict ที่มีค่านี้เข้าไป
		else:
			mem[n] = { k: tmp }
	# จากบรรทัดที่ 13 ถ้ามันเคยคิดมาแล้วก็เอามาใช้เลย คิดใหม่ไมเสียเวลา :P
	return mem[n][k]


n = input()
# นี่คือพระเอกของเรา เอาไว้จำว่าโปรแกรมเราเคยคำนวน S(n, k) อะไรไว้แล้วบ้าง
# จะเก็บไว้ประมาณนี้ 
# m = { n:{ k: val, k2: val2, ... }, n2:{ k: val, k2: val2, ... }, ... }
mem = {}
# วน loop คิดผลรวมตั้งแต่ 1 ถึง n ไป
summ = 0
for x in xrange(n):
	summ += ss(n, x + 1)

print summ