// Codeforces Round #199 (Div. 2) A Xenia and Divisors
import java.io.*;
import java.math.*;
import java.util.*;
//Codeforces
public class MainCodeforces1 {
	private static MyScanner in;
	private static PrintStream out;
	private static boolean LOCAL_TEST = false;
	private static void solve() throws IOException
	{
		int n = in.nextInt();
		int[] x = new int[n];
		for (int i = 0; i < x.length; i++) {
			x[i] = in.nextInt();
		}
		Arrays.sort(x);
		int group = n / 3;
		for (int i = 0; i < group; i++) {
			int a = x[i];
			int b = x[i + group];
			int c = x[i + group + group];
			if (a < b && b < c && b % a == 0 && c % b == 0)
				continue;
			else {
				out.println(-1);
				return;
			}
		}
		for (int i = 0; i < group; i++) {
			int a = x[i];
			int b = x[i + group];
			int c = x[i + group + group];
			{
				out.print(a + " ");
				out.print(b + " ");
				out.println(c);
			}
		}
	}
	public static void main(String[] args) throws IOException {
		// helpers for input/output
		out = System.out;
		try {
			String cname = System.getenv("COMPUTERNAME");
			if (!cname.equals(""))
				LOCAL_TEST = true;
		} catch (Exception e) {
		}
		if (LOCAL_TEST) {
			in = new MyScanner("E:\\zin.txt");
		}
		else {
			boolean usingFileForIO = false;
			if (usingFileForIO) {
				// using input.txt and output.txt as I/O
				in = new MyScanner("input.txt");
				out = new PrintStream("output.txt");
			}
			else {
				in = new MyScanner();
				out = System.out;
			}
		}
		solve();
	}
	// =====================================
	static class MyScanner {
		BufferedReader bufReader;
		StringTokenizer strTok;
		public MyScanner() throws IOException
		{
			bufReader = new BufferedReader(new InputStreamReader(System.in));
			strTok = new StringTokenizer("");
		}
		public MyScanner(String inputFile) throws IOException {
			bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(
					inputFile)));
			strTok = new StringTokenizer("");
		}
		String GetNextToken() throws IOException {
			if (!strTok.hasMoreTokens())
				strTok = new StringTokenizer(bufReader.readLine());
			return strTok.nextToken();
		}
		public int nextInt() throws IOException {
			return Integer.valueOf(GetNextToken());
		}
		public long nextLong() throws IOException {
			return Long.valueOf(GetNextToken());
		}
		public double nextDouble() throws IOException {
			return Double.valueOf(GetNextToken());
		}
		public String nextString() throws IOException {
			return GetNextToken();
		}
		public String nextLine() throws IOException {
			return bufReader.readLine();
		}
		public int countTokens() {
			return strTok.countTokens();
		}
		public boolean hasMoreTokens() {
			return strTok.hasMoreTokens();
		}
	}
}
No comments:
Post a Comment