#include <bits/stdc++.h>
using namespace std;
const int nmax = 100000, mod = 1000000007;
int n, a, fact[nmax], ans = 1;
map<int, int> f;
int pw(int n, int p) {
  if (!p) return 1;
  if (p % 2) return (1LL * n * pw(n, p - 1)) % mod;
  int x = pw(n, p / 2);
  return (1LL * x * x) % mod;
}
int comb(int n, int k) {
  int a = fact[n], b = (1LL * fact[k] * fact[n - k]) % mod;
  return (1LL * a * pw(b, mod - 2)) % mod;
}
int main() {
  fact[0] = 1;
  for (int i = 1; i < nmax; ++i) fact[i] = (1LL * fact[i - 1] * i) % mod;
  scanf("%i", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%i", &a);
    int tmp = a;
    for (int j = 2; 1LL * j * j <= 1LL * tmp; ++j)
      if (tmp % j == 0) {
        int exp = 0;
        while (tmp % j == 0) tmp /= j, exp++;
        f[j] += exp;
      }
    if (tmp > 1) f[tmp]++;
  }
  for (map<int, int>::iterator it = f.begin(); it != f.end(); ++it)
    ans = (1LL * ans * comb(it->second + n - 1, n - 1)) % mod;
  printf("%i\n", ans);
}
