#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000100;
const int INF = 1e9 + 9;
int ans;
long long area1, area2;
long long a[3], b[3];
int twos[3], threes[3];
int loss2[3], loss3[3];
int trans[3];
void out() {
  printf("%d\n", ans);
  long long *cur = &a[1];
  for (int i = int(1); i <= int(trans[1]); ++i) {
    if (*cur % 3 != 0) cur = &b[1];
    *cur /= 3, *cur *= 2;
  }
  cur = &a[1];
  for (int i = int(1); i <= int(loss3[1]); ++i) {
    if (*cur % 3 != 0) cur = &b[1];
    *cur /= 3;
  }
  cur = &a[1];
  for (int i = int(1); i <= int(loss2[1]); ++i) {
    if (*cur % 2 != 0) cur = &b[1];
    *cur /= 2;
  }
  cur = &a[2];
  for (int i = int(1); i <= int(trans[2]); ++i) {
    if (*cur % 3 != 0) cur = &b[2];
    *cur /= 3, *cur *= 2;
  }
  cur = &a[2];
  for (int i = int(1); i <= int(loss3[2]); ++i) {
    if (*cur % 3 != 0) cur = &b[2];
    *cur /= 3;
  }
  cur = &a[2];
  for (int i = int(1); i <= int(loss2[2]); ++i) {
    if (*cur % 2 != 0) cur = &b[2];
    *cur /= 2;
  }
  printf("%I64d %I64d\n", a[1], b[1]);
  printf("%I64d %I64d\n", a[2], b[2]);
}
int main() {
  scanf("%I64d %I64d", &a[1], &b[1]);
  area1 = a[1] * b[1];
  scanf("%I64d %I64d", &a[2], &b[2]);
  area2 = a[2] * b[2];
  while (area1 % 2 == 0) ++twos[1], area1 /= 2;
  while (area1 % 3 == 0) ++threes[1], area1 /= 3;
  while (area2 % 2 == 0) ++twos[2], area2 /= 2;
  while (area2 % 3 == 0) ++threes[2], area2 /= 3;
  if (area1 != area2) {
    printf("-1");
    return 0;
  }
  twos[0] = min(twos[1], twos[2]);
  loss2[1] = twos[1] - twos[0];
  loss2[2] = twos[2] - twos[0];
  threes[0] = min(threes[1], threes[2]);
  loss3[1] = threes[1] - threes[0];
  loss3[2] = threes[2] - threes[0];
  if ((loss2[1] && loss3[2]) || (loss2[2] && loss3[1])) {
    ans = max(max(loss2[1], loss3[1]), max(loss2[2], loss3[2]));
    if ((loss2[1] < loss3[2]) || (loss2[2] < loss3[1]))
      ans += max(loss3[2] - loss2[1], loss3[1] - loss2[2]);
    if (loss2[1] && loss3[2])
      loss2[2] = max(0, loss3[2] - loss2[1]);
    else
      loss2[1] = max(0, loss3[1] - loss2[2]);
    loss2[1] -= min(loss2[1], loss3[2]);
    loss2[2] -= min(loss2[2], loss3[1]);
    trans[1] = loss3[1], loss3[1] = 0;
    trans[2] = loss3[2], loss3[2] = 0;
  } else {
    ans = max(loss2[1] + loss3[1] * 2, loss2[2] + loss3[2] * 2);
    trans[1] = loss3[1];
    loss2[1] += loss3[1];
    trans[2] = loss3[2];
    loss2[2] += loss3[2];
    loss3[1] = 0;
    loss3[2] = 0;
  }
  out();
  return 0;
}
