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# (.NET Core 3.1.201) (judge verdict: Accepted)

using System;
using System.Text;
using System.Collections.Generic;
using System.Collections;
using static System.Math;
using System.Linq;
using static System.Array;

namespace ConsoleApp2
{
    class Program
    {
        static int N;
        static long mod = 1000000007;
        static char[] az = Enumerable.Range('a', 'z' - 'a' + 1).Select(i => (Char)i).ToArray();
        static void Main(string[] args)
        {
            N = int.Parse(Console.ReadLine());
            //R = Console.ReadLine().Split(' ').Select(x => long.Parse(x)).ToArray();
            //var S = Console.ReadLine();

            var con = true;
            for (long h = 1;con && h <= 3500; h++)
            {
                for (long n = 1; con && n <= 3500; n++)
                {
                    long low = 1L;
                    long high = 3501L;
                    long w = (low + high) / 2;
                    while (high - low > 1)
                    {
                        w = (low + high) / 2;
                        if (4*h*n*w - N*(n*w+h*w+n*h) == 0)
                        {
                            Console.WriteLine(h+" "+n+ " " + w);
                            con = false;
                            break;
                        }
                        else if (4 * h * n * w - N * (n * w + h * w + n * h) > 0)
                        {
                            high = w;
                        }
                        else
                        {
                            low = w;
                        }
                    }
                }
            }
        }

    }
}