N = int(input()) A = list(map(int,input().split())) C = 10 ** 6 + 1 dat = [0] * C for a in A: dat[a] += 1 era = [0] * C for i in range(2,C): if era[i] == 0: for j in range(2 * i,C,i): era[j] = 1 for j in range((C-1) // i,0,-1): dat[j] += dat[i * j] Max = [0] * (N + 1) for i in range(1,C): Max[dat[i]] = i for i in range(N,0,-1): Max[i-1] = max(Max[i-1],Max[i]) for k in range(N): print(Max[N - k]) #print(dat[:30])