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 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		for(;;){
			int n = sc.nextInt();
			if(n==0)break;
			long[] e = new long[n];
			long[] o = new long[n*(n-1)/2];
			for(int i=0;i<n;i++){
				e[i]=sc.nextLong();
			}
			for(int i=0;i<o.length;i++){
				o[i]=sc.nextLong();
			}
			Arrays.sort(e);
			Arrays.sort(o);
			if(o[0]==0){
//				System.out.println("jpoirwajtpoia");
//				continue;
			}
			
			BigInteger bi=new BigInteger(""+e[0]);
			bi=bi.multiply(new BigInteger(""+e[1]));
			bi=bi.divide(new BigInteger(""+o[0]));
			long E = (long)Math.sqrt(Long.parseLong(bi.toString())); 
//			long E = (long)Math.sqrt((e[0]*e[1])/o[0]);
			System.out.println(E);
			for(int i=0;i<e.length;i++){
				if(E==0){
//					System.out.println("jpoirwajtpoia");
//					break;
				}
				System.out.print(e[i]/E);
				if(i!=e.length-1)System.out.print(" ");
			}
			System.out.println();
		}
	}
}