#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stack>
#include <map>
#include <queue>
#include <cmath>
using namespace std;

int arr[100000];  //数组开大点,不然会栈溢出或者越界

int gcd(int a, int b) {
    if (a == 0) {
        return b;
    }
    if (b == 0) {
        return a;
    }
    return gcd(b, a % b);
}

int main() {
    int n;
    while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case
        int maxnum, minnum; //最大值,最小值
        for (int i = 0; i < n; i++) {
            if (i == 0) {
                scanf("%d", &arr[i]);
                maxnum = arr[i];
                minnum = arr[i];
            } else {
                scanf("%d", &arr[i]);
                maxnum = maxnum > arr[i] ? maxnum : arr[i];
                minnum = minnum < arr[i] ? minnum : arr[i];
            }
        }
        int t = gcd(maxnum, minnum);

        printf("%d %d %d\n", minnum, maxnum, t);

    }
}
// 64 位输出请用 printf("%lld")