#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7, euler = 1e9 + 6, inv = 333333336, MAX = 1e5;
inline long long read() {
  long long num = 0, fx = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') fx = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    num = num * 10 + ch - '0';
    ch = getchar();
  }
  return num * fx;
}
long long a[MAX + 5];
inline long long power(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
    b >>= 1;
  }
  return res;
}
inline void solve(int k, int tag) {
  long long n = 1;
  for (register int i = 1; i <= k; i++) n = a[i] % euler * n % euler;
  n = ((n - 1) % euler + euler) % euler;
  if (n == 0) n = euler;
  long long down = power(2, n), up = (down + tag) * inv % mod;
  printf("%lld/%lld\n", up, down);
}
int main(int argc, char *argv[]) {
  int k;
  while (~scanf("%d", &k)) {
    int tag = -1, flag = false;
    for (register int i = 1; i <= k; i++) {
      a[i] = read();
      if (a[i] % 2 == 0) tag = 1;
    }
    long long n = 1;
    for (register int i = 1; i <= k; i++) {
      if (n > (mod + 10) / a[i]) {
        solve(k, tag);
        flag = true;
        break;
      }
      n *= a[i];
    }
    if (flag) continue;
    if (n == 1) {
      puts("0/1");
      continue;
    }
    long long down = power(2, n - 1), up = (down + tag) * inv % mod;
    printf("%lld/%lld\n", up, down);
  }
  return 0;
}
