#include <bits/stdc++.h>
using namespace std;
template <class T1, class T2>
inline istream& operator>>(istream& fin, pair<T1, T2>& pr) {
  fin >> pr.first >> pr.second;
  return fin;
}
template <class T0, class T1, class T2>
inline istream& operator>>(istream& fin, tuple<T0, T1, T2>& t) {
  fin >> get<0>(t) >> get<1>(t) >> get<2>(t);
  return fin;
}
template <class T>
inline istream& operator>>(istream& fin, vector<T>& a) {
  for (auto& u : a) fin >> u;
  return fin;
}
template <class T, size_t n>
inline istream& operator>>(istream& fin, array<T, n>& a) {
  for (auto& u : a) fin >> u;
  return fin;
}
template <class FwdIter>
inline auto dump(FwdIter first, FwdIter last, const char* dlm = " ") -> void {
  copy(first, last,
       ostream_iterator<typename iterator_traits<FwdIter>::value_type>(cout,
                                                                       dlm));
}
template <typename T>
vector<T>& operator--(vector<T>& a) {
  for (auto& i : a) --i;
  return a;
}
inline int64_t powmod(int64_t a, int64_t n, const int64_t mod) {
  if (a == 1 || !n) return mod != 1 ? 1 : 0;
  int64_t out = 1;
  for (; n; n >>= 1) {
    if (n & 1) out = out * a % mod;
    a = a * a % mod;
  }
  return out;
}
void c696() {
  const int64_t mod = 1000000007;
  const int64_t i6 = 166666668;
  size_t n;
  cin >> n;
  vector<int64_t> xs(n);
  cin >> xs;
  int64_t k = 2;
  bool odd = true;
  for (const auto x : xs) {
    k = powmod(k, x, mod) % mod;
    odd = odd && (x & 1);
  };
  const int64_t denom = k * 3 % mod * i6 % mod;
  const int64_t num = (k + mod + (odd ? -2 : 2)) % mod * i6 % mod;
  cout << num << '/' << denom;
}
int main(const int argc, char* argv[]) {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  c696();
  return EXIT_SUCCESS;
}
