#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
typedef long long lli;

const int MAXN = 250;
const int MAXM = MAXN*(MAXN+1)/2;
int N, M;
lli B[MAXM];

lli gcd(lli a, lli b) {
  return b == 0 ? a : gcd(b, a%b);
}

int main() {
  while(cin >> N && N) {
    M = N*(N+1)/2;
    for(int i = 0; i < M; ++i) {
      cin >> B[i];
    }
    vector<lli> even, odd;
    for(int i = 0; i < M; ++i) {
      if(B[i] % 2 == 0) even.push_back(B[i]);
      else odd.push_back(B[i]);
    }
    sort(even.begin(), even.end());
    sort(odd.begin(), odd.end());
    lli c1 = odd[0];
    lli c2 = even[0];
    lli c3 = even[1];
    {
      lli tmp = gcd(c1, c2);
      c1 /= tmp;
      c2 /= tmp;
    }
    {
      lli tmp = gcd(c1, c3);
      c1 /= tmp;
      c3 /= tmp;
    }
    lli a0 = sqrt(c2*c3);
    cout << a0 << endl;
    for(int i = 0; i < even.size(); ++i) {
      if(i) cout << " ";
      cout << even[i]/a0;
    }
    cout << endl;
  }  
  return 0;
}
### Prompt

Please formulate 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 <algorithm>
#include <vector>
#include <cmath>
using namespace std;
typedef long long lli;

const int MAXN = 250;
const int MAXM = MAXN*(MAXN+1)/2;
int N, M;
lli B[MAXM];

lli gcd(lli a, lli b) {
  return b == 0 ? a : gcd(b, a%b);
}

int main() {
  while(cin >> N && N) {
    M = N*(N+1)/2;
    for(int i = 0; i < M; ++i) {
      cin >> B[i];
    }
    vector<lli> even, odd;
    for(int i = 0; i < M; ++i) {
      if(B[i] % 2 == 0) even.push_back(B[i]);
      else odd.push_back(B[i]);
    }
    sort(even.begin(), even.end());
    sort(odd.begin(), odd.end());
    lli c1 = odd[0];
    lli c2 = even[0];
    lli c3 = even[1];
    {
      lli tmp = gcd(c1, c2);
      c1 /= tmp;
      c2 /= tmp;
    }
    {
      lli tmp = gcd(c1, c3);
      c1 /= tmp;
      c3 /= tmp;
    }
    lli a0 = sqrt(c2*c3);
    cout << a0 << endl;
    for(int i = 0; i < even.size(); ++i) {
      if(i) cout << " ";
      cout << even[i]/a0;
    }
    cout << endl;
  }  
  return 0;
}
```