def generate_sequence(n):
"""生成xxx定律序列"""
if not 1 < n <= 1000:
return []
sequence = []
seen = set() # 防止循环
while n != 1 and n not in seen:
sequence.append(n)
seen.add(n)
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
n = n // 2 # 修改:加入这一步
sequence.append(n) # 添加最后一个数
return sequence
def find_key_numbers(numbers):
"""查找关键数"""
key_nums = []
covered = set()
# 按原始顺序生成序列
for num in numbers:
seq = generate_sequence(num)
# 将除第一个数外的所有数加入覆盖集
for x in seq[1:]:
covered.add(x)
# 从后往前检查关键数
for num in reversed(numbers):
if num not in covered:
key_nums.append(num)
return " ".join(map(str, key_nums))
def main():
while True:
try:
n = int(input())
if not 1 <= n <= 500:
continue
numbers = list(map(int, input().split()))
if len(numbers) != n or not all(1 < x <= 1000 for x in numbers):
continue
print(find_key_numbers(numbers))
except EOFError:
break
if __name__ == "__main__":
main()