/*
TASK: abc
LANG: C++
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int num;
vector <long long> table(22, 1);

class abc
{
public:
string value;
bool cmp(string x) const
{
    int len = min(x.length(), (*this).value.length());
    for (int i=0;i < len;i++)
     if (x[i] != (*this).value[i]) return false;
     
    return true;
}
bool operator<(abc x) const
{ return ((*this).value.length() < x.value.length()); }
} tri[1000];
long long gcd(long long a, long long b)
{ return (0 == b) ? (a) : (gcd(b, a%b)); }

int main()
{
    cin >> num;
    int i, j, l; 
    long long curA = 0, curB = 1;   // curA / curB
    
    int cnt = 1;
    for (i=2;i < 42;i+=2)
     table[cnt++] <<= i;
    
    for (i=0;i < num;i++)
     cin >> tri[i].value;
    
    sort(tri, tri + num);
    
    for (i=0;i < num;i++)
     for (j=i + 1;j < num;j++)
      if (tri[i].cmp(tri[j].value))
       tri[j].value = "";
    
    for (i=0;i < num;i++)
     if (l = tri[i].value.length())
      if (table[l] <= curB)
       curA += curB / table[l];
      else
      {
          curA *= table[l] / curB;
          curA += 1;
          curB = table[l];
      }
    
    //for (i=0;i < num;i++)
    //cout << table[i] << endl;
    
    long long del = gcd(curA, curB);
    curA /= del; 
    curB /= del;
    
    cout << curA << " " << curB << endl;
    //cout << gcd(10, 11) << endl;
    
    //system("pause");
    return 0;
}
