#include <bits/stdc++.h>
using namespace std;
long long A[2][2], B[2][2], C[2][2], D[2][2], Z, AA, BB;
void topow(long long x) {
  if (x == 0) return;
  if (x == 1) {
    A[0][0] = D[0][0];
    A[0][1] = D[0][1];
    A[1][0] = D[1][0];
    A[1][1] = D[1][1];
    Z *= BB;
    return;
  }
  topow(x / 2);
  Z *= Z;
  Z %= 1000000007;
  B[0][0] = A[0][0];
  B[0][1] = A[0][1];
  B[1][0] = A[1][0];
  B[1][1] = A[1][1];
  A[0][0] = (B[0][0] * B[0][0] + B[0][1] * B[1][0]) % 1000000007;
  A[0][1] = (B[0][0] * B[0][1] + B[0][1] * B[1][1]) % 1000000007;
  A[1][0] = (B[1][0] * B[0][0] + B[1][1] * B[1][0]) % 1000000007;
  A[1][1] = (B[1][0] * B[0][1] + B[1][1] * B[1][1]) % 1000000007;
  if (x % 2 == 1) {
    B[0][0] = A[0][0];
    B[0][1] = A[0][1];
    B[1][0] = A[1][0];
    B[1][1] = A[1][1];
    A[0][0] = (B[0][0] * D[0][0] + B[0][1] * D[1][0]) % 1000000007;
    A[0][1] = (B[0][0] * D[0][1] + B[0][1] * D[1][1]) % 1000000007;
    A[1][0] = (B[1][0] * D[0][0] + B[1][1] * D[1][0]) % 1000000007;
    A[1][1] = (B[1][0] * D[0][1] + B[1][1] * D[1][1]) % 1000000007;
    Z *= BB;
    Z %= 1000000007;
  }
}
int n, i;
long long x;
int main() {
  cin >> n;
  D[0][0] = 0;
  D[1][0] = 1;
  D[0][1] = 2;
  D[1][1] = 1;
  BB = 2;
  for (i = 1; i <= n; i++) {
    A[1][0] = A[0][1] = 0;
    A[0][0] = A[1][1] = 1;
    Z = 1;
    scanf("%I64d", &x);
    topow(x);
    D[0][0] = A[0][0];
    D[0][1] = A[0][1];
    D[1][0] = A[1][0];
    D[1][1] = A[1][1];
    BB = Z;
  }
  AA = (D[1][1] - D[1][0]);
  if (AA % 2 != 0) AA += 1000000007;
  AA /= 2;
  AA %= 1000000007;
  if (AA < 0) AA += 1000000007;
  if (BB % 2 != 0) BB += 1000000007;
  BB /= 2;
  BB %= 1000000007;
  cout << AA << "/" << BB << endl;
}
