#include <bits/stdc++.h>
const int delta = 1000000007;
using namespace std;
vector<vector<long long> > mult(vector<vector<long long> > a,
                                vector<vector<long long> > b) {
  vector<vector<long long> > c;
  for (int i = 0; i < int(a.size()); i++) {
    c.push_back({});
    for (int j = 0; j < (b[0].size()); j++) {
      c[i].push_back(0);
      for (int k = 0; k < b.size(); k++) {
        c[i][j] += ((a[i][k] % delta) * (b[k][j] % delta) + delta) % delta;
        c[i][j] %= delta;
      }
    }
  }
  return c;
}
vector<vector<long long> > mpow(vector<vector<long long> > a, long long y) {
  if (y == 0) {
    vector<vector<long long> > b;
    for (int i = 0; i < a.size(); i++) {
      b.push_back({});
      for (int j = 0; j < a.size(); j++) {
        if (i != j)
          b[i].push_back(0);
        else
          b[i].push_back(1);
      }
    }
    return b;
  }
  if (y == 1) return a;
  auto ans = mpow(a, y / 2);
  ans = mult(ans, ans);
  if (y & 1) ans = mult(ans, a);
  return ans;
}
int main() {
  vector<vector<long long> > a = {{0}, {1}};
  vector<vector<long long> > b = {{-1, 1}, {0, 2}};
  long long n, k, pw = 1;
  cin >> k;
  for (int i = 0; i < k; i++) {
    cin >> n;
    if ((pw * n) % (delta - 1) == 0)
      pw = delta - 1;
    else
      pw = (n % (delta - 1) * pw) % (delta - 1);
  }
  b = mpow(b, pw - 1);
  a = mult(b, a);
  cout << a[0][0] % delta << '/' << a[1][0] % delta;
}
