#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MOD = 998244353;
const int SIEVEN = 2123456;
const ll MAXA = 2.e18;
int lp[SIEVEN + 1];
ll ps[SIEVEN];
int nps;
void sieve() {
  memset(lp, 0, sizeof(lp));
  nps = 0;
  for (int i = 2; i <= SIEVEN; i++) {
    if (not lp[i]) lp[i] = ps[nps++] = i;
    for (int j = 0; j < nps and ps[j] <= lp[i] and i * ps[j] <= SIEVEN; j++)
      lp[i * ps[j]] = ps[j];
  }
}
map<ll, pair<ll, ll>> table;
ll sq(ll x) {
  ll lb = 1;
  ll ub = 2.e9;
  while (lb <= ub) {
    ll mid = (ub - lb) / 2ll + lb;
    ll t = mid * mid;
    if (t < x) {
      lb = mid + 1;
    } else if (t > x) {
      ub = mid - 1;
    } else {
      return mid;
    }
  }
  return -1;
};
pair<ll, ll> fact(ll x) {
  if (table.count(x)) return table[x];
  ll q = sq(x);
  if (q == -1) return {-1, -1};
  table[x] = {q, 2ll};
  return {q, 2ll};
}
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
int main() {
  ios::sync_with_stdio(false);
  sieve();
  for (int i = 0; i < nps; i++) {
    ll p2 = ps[i] * ps[i];
    table[p2] = {ps[i], 2ll};
    ll p3 = p2 * ps[i];
    table[p3] = {ps[i], 3ll};
    if (p3 <= MAXA / ps[i]) {
      ll p4 = p3 * ps[i];
      table[p4] = {ps[i], 4};
    }
  }
  int n;
  cin >> n;
  map<ll, ll> p2e;
  vector<ll> hard;
  map<ll, ll> super;
  for (int i = 0; i < n; i++) {
    ll a;
    cin >> a;
    auto r = fact(a);
    if (r.first != -1) {
      p2e[r.first] += r.second;
    } else {
      hard.push_back(a);
    }
  }
  for (ll a : hard) {
    bool done = false;
    for (auto e : p2e) {
      if (a % e.first == 0) {
        ll q = a / e.first;
        p2e[e.first]++;
        p2e[q]++;
        done = true;
        break;
      }
    }
    if (done) continue;
    for (ll b : hard) {
      if (a == b) continue;
      ll p = gcd(a, b);
      if (p > 1) {
        ll q = a / p;
        p2e[p]++;
        p2e[q]++;
        done = true;
        break;
      }
    }
    if (done) continue;
    super[a]++;
  }
  ll ans = 1ll;
  for (auto e : p2e) {
    ans = (ans * (e.second + 1)) % MOD;
  }
  for (auto e : super) {
    ans = (ans * (e.second + 1)) % MOD;
    ans = (ans * (e.second + 1)) % MOD;
  }
  cout << ans << endl;
}
