func_code_string: #include <bits/stdc++.h>   int dr[] = {2, 2, -2, -2, 1, -1, 1, -1};   int dc[] = {1, -1, 1, -1, 2, 2, -2, -2};   int dr1[] = {0, 0, 1, 1, 1, -1, -1, -1};   int dc1[] = {1, -1, 1, 0, -1, 0, 1, -1};   int dr2[] = {0, 0, 1, -1};   int dc2[] = {1, -1, 0, 0};   using namespace std;   long long a[100005];   long long bigmod(long long n, long long p) {     if (p == 0) return 1;     long long x = bigmod(n, p / 2);     x = (x * x) % 1000000007;     if (p % 2 == 1) x = (x * n) % 1000000007;     return x;   }   int main() {     long long n, i, j;     while (cin >> n) {       bool f = 0;       for (i = 1; i <= n; i++) {         cin >> a[i];         if (a[i] % 2 == 0) f = 1;       }       if (f == 1) {         long long m = 2;         for (i = 1; i <= n; i++) {           m = bigmod(m, a[i]);         }         m = m * bigmod(2LL, 1000000007 - 2);         m %= 1000000007;         long long m1 = m;         m1 = (m1 + 1) % 1000000007;         m1 = m1 * bigmod(3LL, 1000000007 - 2);         m1 %= 1000000007;         cout << m1 <<  /  << m << endl;       } else {         long long m = 2;         for (i = 1; i <= n; i++) {           m = bigmod(m, a[i]);         }         m = m * bigmod(2LL, 1000000007 - 2);         m %= 1000000007;         long long m1 = m;         m1 = (m1 - 1 + 1000000007) % 1000000007;         m1 = m1 * bigmod(3LL, 1000000007 - 2);         m1 %= 1000000007;         cout << m1 <<  /  << m << endl;       }     }     return 0;   }   