package OOPS;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Stack;
public class playingwithcards {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
int[] primesarr = SOE(100000);
int[] inputarr = new int[n];
int Q = scn.nextInt();
for (int i = 0; i < n; i++) {
inputarr[i] = scn.nextInt();
}
Stack<Integer> b = new Stack<>();
for (int j = 1; j <= Q; j++) {
int primeno = primesarr[j - 1];
for (int i = 0; i < inputarr.length; i++) {
if (inputarr[i] % primeno == 0) {
b.push(inputarr[i]);
inputarr[i] = 0;
}
}
}
for (int i = 0; i < inputarr.length; i++) {
if (inputarr[i] != 0) {
b.push(inputarr[i]);
}
}
reversestack(b);
}
public static void reversestack(Stack<Integer> s) {
if (s.isEmpty()) {
return;
}
int item = s.pop();
reversestack(s);
System.out.println(item);
s.push(item);
}
public static int[] SOE(int n) {
Stack<Integer> a = new Stack<>();
boolean[] primes = new boolean[n + 1];
int[] arr1 = new int[primes.length];
int[] arr2 = new int[primes.length];
Arrays.fill(primes, true);
primes[0] = primes[1] = false;
for (int table = 2; table * table <= n; table++) {
if (primes[table] == false) {
continue;
} else {
for (int multi = 2; table * multi <= n; multi++) {
primes[table * multi] = false;
}
}
}
for (int i = 0; i < primes.length; i++) {
int a1 = 0;
if (primes[i]) {
a1 = i;
}
arr1[i] = a1;
}
for (int x = 0; x < primes.length; x++) {
if (arr1[x] != 0) {
a.push(arr1[x]);
}
}
reversestack(a);
for (int x1 = 0; x1 < primes.length; x1++) {
while (a.isEmpty()) {
int item = a.pop();
arr2[x1]=item;
}
}
return arr2;
}
}