#include <bits/stdc++.h>
template <typename X>
inline X abs(const X& a) {
  return a < 0 ? -a : a;
}
template <typename X>
inline X sqr(const X& a) {
  return a * a;
}
using namespace std;
const int INF = 1000 * 1000 * 1000;
const long double EPS = 1e-9;
const long double PI = acos(-1.0);
const int N = 200 * 1000 + 13;
int n;
int a[N];
inline void read() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
}
inline int gcd(int a, int b) {
  while (a != 0 && b != 0) {
    if (a > b) {
      a %= b;
    } else {
      b %= a;
    }
  }
  return max(a, b);
}
inline void solve() {
  int ma = *max_element(a, a + n);
  long long sum = 0;
  for (int i = 0; i < n; i++) {
    sum += a[i];
  }
  int g = ma - a[0];
  for (int i = 1; i < n; i++) {
    g = gcd(g, ma - a[i]);
  }
  long long ans = (ma * 1ll * n - sum) / g;
  cout << ans << ' ' << g << endl;
}
int main() {
  srand(time(NULL));
  cerr << setprecision(10) << fixed;
  read();
  solve();
}
