#include <bits/stdc++.h>   using namespace std;   const int M = 200001;   const long long int MOD = 1000000007;   long long int N = 1, c[M], i, j, N2, m;   bool flag;   int main() {     cin >> m;     fill(c, c + M, 1);     while (m--) {       int p;       cin >> p;       c[p]++;       N *= p, N %= MOD;     }     for (i = 1; i < M; i++)       if (c[i] % 2 == 0 && !flag) {         c[i] /= 2, flag = true;         break;       }     if (!flag) {       N = 1;       for (i = 1; i < M; i++)         for (j = 1; j * 2 < c[i]; j++) N *= i, N %= MOD;     }     for (i = 1; i < M; i++) {       N2 = N;       for (j = 1; j < c[i]; j++) N *= N2, N %= MOD;     }     cout << N << endl;   }   