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.util.*; 
    import java.math.*;
    import java.io.*;
    import java.text.DecimalFormat;
    import java.math.BigInteger;
    public class Main{
        //static int d=20;
        static long mod=1000000007 ;
        static HashMap<String,Double> hm=new HashMap<>(); 
        static ArrayList<ArrayList<Integer>> arr;
        static long[][] color;
        static int[] a;
        static int[] vis,num;
        static double val;
        public static void main(String[] args)  throws IOException {
            boolean online =false;
            String fileName = "C-large-practice";
            PrintWriter out;
            if (online) {
                s.init(new FileInputStream(new File(fileName + ".in")));
                 out= new PrintWriter(new FileWriter(fileName + "out.txt"));
            }
             else {
                s.init(System.in);   
            
                out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
            }
            ArrayList<Integer> arr=new ArrayList<>();
            int n=s.ni();
            for(int i=1;i*i<=n;i++){
                if(n%i==0){
                    arr.add(i);
                    if(i*i!=n)
                        arr.add(n/i);
                }
            }
            Collections.sort(arr);
            long x,y;
            x=y=-1;
            for(int i=0;i<arr.size();i++){
                for(int j=i+1;j<arr.size();j++){
                    long u,v;
                    int f1=arr.get(i);
                    int f2=arr.get(j);
                    u=(n/f1)*1L*(f1+f2);
                    v=(n/f2)*1L*(f1+f2);
                    if(u!=n && u>=1 && u<=1000000000 && v!=n && v>=1 && v<=1000000000 && u!=v){
                        x=u;
                        y=v;
                        break;
                    }

                }
                if(x!=-1)
                    break;


            }
            if(x==-1)
                out.println(-1);
            else
                out.println(n+" "+x+" "+y);
            out.close();

        }
        public static long find(long n,long k){
            if(n==2){
                if(k==1 || k==3)
                    return 1;
                else
                    return 2;
            }
            long t=pow2(2,n)-1;
            long z=(t+1)/2;
            if(k==z)
                return n;
            if(k<z)
                return find(n-1,k);
            else
                return find(n-1,k-z);
        }
        public static long pow2(long a,long b){
                long ans=1;
                while(b>0){
                    if(b%2==1)
                        ans=(a*ans);
                    a=(a*a);
                    b/=2;
                }
                return  ans;
        }
        public static double pow3(double a,long b){
                double ans=1;
                while(b>0){
                    if(b%2==1)
                        ans=(a*ans);
                    a=(a*a);
                    b/=2;
                }
                return  ans;
        }

         static class name implements Comparable<name> {
            int id,p,g;
            public name(int  x,int y,int z){
                id=x;
                p=y;
                g=z;
            }
            public int compareTo(name o){
               
                    return id-o.id;
            }
        }
        public static class s {
            static BufferedReader reader;
            static StringTokenizer tokenizer;
        
            /** call this method to initialize reader for InputStream */
            static void init(InputStream input) {
                reader = new BufferedReader(
                            new InputStreamReader(input) );
                tokenizer = new StringTokenizer("");
            }   
        
            /** get next word */
            static String ns() throws IOException {
                while ( ! tokenizer.hasMoreTokens() ) {
                    //TODO add check for eof if necessary
                    tokenizer = new StringTokenizer(
                        reader.readLine() );
                }
                return tokenizer.nextToken();
            }
        
            static int ni() throws IOException {
                return Integer.parseInt( ns() );
            }
        
            static double nd() throws IOException {
                return Double.parseDouble( ns() );
            }
            static long nl() throws IOException {
                return Long.parseLong( ns() );
            }
            
        }
    }   