RT
#include <bits/stdc++.h>
#pragma GCC optimize(3)
#define int long long
#define ri register
#define mk make_pair
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define is insert
#define es erase
using namespace std; const int N=200010;
inline int read()
{
int s=0, w=1; ri char ch=getchar();
while(ch<'0'||ch>'9') { if(ch=='-') w=-1; ch=getchar(); }
while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+(ch^48), ch=getchar();
return s*w;
}
int n,a[N];
signed main()
{
n=read();
for(ri int i=1;i<=n;i++) a[i]=read();
if(a[n]!=2) return puts("-1")&0;
int L=2, R=3;
for(ri int i=n-1;i;i--)
{
if(L>R) return puts("-1")&0;
int l,r;
l=0, r=1e9;
int p1=-1,p2=-1;
while(l<=r)
{
int mid=(l+r)/2;
if(mid*a[i]>=L) p1=mid, r=mid-1;
else l=mid+1;
}
l=0, r=1e9;
while(l<=r)
{
int mid=(l+r)/2;
if(mid*a[i]<=R) p2=mid, l=mid+1;
else r=mid-1;
}
L=p1*a[i], R=p2*a[i]+a[i]-1;
//printf("%lld %lld\n",L,R);
}
if(L>R) puts("-1");
else printf("%lld %lld\n",L,R);
return 0;
}