def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 A = list(map(int, input[idx:idx+N])) idx += N max_A = 10**6 freq = [0] * (max_A + 1) for a in A: freq[a] += 1 # Compute cnt[d] for all d from 1 to max_A cnt = [0] * (max_A + 1) for d in range(1, max_A + 1): for multiple in range(d, max_A + 1, d): cnt[d] += freq[multiple] # Collect all d with cnt[d] > 0 and sort in descending order sorted_ds = [] for d in range(1, max_A + 1): if cnt[d] > 0: sorted_ds.append(d) sorted_ds.sort(reverse=True) # Process each d to collect ranges current_max = N - 1 ranges = [] for d in sorted_ds: required_K = max(0, N - cnt[d]) if required_K > current_max: continue start = required_K end = current_max ranges.append((start, end, d)) current_max = start - 1 if current_max < 0: break # Initialize ans array ans = [0] * N for start, end, d in ranges: for k in range(start, end + 1): ans[k] = d # Output the results for k in range(N): print(ans[k]) if __name__ == '__main__': main()