#include<iostream>
#include<vector>
#include<string>
#include<algorithm>	
#include<map>
#include<set>
#include<utility>
#include<cmath>
#include<cstring>
#include<queue>
#include<stack>
#include<cstdio>
#include<sstream>
#include<iomanip>
#define loop(i,a,b) for(int i=a;i<b;i++) 
#define rep(i,a) loop(i,0,a)
#define pb push_back
#define mp make_pair
#define all(in) in.begin(),in.end()
#define shosu(x) fixed<<setprecision(x)
using namespace std;
//kaewasuretyuui
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef vector<pii> vp;
typedef vector<vp> vvp;
typedef vector<string> vs;
typedef vector<double> vd;
typedef pair<int,pii> pip;
typedef vector<pip>vip;
const double PI=acos(-1);
const double EPS=1e-8;
const int inf=1e8;
ll gcd(ll a,ll b){
	return (b==0?a:gcd(b,a%b));
}
int main(){
	int n;
	while(cin>>n,n){
		int N=n*(n+1)/2;
		vi odd,even,in(N);
		rep(i,N){
			cin>>in[i];
			if(in[i]%2)odd.pb(in[i]);
			else even.pb(in[i]);
		}
		sort(all(odd));
		sort(all(even));
		ll a=gcd(even[0],odd[0]);
		ll x=(long long)sqrt(even[0]/a*(even[1]/(odd[0]/a)));
		cout<<x<<endl;
		int cnt=0;
		rep(i,even.size()){
			if(cnt)cout<<" ";
			cout<<even[i]/x;
			cnt++;
		}
		cout<<endl;
	}
}
### Prompt

Your challenge is to write a cpp solution 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<iostream>
#include<vector>
#include<string>
#include<algorithm>	
#include<map>
#include<set>
#include<utility>
#include<cmath>
#include<cstring>
#include<queue>
#include<stack>
#include<cstdio>
#include<sstream>
#include<iomanip>
#define loop(i,a,b) for(int i=a;i<b;i++) 
#define rep(i,a) loop(i,0,a)
#define pb push_back
#define mp make_pair
#define all(in) in.begin(),in.end()
#define shosu(x) fixed<<setprecision(x)
using namespace std;
//kaewasuretyuui
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef vector<pii> vp;
typedef vector<vp> vvp;
typedef vector<string> vs;
typedef vector<double> vd;
typedef pair<int,pii> pip;
typedef vector<pip>vip;
const double PI=acos(-1);
const double EPS=1e-8;
const int inf=1e8;
ll gcd(ll a,ll b){
	return (b==0?a:gcd(b,a%b));
}
int main(){
	int n;
	while(cin>>n,n){
		int N=n*(n+1)/2;
		vi odd,even,in(N);
		rep(i,N){
			cin>>in[i];
			if(in[i]%2)odd.pb(in[i]);
			else even.pb(in[i]);
		}
		sort(all(odd));
		sort(all(even));
		ll a=gcd(even[0],odd[0]);
		ll x=(long long)sqrt(even[0]/a*(even[1]/(odd[0]/a)));
		cout<<x<<endl;
		int cnt=0;
		rep(i,even.size()){
			if(cnt)cout<<" ";
			cout<<even[i]/x;
			cnt++;
		}
		cout<<endl;
	}
}
```