#include <bits/stdc++.h>
long long gcd(long long a, long long b) {
  if (b == 0) {
    return a;
  } else {
    return gcd(b, a % b);
  }
}
signed compare(const void *a, const void *b) {
  long long sub = *(long long *)a - *(long long *)b;
  if (sub < 0) {
    return -1;
  } else if (sub == 0) {
    return 0;
  } else {
    return 1;
  }
}
signed main() {
  long long N, i, ans = 1;
  scanf("%lld", &N);
  long long *A = (long long *)malloc(sizeof(long long) * N);
  for (i = 0; i < N; i++) {
    scanf("%lld", &A[i]);
  }
  qsort(A, N, sizeof(long long), compare);
  for (i = 0; i < N; i++) {
    ans = (ans * gcd(A[i], i)) % 99824435;
  }
  printf("%lld\n", ans);
  return 0;
}
