#include<stdio.h>
#include<string.h>
#include<iostream>
#include<string>
#include<algorithm>
#include<stdlib.h>
#include<math.h>
#include<cmath>
#include<cstdlib>
#include<stack>
#include<map>
#include<queue>
#include<iterator>
#include<set>
#include<vector>
using namespace std;
#define  M 100050
#define LL long long
#define Max 260 * 260
LL a[Max], b[Max], c[Max], ans[Max];

LL gcd(LL a,LL b){
	return b?gcd(b,a%b):a;
}

int main ()
{
	int n, i, j, k;
	LL len;
	while (scanf ("%d", &n) == 1)
	{
		if (n == 0) break;
		j = 0; k = 0;
		for (i = 0;i < (n + 1) * n / 2;i ++)
		{
			scanf ("%lld", &a[i]);
			if (a[i] % 2 == 0)
				b[j ++] = a[i];
			else c[k ++] = a[i];
		}

		sort (b, b + j);
		sort (c, c + k);

		LL temp = (LL)(sqrt ((b[0]*1.0) / c[0] * (b[1]*1.0)) + 0.001);

		printf ("%lld\n", temp);
		printf ("%lld", b[0] / temp);
		for (i = 1;i < n;i ++)
			printf (" %lld", b[i] / temp);
		printf ("\n");
	}
}
### Prompt

Generate 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<stdio.h>
#include<string.h>
#include<iostream>
#include<string>
#include<algorithm>
#include<stdlib.h>
#include<math.h>
#include<cmath>
#include<cstdlib>
#include<stack>
#include<map>
#include<queue>
#include<iterator>
#include<set>
#include<vector>
using namespace std;
#define  M 100050
#define LL long long
#define Max 260 * 260
LL a[Max], b[Max], c[Max], ans[Max];

LL gcd(LL a,LL b){
	return b?gcd(b,a%b):a;
}

int main ()
{
	int n, i, j, k;
	LL len;
	while (scanf ("%d", &n) == 1)
	{
		if (n == 0) break;
		j = 0; k = 0;
		for (i = 0;i < (n + 1) * n / 2;i ++)
		{
			scanf ("%lld", &a[i]);
			if (a[i] % 2 == 0)
				b[j ++] = a[i];
			else c[k ++] = a[i];
		}

		sort (b, b + j);
		sort (c, c + k);

		LL temp = (LL)(sqrt ((b[0]*1.0) / c[0] * (b[1]*1.0)) + 0.001);

		printf ("%lld\n", temp);
		printf ("%lld", b[0] / temp);
		for (i = 1;i < n;i ++)
			printf (" %lld", b[i] / temp);
		printf ("\n");
	}
}
```