#include <bits/stdc++.h>
using namespace std;
const long long N = 100100;
const long long Mod1 = 1e9 + 7;
const long long Mod2 = Mod1 - 1;
long long a[N];
long long add(long long x, long long y, long long Mod) {
  x %= Mod;
  y %= Mod;
  return (x + y) % Mod;
}
long long sub(long long x, long long y, long long Mod) {
  x %= Mod;
  y %= Mod;
  return (x - y + Mod) % Mod;
}
long long mul(long long x, long long y, long long Mod) {
  x %= Mod;
  y %= Mod;
  return x * y % Mod;
}
void add_self(long long& x, long long y, long long Mod) { x = add(x, y, Mod); }
void sub_self(long long& x, long long y, long long Mod) { x = sub(x, y, Mod); }
void mul_self(long long& x, long long y, long long Mod) { x = mul(x, y, Mod); }
long long fp(long long x, long long y, long long Mod) {
  if (!y) return 1;
  if (y & 1) return mul(x, fp(x, y - 1, Mod), Mod);
  return fp(mul(x, x, Mod), y >> 1, Mod);
}
long long inv(long long y, long long Mod) { return fp(y, Mod - 2, Mod); }
long long inv(long long x, long long y, long long Mod) {
  return mul(x, inv(y, Mod), Mod);
}
vector<vector<long long> > Zero(long long n, long long m) {
  return vector<vector<long long> >(n, vector<long long>(m, 0));
}
vector<vector<long long> > Ident(long long n) {
  vector<vector<long long> > Res = Zero(n, n);
  for (long long i = 0; i < n; i++) Res[i][i] = 1;
  return Res;
}
vector<vector<long long> > Multy(const vector<vector<long long> >& A,
                                 const vector<vector<long long> >& B) {
  assert(A[0].size() == B.size());
  vector<vector<long long> > Res = Zero(A.size(), B[0].size());
  for (long long i = 0; i < A.size(); i++)
    for (long long k = 0; k < A[0].size(); k++)
      if (A[i][k])
        for (long long j = 0; j < B[0].size(); j++)
          add_self(Res[i][j], mul(A[i][k], B[k][j], Mod1), Mod1);
  return Res;
}
vector<vector<long long> > Power(const vector<vector<long long> >& A,
                                 long long k) {
  if (!k) return Ident(A.size());
  if (k & 1) return Multy(A, Power(A, k - 1));
  return Power(Multy(A, A), k >> 1);
}
long long Get(long long k) {
  vector<vector<long long> > Init = Zero(1, 3);
  Init[0][1] = 1;
  vector<vector<long long> > Trans = Zero(3, 3);
  for (long long i = 0; i < 3; i++)
    for (long long j = 0; j < 3; j++)
      if (i + j != 2) Trans[i][j] = 1;
  return Multy(Init, Power(Trans, k))[0][1];
}
int main() {
  long long n;
  cin >> n;
  long long k = 1;
  bool ok = false;
  for (long long i = 0; i < n; i++)
    scanf("%I64d", a + i), mul_self(k, a[i], Mod2), ok |= (a[i] > 1);
  if (!ok) return 0 * puts("0/1");
  long long p = Get(k);
  long long q = fp(2, k, Mod1);
  long long GCD = 2;
  mul_self(p, inv(GCD, Mod1), Mod1);
  mul_self(q, inv(GCD, Mod1), Mod1);
  cout << p << "/" << q;
}
