/*
TASK:abc
LANG:C++
*/
#include<iostream>
#include<string>
#include<cmath>
using namespace std;

struct drob
{ int c;int z;};
drob initiate(drob a,drob b)
{ a.c=b.c;
a.z=b.z;
return a;
}
int nod(int a,int b)
{ while(a!=b)
{ if(a>b)a-=b;
else b-=a;
}
return a;
}
       
drob sum(drob a,drob b)
{  drob x;
x.c=(a.c*b.z+b.c*a.z);
x.z=b.z*a.z;
int d=nod(x.c,x.z);
x.c/=d;
x.z/=d; 
return x;
}
int main()
{ string s[1000];
int n;
cin>>n;
drob sc;
sc.c=0;
sc.z=1;
int i;
for(i=1;i<=n;i++)
 cin>>s[i];
for(i=1;i<=n;i++)
{
  double f=s[i].length();
  double p=2;
  drob d;
  d.c=1;
  d.z=pow(p,2*f);
  
  sc.c=sum(sc,d).c;
  sc.z=sum(sc,d).z;
  
}
cout<<sc.c<<' '<<sc.z<<endl;
//system("pause");
}   
