#include <bits/stdc++.h>
using namespace std;
void showVector(vector<long long> s) {
  cout << "----------" << endl;
  for (auto x : s) cout << x << " ";
  cout << endl << "----------" << endl;
}
void println(long long n, long long s1 = 0, long long s2 = 0,
             long long s3 = 0) {
  if (n == 1)
    cout << s1;
  else if (n == 2)
    cout << s1 << " " << s2;
  else
    cout << s1 << " " << s2 << " " << s3;
  cout << endl;
}
const long long MAX_V = 11;
long long head[MAX_V];
struct EDGE {
  long long u, v, w;
  EDGE(long long tu = 0, long long tv = 0, long long tw = 0) {
    u = tu, v = tv, w = tw;
  }
};
struct Triple {
  long long f, s, t;
};
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
int main() {
  long long n, a, b;
  cin >> n >> a >> b;
  bool flag = false;
  if (a * b >= 6 * n) {
    cout << a * b << endl;
    cout << a << " " << b << endl;
    return 0;
  }
  if (a > b) swap(a, b), flag = true;
  long long ans = 1LL << 62;
  long long ans_a, ans_b;
  for (long long i = a; i <= sqrt(6 * n); i++) {
    long long newb = ceil(6 * n * 1.0 / i);
    if (newb * i < ans && newb >= b) {
      ans = newb * i;
      ans_a = i;
      ans_b = newb;
    }
  }
  if (flag) swap(ans_a, ans_b);
  cout << ans << endl;
  cout << ans_a << " " << ans_b << endl;
  return 0;
}
