#include <bits/stdc++.h>
void divpow(int *x1, int *x2, int d, int p) {
  int i;
  for (i = 0; i < p; i++) {
    if (*x1 % d == 0) {
      *x1 /= d;
      *x1 *= d - 1;
    } else {
      *x2 /= d;
      *x2 *= d - 1;
    }
  }
}
int get_pow(long long *x, int d) {
  int result = 0;
  while (*x % d == 0) {
    *x /= d;
    result++;
  }
  return result;
}
int main() {
  int a1, a2, b1, b2;
  long long a, b;
  int apow2, apow3, bpow2, bpow3;
  int minutes;
  scanf("%d %d\n", &a1, &a2);
  scanf("%d %d\n", &b1, &b2);
  a = a1 * (long long)a2;
  b = b1 * (long long)b2;
  apow2 = get_pow(&a, 2);
  bpow2 = get_pow(&b, 2);
  apow3 = get_pow(&a, 3);
  bpow3 = get_pow(&b, 3);
  if (a != b) {
    printf("-1\n");
    return 0;
  }
  minutes = 0;
  if (apow3 > bpow3) {
    minutes += apow3 - bpow3;
    apow2 += apow3 - bpow3;
    divpow(&a1, &a2, 3, apow3 - bpow3);
  } else if (bpow3 > apow3) {
    minutes += bpow3 - apow3;
    bpow2 += bpow3 - apow3;
    divpow(&b1, &b2, 3, bpow3 - apow3);
  }
  if (apow2 > bpow2) {
    minutes += apow2 - bpow2;
    divpow(&a1, &a2, 2, apow2 - bpow2);
  } else if (bpow2 > apow2) {
    minutes += bpow2 - apow2;
    divpow(&b1, &b2, 2, bpow2 - apow2);
  }
  printf("%d\n%d %d\n%d %d\n", minutes, a1, a2, b1, b2);
  return 0;
}
