#!usr/bin/env python3
from collections import defaultdict, deque
from heapq import heappush, heappop
from itertools import permutations, accumulate
import sys
import math
import bisect
def LI(): return [int(x) for x in sys.stdin.readline().split()]
def I(): return int(sys.stdin.readline())
def IR(n):
    return [I() for _ in range(n)]
def LIR(n):
    return [LI() for _ in range(n)]

sys.setrecursionlimit(1000000)
mod = 1000000007

def solve():
    n = I()
    a = LI()
    m = max(a)+1
    f = [0]*m
    for i in a:
        f[i] += 1
    cnt = [0]*m
    for i in range(1,m):
        s = 0
        for j in range(i,m,i):
            s += f[j]
        cnt[i] = s
    ans = [0]*n
    for i in range(m)[::-1]:
        ci = cnt[i]-1
        if ci >= 0 and not ans[ci]:
            ans[ci] = i
    for i in range(n-1)[::-1]:
        ans[i] = max(ans[i],ans[i+1])
    for i in ans[::-1]:
        print(i)
    return


if __name__ == "__main__":
    solve()