#include <bits/stdc++.h>
using namespace std;
int flag[10000010] = {0};
void init() {
  for (int i = 4; i <= 10000010; i += 2) flag[i] = 2;
  for (int i = 3; i <= 10000010 / i; i += 2) {
    if (flag[i] == 0) {
      for (int j = i * i; j < 10000010; j += i * 2) flag[j] = i;
    }
  }
}
void func(vector<int>& ans, vector<pair<int, int> > x) {
  ans.clear();
  for (int i = 0; i < x.size(); i++) {
    if (i > 0 && x[i].first == x[i - 1].first)
      ans[ans.size() - 1] *= x[i].second;
    else
      ans.push_back(x[i].second);
  }
  if (ans.size() == 0) ans.push_back(1);
}
void print(vector<int>& ans) {
  for (int i = 0; i < ans.size(); i++) {
    if (i) printf(" ");
    printf("%d", ans[i]);
  }
  printf("\n");
}
int main() {
  init();
  int n, m;
  scanf("%d%d", &n, &m);
  vector<pair<int, int> > a;
  vector<pair<int, int> > b;
  a.clear();
  b.clear();
  for (int i = 0; i < n; i++) {
    int x;
    scanf("%d", &x);
    while (x > 1) {
      if (flag[x] == 0) flag[x] = x;
      a.push_back(make_pair(flag[x], i));
      x /= flag[x];
    }
  }
  for (int i = 0; i < m; i++) {
    int x;
    scanf("%d", &x);
    while (x > 1) {
      if (flag[x] == 0) flag[x] = x;
      b.push_back(make_pair(flag[x], i));
      x /= flag[x];
    }
  }
  sort(a.begin(), a.end());
  sort(b.begin(), b.end());
  int i, j;
  i = j = 0;
  vector<pair<int, int> > ansx;
  vector<pair<int, int> > ansy;
  for (; i < a.size() && j < b.size();) {
    if (a[i].first < b[j].first) {
      ansx.push_back(make_pair(a[i].second, a[i].first));
      i++;
    } else if (a[i].first > b[j].first) {
      ansy.push_back(make_pair(b[j].second, b[j].first));
      j++;
    } else {
      i++;
      j++;
    }
  }
  for (; i < a.size(); i++) ansx.push_back(make_pair(a[i].second, a[i].first));
  for (; j < b.size(); j++) ansy.push_back(make_pair(b[j].second, b[j].first));
  sort(ansx.begin(), ansx.end());
  sort(ansy.begin(), ansy.end());
  vector<int> x;
  vector<int> y;
  func(x, ansx);
  func(y, ansy);
  printf("%d %d\n", x.size(), y.size());
  print(x);
  print(y);
  return 0;
}
