/*
TASK: abc
lANG: C++
*/

#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>

using namespace std;

char pw4[25][20] = {"1\0", "4\0", "16\0", "64\0", "256\0", "1024\0", "4096\0", "16384\0", "65536\0", "262144\0", "1048576\0", "4194304\0", "16777216\0", "67108864\0", "268435456\0", "1073741824\0", "4294967296\0", "17179869184\0", "68719476736\0", "274877906944\0", "1099511627776"};
char pw2[45][20] = {"1\0", "2\0", "4\0", "8\0", "16\0", "32\0", "64\0", "128\0", "256\0", "512\0", "1024\0", "2048\0", "4096\0", "8192\0", "16384\0", "32768\0", "65536\0", "131072\0", "262144\0", "524288\0", "1048576\0", "2097152\0", "4194304\0", "8388608\0", "16777216\0", "33554432\0", "67108864\0", "134217728\0", "268435456\0", "536870912\0", "1073741824\0", "2147483648\0", "4294967296\0", "8589934592\0", "17179869184\0", "34359738368\0", "68719476736\0", "137438953472\0", "274877906944\0", "549755813888\0", "1099511627776"};
string a[1000];
string b[1000];

int n, maxs, sn;

void add (char *a, char *b, char* t) {
    int p[20] = {0}, q[20] = {0}, s[20] = {0};
    int i;
    int lena = 0, lenb = 0;
    lena = strlen(a);
    lenb = strlen(b);
    if (lena < lenb) {
        char m[20];
        strcpy(m, a);
        strcpy(a, b);
        strcpy(b, m);
    }
    for (i = lena - 1; i >= 0; i --) {
        p[i] = a[lena - 1 - i] - 48;
    }
    for (i = lenb - 1; i >= 0; i --) {
        q[i] = b[lenb - 1 - i] - 48;
    }
    int c = 0;
    int len = lena;
    for (i = 0; i < lena; i ++) {
        s[i] = p[i] + q[i] + c;
        c = s[i] / 10;
        s[i] %= 10;
    }
    if (c > 0) {
        if (lenb == lena) len++;
        s[i] += c;
    }
    t[len] = '\0';
    for (i = 0; i < len; i ++) {
        t[len - i - 1] = s[i] + 48;
    }
}

void del (char *a, char *t) {
    int i = 0, j = 0;
    int d = 0;
    if (a[0] == '1') {
        i = 1;
        d = 10;
    }
    for (; a[i] != '\0'; i ++) {
        d += a[i] - 48;
        t[j ++] = d / 2 + 48;
        d %= 2;
        d *= 10;
    }
    t[j] = '\0';
}

int main () {
    int i, j, f = 0;
    cin >> n;
    for (i = 0; i < n; i ++) {
        cin >> a[i];
    }
    sort (a, a + n);
    b[sn++] = a[0];
    maxs = a[0].size();
    for (i = 1; i < n; i ++) {
        f = 0;
        if (a[i].size() > maxs) maxs = a[i].size();
        if (a[i].size() >= b[sn - 1].size()) {
            int k = 0;
            while (b[sn - 1][k] == a[i][k]) {
                if (++ k == b[sn - 1].size()) {
                    f = 1;
                    break;
                }
            }
        }
        if (f == 0) b[sn++] = a[i];
    }
    char t[25];
    strcpy (t, pw4[maxs - b[0].size()]);
    for (i = 1; i < sn; i ++) {
        add(t, pw4[maxs - b[i].size()], t);
    }
    int ind = maxs * 2;
    while ((t[strlen(t) - 1] - 48) % 2 == 0) {
        del(t, t);
        ind --;
    }
    for (i = 0; t[i] != '\0'; i ++) cout << t[i];
    cout << " ";
    for (i = 0; pw2[ind][i] != '\0'; i ++) cout << pw2[ind][i];
    cout << endl;
    return 0;
}
