Problem:
Score : 300 points

Problem Statement

You are given an integer N.

Find a triple of positive integers h, n and w such that 4/N = 1/h + 1/n + 1/w.

If there are multiple solutions, any of them will be accepted.

Constraints

It is guaranteed that, for the given integer N, there exists a solution such that h,n,w \leq 3500.

Inputs

Input is given from Standard Input in the following format:

N

Outputs

Print a triple of positive integers h, n and w that satisfies the condition, in the following format:

h n w

Sample Input 1

2

Sample Output 1

1 2 2

4/2 = 1/1 + 1/2 + 1/2.

Sample Input 2

3485

Sample Output 2

872 1012974 1539173474040

It is allowed to use an integer exceeding 3500 in a solution.

Sample Input 3

4664

Sample Output 3

3498 3498 3498

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<vector>
#include<deque>
#include<map>
#include<set>

using namespace std;

long N, h, n, w;

int main_even(){
  h = N/2;
  n = N;
  w = N;
}

int main_odd(){
  n = N;
  int end = 0;
  h = 0;
  for( h = 1; h <= 3500; h++ ){
    for( n = 1; n <= 3500; n++ ){
      long tmp = 4*h*n - N*h - N*n;
      if( tmp == 0 ){ continue; }
      w = N*h*n / tmp;
      if( w > 0 && tmp*w == N*h*n ){ return 0; }
    }
  }
  return -1;
}

int main(){
  cin >> N;
  if( N % 2 == 0 ){
    main_even();
  }else{
    main_odd();
  }
  cout << h << " " << n << " " << w << " "<< endl;
  return 0;
}