import java.util.*;

public class Task582A {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        TreeMap<Integer, Integer> map = new TreeMap<>(Collections.reverseOrder());
        List<Integer> sol = new ArrayList<>();

        for (int i = 0; i < n * n; i++) {
            int el = in.nextInt();
            if (map.containsKey(el))
                map.put(el, map.get(el) + 1);
            else map.put(el, 1);
        }

        Integer max = map.firstKey();
        sol.add(max);
        int max_occ = map.get(max);
        if (max_occ > 1) map.put(max, max_occ - 1);
        else map.remove(max);

        while (sol.size() < n) {
            int cur = map.firstKey();
            for (Integer i : sol) {
                int gcd = GCD(cur, i);
                int val = map.get(gcd);
                val -= 2;
                if (val == 0) map.remove(gcd);
                else map.put(gcd, val);
            }
            int count = map.get(cur);
            if (count == 1) map.remove(cur);
            else map.put(cur, count - 1);
            sol.add(cur);
        }
        for (Integer i : sol) {
            System.out.print(i + " ");
        }
    }

    public static int GCD(int a, int b) {
        if (b == 0) return a;
        return GCD(b, a % b);
    }
}
