#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
typedef long long  LL; 
const int MAXN=300;
LL b,a[MAXN],c;
int n,m; 
LL gcd(LL a,LL b){
	if (!b) return a;
	else return gcd(b,a%b); 
} 
int main()
{
	while (cin>>n,n){

		m=0;c=-1; 
		for (int i=0;i<n*(n+1)/2;i++){
			cin>>b; 
			if (b%2==0) a[m++]=b;	
			else{
				if (c==-1) c=b;
				else if (b<c) c=b; 
			}			
		} 
		LL t; 
		sort(a,a+m);
	
			LL u=a[0]/gcd(a[0],c);
			c/=gcd(a[0],c); 
			LL v=a[1]/c;
			t=(LL)(sqrt(u*v)); 
	
		for (int i=0;i<m;i++){
			a[i]/=t;	
		} 
		cout<<t<<'\n';

		for (int i=0;i<m-1;i++)cout<<a[i]<<" ";
		cout<<a[m-1]<<'\n'; 
	} 
	return 0; 
} 
### Prompt

Please create a solution in cpp to the following 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.

Example

Input

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


Output

2
3 5 7
6
5 7

### Response

```cpp
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
typedef long long  LL; 
const int MAXN=300;
LL b,a[MAXN],c;
int n,m; 
LL gcd(LL a,LL b){
	if (!b) return a;
	else return gcd(b,a%b); 
} 
int main()
{
	while (cin>>n,n){

		m=0;c=-1; 
		for (int i=0;i<n*(n+1)/2;i++){
			cin>>b; 
			if (b%2==0) a[m++]=b;	
			else{
				if (c==-1) c=b;
				else if (b<c) c=b; 
			}			
		} 
		LL t; 
		sort(a,a+m);
	
			LL u=a[0]/gcd(a[0],c);
			c/=gcd(a[0],c); 
			LL v=a[1]/c;
			t=(LL)(sqrt(u*v)); 
	
		for (int i=0;i<m;i++){
			a[i]/=t;	
		} 
		cout<<t<<'\n';

		for (int i=0;i<m-1;i++)cout<<a[i]<<" ";
		cout<<a[m-1]<<'\n'; 
	} 
	return 0; 
} 
```