#include <bits/stdc++.h>
using namespace std;
const long long int mod = 1e9 + 9;
long long int fact[300010];
const long long int N = 100005;
const long long int MAX = 10000010;
long long int power(long long int x, long long int n) {
  long long int res = 1;
  while (n > 0) {
    if (n % 2 == 1) res = (res * x) % mod;
    x = (x * x) % mod;
    n /= 2;
  }
  return res % mod;
}
void factorial() {
  fact[0] = fact[1] = 1;
  for (long long int i = 2; i < 300005; i++) fact[i] = (fact[i - 1] * i) % mod;
}
long long int inv(long long int n) { return power(n, mod - 2) % mod; }
long long int comb(long long int n, long long int k) {
  long long int ans = 1;
  ans = (ans * fact[n]) % mod;
  ans = (ans * power(fact[n - k], mod - 2)) % mod;
  ans = (ans * power(fact[k], mod - 2)) % mod;
  return ans;
}
long long int a[N], b[N], x[MAX], y[MAX];
long long int prime[MAX];
void primer() {
  for (long long int i = 2; i * i < MAX; i++) {
    if (!prime[i]) {
      for (long long int j = i * i; j < MAX; j += i) prime[j] = i;
    }
  }
  for (long long int i = 2; i < MAX; i++) {
    if (!prime[i]) prime[i] = i;
  }
}
void divisor(long long int n, long long int a[], long long int x[]) {
  for (long long int i = 0; i < n; i++) {
    for (long long int j = a[i]; j > 1; j /= prime[j]) {
      x[prime[j]]++;
    }
  }
}
void solve(long long int n, long long int a[], long long int y[]) {
  for (long long int i = 0; i < n; i++) {
    long long int x = 1;
    for (long long int j = a[i]; j > 1; j /= prime[j]) {
      if (y[prime[j]] > 0)
        y[prime[j]]--;
      else
        x *= prime[j];
    }
    cout << x << " ";
  }
  cout << "\n";
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  factorial();
  long long int t;
  t = 1;
  for (long long int tc = 1; tc <= t; tc++) {
    primer();
    long long int n, m;
    cin >> n >> m;
    long long int i, j, k;
    for (i = 0; i < n; i++) cin >> a[i];
    for (i = 0; i < m; i++) cin >> b[i];
    divisor(n, a, x);
    divisor(m, b, y);
    cout << n << " " << m << "\n";
    solve(n, a, y);
    solve(m, b, x);
  }
}
