#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9 + 5;
const int nax = 1e6 + 5;
const int mod = 1e9 + 7;
struct T {
  int t[2][2];
  T operator*(const T& other) const {
    T nowy;
    for (int a = (0); a <= ((2) - 1); ++a)
      for (int b = (0); b <= ((2) - 1); ++b) nowy.t[a][b] = 0;
    for (int a = (0); a <= ((2) - 1); ++a)
      for (int b = (0); b <= ((2) - 1); ++b)
        for (int c = (0); c <= ((2) - 1); ++c)
          nowy.t[a][c] =
              (nowy.t[a][c] + (long long)t[a][b] * other.t[b][c]) % mod;
    return nowy;
  }
};
int main() {
  int n;
  scanf("%d", &n);
  T ans;
  ans.t[0][0] = 0;
  ans.t[0][1] = 2;
  ans.t[1][0] = 1;
  ans.t[1][1] = 1;
  int two = 2;
  while (n--) {
    long long x;
    scanf("%lld", &x);
    T m;
    m.t[0][0] = m.t[1][1] = 1;
    m.t[0][1] = m.t[1][0] = 0;
    int m2 = 1;
    while (x) {
      if (x % 2) {
        m = m * ans;
        m2 = (long long)m2 * two % mod;
      }
      ans = ans * ans;
      two = (long long)two * two % mod;
      x /= 2;
    }
    ans = m;
    two = m2;
  }
  const long long inv = 500000004;
  printf("%lld/%lld\n", ans.t[0][0] * inv % mod, two * inv % mod);
  return 0;
}
