Vladik and Chloe decided to determine who of them is better at math. Vladik claimed that for any positive integer n he can represent fraction <image> as a sum of three distinct positive fractions in form <image>.

Help Vladik with that, i.e for a given n find three distinct positive integers x, y and z such that <image>. Because Chloe can't check Vladik's answer if the numbers are large, he asks you to print numbers not exceeding 109.

If there is no such answer, print -1.

Input

The single line contains single integer n (1 ≤ n ≤ 104).

Output

If the answer exists, print 3 distinct numbers x, y and z (1 ≤ x, y, z ≤ 109, x ≠ y, x ≠ z, y ≠ z). Otherwise print -1.

If there are multiple answers, print any of them.

Examples

Input

3


Output

2 7 42


Input

7


Output

7 8 56
import java.io.*;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;
import java.util.Map.Entry;
	
	
	 public class hehehe {
	    static boolean ans[]=new boolean[1000002];
	    static int count=0;
	    static int flag=0;
		static double eps=(double)1e-6;
		static long mod=(long)1e9+7;
		static int maxcount=0;
		static int index=0;
		static HashMap<Integer,Integer> hs=new HashMap<>();
		
		public static void main(String args[]){
			InputReader in = new InputReader(System.in);
			OutputStream outputStream = System.out;
			PrintWriter out = new PrintWriter(outputStream);
			Scanner sc=new Scanner(System.in);
			//----------My Code----------
			int n=in.nextInt();
			int x=n;
			
			int flag=0;
			
			primeFactors(n);
			Iterator itr=hs.keySet().iterator();
			//System.out.println(hs);
			while(itr.hasNext()){
				int key=(int)(itr.next());
				if(hs.get(key)!=0){
				long value=(long)(n)*(n)/(long)Math.pow(key,hs.get(key)*2);
				//System.out.println(value);
				if(value<=(int)(1e9)&&(long)Math.pow(key,hs.get(key)*2)<=(int)(1e9)){
					int z=(int)(n+Math.pow(key,hs.get(key)*2));
					int y=(int)(n+value);
					if(x!=z&&y!=z&&y!=x){
					System.out.println(x+" "+y+" "+z);
					}
					flag=1;
					break;
				}
				}
			}
			if(flag!=1)
				System.out.println(-1);
			
			
			
		
			
		
				
			
			//-- -------------The End------------------
			out.close();
		}
			
		 public static void primeFactors(int n)
		    {
		     int count=0;   
			 // Print the number of 2s that divide n
		        while (n%2==0)
		        {
		           count++;
		            n /= 2;
		        }
		        hs.put(2,count);
		 
		        // n must be odd at this point.  So we can
		        // skip one element (Note i = i +2)
		        for (int i = 3; i <= Math.sqrt(n); i+= 2)
		        {
		        	count=0;
		            // While i divides n, print i and divide n
		            while (n%i == 0)
		            {
		                n /= i;
		                count++;
		            }
		            hs.put(i,count);
		        }
		 
		        // This condition is to handle the case whien
		        // n is a prime number greater than 2
		        if (n > 2){
		            hs.put(n,1);
		        }
		    }
		 
		static int recursiveBinarySearch(int[] sortedArray, int start, int end, int key) {
	
		while (start < end) {
				int mid = start + (end - start) / 2; 
				if (key < sortedArray[mid]) {
					end=mid-1;
	
				} else if (key >=sortedArray[mid]) {
					start=mid+1;
				}
			}
			return (start); 
		}
	
		static long modulo(long a,long b,long c) {
			long x=1;
			long y=a;
			while(b > 0){
				if(b%2 == 1){
					x=(x*y)%c;
				}
			
				y = (y*y)%c; // squaring the base
				b /= 2;
			}
			return  x%c;
		}
		
		
		static long gcd(long x, long y)
		
		{
			long r=0, a, b;
			a = (x > y) ? x : y; // a is greater number
			b = (x < y) ? x : y; // b is smaller number
			r = b;
			while(a % b != 0)
			{
				r = a % b;
				a = b;
				b = r;
			}
			return r;
		}
		static class Pair implements Comparable<Pair> {
			int x;
			int y;
			//int i;
			Pair(int  xx,int yy){
				
				x=xx;
				y=yy;
				//i=ii;
			}
			@Override
			public int compareTo(Pair arg0) {
			
				
				
					return 1;
				
				
			}
		
		}
		static class InputReader {
			public BufferedReader reader;
			public StringTokenizer tokenizer;
	
			public InputReader(InputStream inputstream) {
				reader = new BufferedReader(new InputStreamReader(inputstream));
				tokenizer = null;
			}
	
			public String nextLine(){
				String fullLine=null;
				while (tokenizer == null || !tokenizer.hasMoreTokens()) {
					try {
						fullLine=reader.readLine();
					} catch (IOException e) {
						throw new RuntimeException(e);
					}
					return fullLine;
				}
				return fullLine;
			}
			public String next() {
				while (tokenizer == null || !tokenizer.hasMoreTokens()) {
					try {
						tokenizer = new StringTokenizer(reader.readLine());
					} catch (IOException e) {
						throw new RuntimeException(e);
					}
				}
				return tokenizer.nextToken();
			}
			public long nextLong() {
				return Long.parseLong(next());
			}
			public int nextInt() {
				return Integer.parseInt(next());
			}
		}
	} 