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 Java8 (OpenJDK 1.8.0) (judge verdict: Accepted)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws NumberFormatException 
	 */
	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(br.readLine());
		
		int i = 1;
		int j = 2;
		int k = 2;
//		
//		long bunsiTest = 4*3498*3498*3498;
//		long bunboTest = 3498*3498+3498*3498+3498*3498;
//		System.out.println(bunsiTest/bunboTest);
		
		for(i = n/4+1; i <= 3500; i++){
//			System.out.println("i = "+i);
			if(i % 2 == 0){
				j = i;
			}
			if(i % 2 == 1){
				j = i + 1;
			}
			for(j = Math.max(j, n*i/(4*i - n) + 1); j <= 3500; j ++){
				long tmpBunbo = (long)4*i*j - n*i - n*j;
				long tmpBunsi = (long)n*i*j;
				
				if(tmpBunsi%tmpBunbo == 0){
					System.out.println(i + " " + j + " " + tmpBunsi/tmpBunbo);
					return ;
				}
				else{
					continue;
				}
				
//				for(k = j; k <= 3500 ; k += 2 ){
//					long bunsi = (long)4*i*j*k;
////					System.out.println("test");
//					long bunbo = (long)i*j + j*k + k*i;
//					
//					if(bunsi % bunbo == 0 && bunsi / bunbo == n){
//						System.out.println(i+" "+j+" "+k);
////						break;
//						return;
//					}
//				}
			}
		}
		
	}
	
	

}