/*
 * C - Problematic Public Keys
 * ICPC 2019 Greater NY Regional
 * Solution by Lee Wittenburg
 * Problem by Lee Wittenburg
 */
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>

#define MAX_VALUES  100
#define MAX_FACTORS (2 * MAX_VALUES)

int Data[MAX_VALUES];
int Factors[MAX_FACTORS];
int Num_factors = 0;

int compare(const void *, const void *);
void insert_factor(int n);
int gcd(int, int);

int main()
{
	int j, k, n, m;
	assert(CHAR_BIT * sizeof(int) >= 32);
	scanf("%d", &m);
	for (j = 0; j < m; j++) {
		scanf("%d", &Data[j]);
	}
	Num_factors = 0;
	for (j = 0; j < m; j++) {
		for (k = j+1; k < m; k++) {
			int f = gcd(Data[j], Data[k]);
			if (f != 1) {
				insert_factor(f);
				insert_factor(Data[j]/f);
				insert_factor(Data[k]/f);
			}
		}
	}
	printf("%d", Factors[0]);
	for (j = 1; j < Num_factors; j++) {
		printf("%c%d", (j % 5 == 0) ? '\n' : ' ', Factors[j]);
	}
	putchar('\n');
	return 0;
}

int compare(const void *p, const void *q)
{
	return *(int *)p - *(int *)q;
}

void insert_factor(int n)
{
	int i, j;
	if (bsearch(&n, Factors, Num_factors, sizeof(int), compare) != NULL) {
		return;
	}
	for (i = 0; i < Num_factors && n > Factors[i]; i++) {
		/* null body for location search */
	}
	for (j = ++Num_factors; j > i; j--) {
		Factors[j] = Factors[j - 1];
	}
	Factors[i] = n;
}

int gcd(int u, int v)
{
	int r;
	while (v > 0) {
		r = u % v;
		u = v;
		v = r;
	}
	return u;
}
