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()