#include <bits/stdc++.h>
using namespace std;
struct num {
  int NumOfTwo;
  int NumOfThree;
  num() {
    NumOfThree = 0;
    NumOfTwo = 0;
  }
};
int main() {
  int a[4];
  for (int i = 0; i < 4; ++i) {
    scanf("%d", a + i);
  }
  num n[4];
  for (int i = 0; i < 4; ++i) {
    while (a[i] % 2 == 0) {
      ++n[i].NumOfTwo;
      a[i] /= 2;
    }
    while (a[i] % 3 == 0) {
      ++n[i].NumOfThree;
      a[i] /= 3;
    }
  }
  if (a[0] * a[1] == a[2] * a[3]) {
    int two1 = n[0].NumOfTwo + n[1].NumOfTwo;
    int two2 = n[2].NumOfTwo + n[3].NumOfTwo;
    int three1 = n[0].NumOfThree + n[1].NumOfThree;
    int three2 = n[2].NumOfThree + n[3].NumOfThree;
    int three = min(three1, three2);
    int ans = 0;
    ans += three1 - three;
    ans += three2 - three;
    two1 += three1 - three;
    two2 += three2 - three;
    int two = min(two1, two2);
    ans += two1 - two;
    ans += two2 - two;
    printf("%d\n", ans);
    int three_ = three;
    int three3 = 0, three4 = 0;
    three1 = 0, three2 = 0;
    for (int i = 0; i < n[0].NumOfThree; ++i) {
      if (three == 0) break;
      a[0] *= 3;
      --three;
      ++three1;
    }
    for (int i = 0; i < n[1].NumOfThree; ++i) {
      if (three == 0) break;
      a[1] *= 3;
      --three;
      ++three2;
    }
    three = three_;
    for (int i = 0; i < n[2].NumOfThree; ++i) {
      if (three == 0) break;
      a[2] *= 3;
      --three;
      ++three3;
    }
    for (int i = 0; i < n[3].NumOfThree; ++i) {
      if (three == 0) break;
      a[3] *= 3;
      --three;
      ++three4;
    }
    int two_ = two;
    for (int i = 0; i < n[0].NumOfTwo + n[0].NumOfThree - three1; ++i) {
      if (two == 0) break;
      a[0] *= 2;
      --two;
    }
    for (int i = 0; i < n[1].NumOfTwo + n[1].NumOfThree - three2; ++i) {
      if (two == 0) break;
      a[1] *= 2;
      --two;
    }
    two = two_;
    for (int i = 0; i < n[2].NumOfTwo + n[2].NumOfThree - three3; ++i) {
      if (two == 0) break;
      a[2] *= 2;
      --two;
    }
    for (int i = 0; i < n[3].NumOfTwo + n[3].NumOfThree - three4; ++i) {
      if (two == 0) break;
      a[3] *= 2;
      --two;
    }
    printf("%d %d\n%d %d\n", a[0], a[1], a[2], a[3]);
  } else {
    printf("-1\n");
  }
  return 0;
}
