#include <bits/stdc++.h>
template <typename A>
inline A Gcd(register A x, register A y) {
  return !y ? x : Gcd(y, x % y);
}
namespace FastIO {
char buf[1 << 21], buf2[1 << 21], a[20], *p1 = buf, *p2 = buf, hh = ' ';
int p, p3 = -1;
inline int getc() {
  return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
void read() {}
void print() {}
template <typename T, typename... T2>
inline void read(T &x, T2 &...oth) {
  int f = 0;
  x = 0;
  char ch = getc();
  while (!isdigit(ch)) {
    if (ch == '-') f = 1;
    ch = getc();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - 48;
    ch = getc();
  }
  if (f) x = -x;
  read(oth...);
}
inline void flush() { fwrite(buf2, 1, p3 + 1, stdout), p3 = -1; }
template <typename T, typename... T2>
inline void print(T x, T2... oth) {
  if (p3 > 1 << 20) flush();
  if (x < 0) buf2[++p3] = 45, x = -x;
  do {
    a[++p] = x % 10 + 48;
  } while (x /= 10);
  do {
    buf2[++p3] = a[p];
  } while (--p);
  buf2[++p3] = hh;
  print(oth...);
}
template <typename T>
inline void print_h(T x, char h) {
  if (p3 > 1 << 20) flush();
  if (x < 0) buf2[++p3] = 45, x = -x;
  do {
    a[++p] = x % 10 + 48;
  } while (x /= 10);
  do {
    buf2[++p3] = a[p];
  } while (--p);
  buf2[++p3] = h;
}
inline void putchar(char a) { buf2[++p3] = a; }
}  // namespace FastIO
const int N = 1e4 + 5;
int n, a[N], b[N], cnt;
int main(int argc, char const *argv[]) {
  FastIO::read(n);
  for (register int i = (1); i <= (n); ++i) FastIO::read(a[i]);
  for (register int i = (1); i < (n); ++i)
    if (Gcd(a[i], a[i + 1]) > 1) b[++cnt] = i;
  FastIO::print_h(cnt, '\n');
  for (int i = 1, j = b[1], k = 1; i <= n; ++i) {
    FastIO::print(a[i]);
    if (i == j) {
      FastIO::print(1);
      j = b[++k];
    }
  }
  FastIO::flush();
  return 0;
}
