#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;

long long int kansu( long long int x, long long int y ) {

  if ( x < y ) swap( x, y );

  while( y != 0 ) {

    x = x % y;
    swap( x, y );

  }

  return x;

}

int main() {

  long long int input;

  long long int n;

  while( true ) {

    cin >> n;

    if ( n == 0 ) break;

    vector< long long int > x;
    vector< long long int > y;

    for ( int i = 0; i < n * ( n + 1 ) / 2; i++ ) {

      cin >> input;

      if ( input % 2 == 0 ) {

	x.push_back( input );

      }else {

	y.push_back( input );

      }

    }

    sort( x.begin(), x.end() );
    sort( y.begin(), y.end() );

    long long int k = kansu( x[0], y[0] );

    long long int g = (long long int) sqrt( x[0] / k * ( x[1] / ( y[0] / k ) ) );

    cout << g << endl;

    for ( int i = 0; i < n; i++ ) {

      if ( i != 0 ) cout << " ";

      cout << x[i] / g;

    }

    cout << endl;

  }

  return 0;

}
### Prompt

Construct a CPP code solution to the problem outlined:

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 <algorithm>
#include <math.h>
using namespace std;

long long int kansu( long long int x, long long int y ) {

  if ( x < y ) swap( x, y );

  while( y != 0 ) {

    x = x % y;
    swap( x, y );

  }

  return x;

}

int main() {

  long long int input;

  long long int n;

  while( true ) {

    cin >> n;

    if ( n == 0 ) break;

    vector< long long int > x;
    vector< long long int > y;

    for ( int i = 0; i < n * ( n + 1 ) / 2; i++ ) {

      cin >> input;

      if ( input % 2 == 0 ) {

	x.push_back( input );

      }else {

	y.push_back( input );

      }

    }

    sort( x.begin(), x.end() );
    sort( y.begin(), y.end() );

    long long int k = kansu( x[0], y[0] );

    long long int g = (long long int) sqrt( x[0] / k * ( x[1] / ( y[0] / k ) ) );

    cout << g << endl;

    for ( int i = 0; i < n; i++ ) {

      if ( i != 0 ) cout << " ";

      cout << x[i] / g;

    }

    cout << endl;

  }

  return 0;

}
```