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.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

	static class Task {

		private Scanner scanner = new Scanner(System.in);

		public void solve(InputReader in, PrintWriter out) {

			int n = in.nextInt();
			int ans1, ans2, ans3;

			ans1 = n;
			ans2 = n + 1;
			ans3 = ans1 * ans2;

			if (ans3 > 1000000000 || checkOutput(ans1,ans2,ans3)) {
				System.out.println("-1");
			} else {
				System.out.println(ans1 + " " + ans2 + " " + ans3);
			}
		}

		private boolean checkOutput(int ans1, int ans2, int ans3) {
			if(ans1 == ans2 || ans2 ==ans3 || ans3==ans1){
				return true;
			}
			return false;
		}

	}

	public static long binarySearch(long turn, long position) {

		long turnReminder = turn;
		long size = 1;
		for (int i = 1; i <= turn; i++) {
			size = size * 2;
		}
		size--;
		// System.out.println(size);

		long low = 1;
		long high = size;
		long middle = (low + high) / 2;

		while (high != low) {

			middle = (low + high) / 2;
			if (middle + middle != low + high) {
				middle++;
			}

			// System.out.println(low + " " + middle + " " + high);

			if (middle == position) {
				return turnReminder;
			}

			if (middle < position) {
				low = middle + 1;
			}
			if (middle > position) {
				high = middle - 1;
			}
			turnReminder--;
		}
		return turnReminder;
	}

	public static void main(String[] args) {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		InputReader in = new InputReader(inputStream);
		PrintWriter out = new PrintWriter(outputStream);
		Task solver = new Task();
		solver.solve(in, out);
		out.close();
	}

	static class InputReader {
		public BufferedReader reader;
		public StringTokenizer tokenizer;

		public InputReader(InputStream stream) {
			reader = new BufferedReader(new InputStreamReader(stream), 32768);
			tokenizer = null;
		}

		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 int nextInt() {
			return Integer.parseInt(next());
		}

		public double nextDouble() {
			return Double.parseDouble(next());
		}

		public boolean hasNext() {
			return tokenizer.hasMoreElements();
		}

		public long nextLong() {
			return Long.parseLong(next());
		}

		public String nextLine() {
			String str = null;
			try {
				str = reader.readLine();
			} catch (Exception e) {
			}
			return str;
		}
	}

}