#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
int main() {
  long long a1, b1;
  cin >> a1 >> b1;
  long long n1, m1;
  cin >> n1 >> m1;
  long long a, b, n, m;
  a = a1;
  b = b1;
  n = n1;
  m = m1;
  long long x1, x2;
  x1 = a * b;
  x2 = n * m;
  long long gd = gcd(x1, x2);
  if (gd < 0) gd = gd * -1;
  long long y1, y2;
  y1 = x1 / gd;
  y2 = x2 / gd;
  long long ez12 = 0;
  long long ez13 = 0;
  long long ez22 = 0;
  long long ez23 = 0;
  for (int i = 0;; i++) {
    if (y1 % 2 == 0) {
      y1 = y1 / 2;
      ez12++;
    }
    if (y1 % 3 == 0) {
      y1 = y1 / 3;
      ez13++;
    }
    if (y1 % 2 != 0 && y1 % 3 != 0) break;
    if (y1 == 1) break;
  }
  for (int i = 0;; i++) {
    if (y2 % 2 == 0) {
      y2 = y2 / 2;
      ez22++;
    }
    if (y2 % 3 == 0) {
      y2 = y2 / 3;
      ez23++;
    }
    if (y2 % 2 != 0 && y2 % 3 != 0) break;
    if (y2 == 1) break;
  }
  if (y1 != 1 || y2 != 1) cout << -1 << endl;
  if (y1 == 1 && y2 == 1) {
    if (ez12 == 0 && ez13 == 0 && ez22 == 0 && ez23 == 0) {
      cout << 0 << endl;
      cout << a << " " << b << endl;
      cout << n << " " << m << endl;
    }
    int ac = 0;
    if (ez12 != 0 || ez13 != 0 || ez22 != 0 || ez23 != 0) {
      if (ez12 == 0 && ez13 == 0) {
        a = n1;
        b = m1;
        n = a1;
        m = b1;
        ez12 = ez22;
        ez13 = ez23;
        ez22 = 0;
        ez23 = 0;
        ac = 1;
      }
      if (ez12 > 0 && ez13 == 0) {
        if (ez23 <= ez12) {
          cout << ez12 << endl;
          long long can2 = ez12 - ez23;
          long long can3 = ez23;
          long long cn2 = 0;
          long long cn3 = 0;
          for (int i = 0;; i++) {
            if (cn2 == can2) break;
            if (a % 2 == 0) {
              a = a / 2;
              cn2++;
            }
            if (cn2 == can2) break;
            if (b % 2 == 0) {
              b = b / 2;
              cn2++;
            }
            if (cn2 == can2) break;
          }
          for (int i = 0;; i++) {
            if (cn3 == can3) break;
            if (n % 3 == 0) {
              n = 2 * n / 3;
              cn3++;
            }
            if (cn3 == can3) break;
            if (m % 3 == 0) {
              m = 2 * m / 3;
              cn3++;
            }
            if (cn3 == can3) break;
          }
          ac == 0 ? cout << a << " " << b << "\n"
                  : cout << n << " " << m << "\n";
          ac == 0 ? cout << n << " " << m << "\n"
                  : cout << a << " " << b << "\n";
        }
        if (ez23 > ez12) {
          cout << 2 * (ez23 - ez12) + ez12 << endl;
          long long can3 = ez12;
          long long cane = ez23 - ez12;
          long long cn3 = 0;
          long long ce = 0;
          for (int i = 0;; i++) {
            if (cn3 == can3) break;
            if (n % 3 == 0) {
              n = 2 * n / 3;
              cn3++;
            }
            if (cn3 == can3) break;
            if (m % 3 == 0) {
              m = 2 * m / 3;
              cn3++;
            }
            if (cn3 == can3) break;
          }
          for (int i = 0;; i++) {
            if (ce == cane) break;
            if (n % 3 == 0) {
              n = n / 3;
              ce++;
            }
            if (ce == cane) break;
            if (m % 3 == 0) {
              m = m / 3;
              ce++;
            }
            if (ce == cane) break;
          }
          ac == 0 ? cout << a << " " << b << "\n"
                  : cout << n << " " << m << "\n";
          ac == 0 ? cout << n << " " << m << "\n"
                  : cout << a << " " << b << "\n";
        }
      }
      if (ez13 > 0 && ez12 == 0) {
        if (ez22 <= ez13) {
          cout << 2 * (ez13 - ez22) + ez22 << endl;
          long long can3 = ez22;
          long long cane = ez13 - ez22;
          long long cn3 = 0;
          long long ce = 0;
          for (int i = 0;; i++) {
            if (cn3 == can3) break;
            if (a % 3 == 0) {
              a = 2 * a / 3;
              cn3++;
            }
            if (cn3 == can3) break;
            if (b % 3 == 0) {
              b = 2 * b / 3;
              cn3++;
            }
            if (cn3 == can3) break;
          }
          for (int i = 0;; i++) {
            if (ce == cane) break;
            if (a % 3 == 0) {
              a = a / 3;
              ce++;
            }
            if (ce == cane) break;
            if (b % 3 == 0) {
              b = b / 3;
              ce++;
            }
            if (ce == cane) break;
          }
          ac == 0 ? cout << a << " " << b << "\n"
                  : cout << n << " " << m << "\n";
          ac == 0 ? cout << n << " " << m << "\n"
                  : cout << a << " " << b << "\n";
        }
        if (ez22 > ez13) {
          cout << ez22 << endl;
          long long can2 = ez22 - ez13;
          long long can3 = ez13;
          long long cn2 = 0;
          long long cn3 = 0;
          for (int i = 0;; i++) {
            if (cn2 == can2) break;
            if (n % 2 == 0) {
              n = n / 2;
              cn2++;
            }
            if (cn2 == can2) break;
            if (m % 2 == 0) {
              m = m / 2;
              cn2++;
            }
            if (cn2 == can2) break;
          }
          for (int i = 0;; i++) {
            if (cn3 == can3) break;
            if (a % 3 == 0) {
              a = 2 * a / 3;
              cn3++;
            }
            if (cn3 == can3) break;
            if (b % 3 == 0) {
              b = 2 * b / 3;
              cn3++;
            }
            if (cn3 == can3) break;
          }
          ac == 0 ? cout << a << " " << b << "\n"
                  : cout << n << " " << m << "\n";
          ac == 0 ? cout << n << " " << m << "\n"
                  : cout << a << " " << b << "\n";
        }
      }
      if (ez13 > 0 && ez12 > 0) {
        cout << 2 * ez13 + ez12 << endl;
        long long can2 = ez13 + ez12;
        long long can3 = ez13;
        long long cn2 = 0;
        long long cn3 = 0;
        for (int i = 0;; i++) {
          if (cn3 == can3) break;
          if (a % 3 == 0) {
            a = 2 * a / 3;
            cn3++;
          }
          if (cn3 == can3) break;
          if (b % 3 == 0) {
            b = 2 * b / 3;
            cn3++;
          }
          if (cn3 == can3) break;
        }
        for (int i = 0;; i++) {
          if (cn2 == can2) break;
          if (a % 2 == 0) {
            a = a / 2;
            cn2++;
          }
          if (cn2 == can2) break;
          if (b % 2 == 0) {
            b = b / 2;
            cn2++;
          }
          if (cn2 == can2) break;
        }
        ac == 0 ? cout << a << " " << b << "\n" : cout << n << " " << m << "\n";
        ac == 0 ? cout << n << " " << m << "\n" : cout << a << " " << b << "\n";
      }
    }
  }
  return 0;
}
