## https://yukicoder.me/problems/no/2610 import math def is_prime(p): sqrt_p = int(math.sqrt(p)) for q in range(2, sqrt_p + 1): if p % q == 0: return False return True def calc_lcm(a, a2): gcd = calc_gcd(a, a2) return a * a2 // gcd def compare_lcm(p, new_array): a = new_array[0] a2 =new_array[1] lcm1 = calc_lcm(a, p) lcm2 = calc_lcm(a, a2) return lcm1 > lcm2 def calc_gcd(A, B): """ 正の整数A, Bの最大公約数を計算する """ a = max(A, B) b = min(A, B) while a % b > 0: c = a % b a = b b = c return b def main(): N = int(input()) array = [5, 6, 8] primes = {2, 3, 5} for _ in range(3, N): new_array = [] for a in array: new_array.append(a * 2) for p in range(2, 100000): if p not in primes and is_prime(p) and compare_lcm(p, new_array): primes.add(p) array = [p] + new_array break for i in range(N - 1): if array[i] >= array[i + 1]: print("No") return for i in range(N - 2): a = array[i] a2 = array[i + 1] gcd1 = calc_gcd(a, a2) lcm1 = a * a2 // gcd1 a3 = array[i + 2] gcd2 = calc_gcd(a2, a3) lcm2 = a2 * a3 // gcd2 if lcm1 <= lcm2: print(f"No2, lcm1 = {lcm1}, lcm2 = {lcm2}") return print(" ".join(map(str, array))) if __name__ == '__main__': main()