def vyrataj(target):
	init = [1,1]
	row_count = 2
	while True:
		row = [1]
		row_count += 1
		for i in range(len(init)-1):
			cur = init[i] + init[i+1]
			row.append(cur)
			if cur == target:
				return row_count
		init = row + [1]
		
def foo(nums):
	result = [None] * len(nums)
	init = [1,1]
	row_count = 2
	counted = 0
	for j in range(len(nums)):
		if nums[j] == 1:
			result[j] = 1
			counted += 1
			
	while counted < len(nums):
		row = [1]
		row_count += 1
		for i in range(len(init)-1):
			cur = init[i] + init[i+1]
			row.append(cur)
			for j in range(len(nums)):
				if result[j] is not None:
					continue
				if cur == nums[j]:
					result[j] = row_count
					counted += 1
		row.append(1)
		init = row
		
	return result

lines = int(input())
nums = []
for i in range(lines):
	nums.append(int(input()))


for num in foo(nums):
	print(num)



