For this Question: Power Rangers have to trap a evil spirit monster into a cuboid shape box with dimensions A*B*C, where A, B and C are positive integers. The volume of the box should be exactly X cubic units (that is A*B*C should be equal to X). To allow minimum evil aura to leak from the box the surface area of the box should be minimized. Given X, find the minimum surface area of the optimal box.The first and the only line of input contains a single integer X.

Constraints:
1 <= X <= 1000000Print the minimum surface area of the optimal box.Sample Input 1
125

Sample Output 1
150

Explanation: Optimal dimensions are 5*5*5.

Sample Input 2
100

Sample Output 1
130

Explanation: Optimal dimensions are 5*4*5., I have written this Solution Code: 
import java.io.*;
import java.util.*;

public class Main
{
	public static void main(String[] args)throws Exception{ new Main().run();}
	long mod=1000000000+7;
	long tsa=Long.MAX_VALUE;
	void solve() throws Exception
	{
		long X=nl();





		div(X);
		out.println(tsa);
	}
	long cal(long a,long b, long c)
	{
		return 2l*(a*b + b*c + c*a);
	}

	void div(long n)
    {
        for (long i=1; i*i<=n; i++)
        {
            if (n%i==0)
            {
                if (n/i == i)
                {
                	all_div(i, i);
                }

                else
                {
                	all_div(i, n/i);
                	all_div(n/i, i);
                }
            }
        }
    }
	void all_div(long n , long alag)
    {
		ArrayList<Long> al = new ArrayList<>();
        for (long i=1; i*i<=n; i++)
        {
            if (n%i==0)
            {
                if (n/i == i)
                  tsa=min(tsa,cal(i,i,alag));

                else
                {


                	 tsa=min(tsa,cal(i,n/i,alag));
                }
            }
        }
    }


	private byte[] buf=new byte[1024];
	private int index;
	private InputStream in;
	private int total;
	private SpaceCharFilter filter;
	PrintWriter out;

	int min(int... ar){int min=Integer.MAX_VALUE;for(int i:ar)min=Math.min(min, i);return min;}
	long min(long... ar){long min=Long.MAX_VALUE;for(long i:ar)min=Math.min(min, i);return min;}
	int max(int... ar) {int max=Integer.MIN_VALUE;for(int i:ar)max=Math.max(max, i);return max;}
	long max(long... ar) {long max=Long.MIN_VALUE;for(long i:ar)max=Math.max(max, i);return max;}
	void reverse(int a[]){for(int i=0;i<a.length>>1;i++){int tem=a[i];a[i]=a[a.length-1-i];a[a.length-1-i]=tem;}}
	void reverse(long a[]){for(int i=0;i<a.length>>1;i++){long tem=a[i];a[i]=a[a.length-1-i];a[a.length-1-i]=tem;}}
	String reverse(String s){StringBuilder sb=new StringBuilder(s);sb.reverse();return sb.toString();}

	void shuffle(int a[]) {
		ArrayList<Integer> al = new ArrayList<>();
		for(int i=0;i<a.length;i++)
			al.add(a[i]);

		Collections.sort(al);
		for(int i=0;i<a.length;i++)
			a[i]=al.get(i);
	}
	long lcm(long a,long b)
	{
		return (a*b)/(gcd(a,b));
	}

	int gcd(int a, int b)
	{
		if (a == 0)
			return b;
		return gcd(b%a, a);
	}
	long gcd(long a, long b)
	{
		if (a == 0)
			return b;
		return gcd(b%a, a);
	}

	long expo(long p,long q)
	{
		long z = 1;
		while (q>0) {
			if (q%2 == 1) {
				z = (z * p)%mod;
			}
			p = (p*p)%mod;
			q >>= 1;
		}
		return z;
	}
	void run()throws Exception
	{
		in=System.in; out = new PrintWriter(System.out);
		solve();
		out.flush();
	}
	private int scan()throws IOException
	{
		if(total<0)
			throw new InputMismatchException();
		if(index>=total)
		{
			index=0;
			total=in.read(buf);
			if(total<=0)
				return -1;
		}
		return buf[index++];
	}
	private int ni() throws IOException
	{
		int c = scan();
		while (isSpaceChar(c))
			c = scan();
		int sgn = 1;
		if (c == '-') {
			sgn = -1;
			c = scan();
		}
		int res = 0;
		do {
			if (c < '0' || c > '9')
				throw new InputMismatchException();
			res *= 10;
			res += c - '0';
			c = scan();
		} while (!isSpaceChar(c));
		return res * sgn;
	}
	private long nl() throws IOException
	{
		long num = 0;
		int b;
		boolean minus = false;
		while ((b = scan()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = scan();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = scan();
		}
	}
	private double nd() throws IOException{
		return Double.parseDouble(ns());
	}
	private String ns() throws IOException {
		int c = scan();
		while (isSpaceChar(c))
			c = scan();
		StringBuilder res = new StringBuilder();
		do {
			if (Character.isValidCodePoint(c))
				res.appendCodePoint(c);
			c = scan();
		} while (!isSpaceChar(c));
		return res.toString();
	}
	private String nss() throws IOException
	{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		return br.readLine();
	}
	private char nc() throws IOException
	{
		int c = scan();
		while (isSpaceChar(c))
			c = scan();
		return (char) c;
	}
	private boolean isWhiteSpace(int n)
	{
		if(n==' '||n=='\n'||n=='\r'||n=='\t'||n==-1)
			return true;
		return false;
	}
	private boolean isSpaceChar(int c) {
		if (filter != null)
			return filter.isSpaceChar(c);
		return isWhiteSpace(c);
	}
	private interface SpaceCharFilter {
		public boolean isSpaceChar(int ch);
	}
}, In this Programming Language: Java, Now tell me if this Code is compilable or not?