Problem:
Problem H: Squid Multiplication

Squid Eiko loves mathematics.
Especially she loves to think about integer.
One day, Eiko found a math problem from a website.

"A sequence b ={ai + aj | i < j } is generated from a sequence a ={a0 , ... , an | ai is even if i is 0, otherwise ai is odd}. Given the sequence b , find the sequence a ."

This problem is easy for Eiko and she feels boring. So, she made a new problem by modifying this problem .

"A sequence b ={ai *aj | i < j } is generated from a sequence a ={ a0, ... , an | ai is even if i is 0, otherwise ai is odd}. Given the sequence b , find the sequence a ."

Your task is to solve the problem made by Eiko.

Input

Input consists of multiple datasets.

Each dataset is given by following formats.

n
b0 b1 ... bn*(n+1)/2-1

n is the number of odd integers in the sequence a. The range of n is 2 ≤ n ≤ 250.
bi is separated by a space.
Each bi is 1 ≤ bi ≤ 263-1.
The end of the input consists of a single 0.

Output

For each dataset, you should output two lines.
First line contains a0, an even number in the sequence a.
The second line contains n odd elements separated by a space. The odd elements are sorted by increasing order.
You can assume that the result is greater than or equal to 1 and less than or equal to 231-1.

Sample input

3
6 10 14 15 21 35
2
30 42 35
0

Sample output

2
3 5 7
6
5 7

Solution in JAVA (judge verdict: Accepted)

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n;
		long odd[], even[];
		int oid, eid;

		while (true) {
			n = sc.nextInt();
			if (n == 0) {
				break;
			}

			even = new long[n];
			odd = new long[n*(n+1)/2 - n];
			oid = eid = 0;
			for (int i = 0; i < n*(n+1)/2; i++) {
				long k = sc.nextLong();
				if (k % 2 == 0) {
					even[eid++] = k;
				} else {
					odd[oid++] = k;
				}
			}
			Arrays.sort(odd);
			Arrays.sort(even);
			
			BigInteger e0 = new BigInteger(Long.toString(even[0]));
			BigInteger e1 = new BigInteger(Long.toString(even[1]));
			BigInteger o0 = new BigInteger(Long.toString(odd[0]));
			BigInteger e2 = (e0.multiply(e1)).divide(o0);
			long e = (long)Math.sqrt(e2.longValue());
			System.out.println(e);
			String s = "";
			for (int i = 0; i < n; i++) {
				System.out.print(s + even[i] / e);
				s = " ";
			}
			System.out.println();
		}
	}
}