#include <bits/stdc++.h>
using namespace std;
long long int PowMod(long long int a, long long int p, long long int n) {
  if (!p) return 1;
  long long int ans = PowMod(a, p / 2, n);
  ans = ans * ans % n;
  if (p % 2) ans = ans * a % n;
  return ans;
}
long long int Inv(long long int a, long long int n) {
  return PowMod(a, n - 2, n);
}
long long int n, m, sum1 = 0, sum2 = 0, sum3;
long long int a[100010];
bool vis[100010];
set<int> st;
bool ok(int i, int d) {
  int cnt = 0, k;
  memset(vis, 0, sizeof(vis));
  while ((k = lower_bound(a, a + n, i) - a) < n && a[k] == i && !vis[k]) {
    vis[k] = 1;
    i = (i + d) % m;
    ++cnt;
  }
  if (cnt == n) return true;
  return false;
}
int main() {
  ios::sync_with_stdio(false);
  long long int d;
  int i;
  cin >> m >> n;
  for (i = 0; i < n; ++i) {
    cin >> a[i];
    sum1 = (sum1 + a[i]) % m;
    sum2 = (sum2 + a[i] * a[i] % m) % m;
    st.insert(a[i]);
  }
  sort(a, a + n);
  if (n < m) {
    long long int b = Inv(n * (n - 1) % m, m), c = Inv(6 % m, m);
    for (i = 0; i < n; ++i) {
      d = (2 * (sum1 - n * a[i]) % m * b % m + m) % m;
      sum3 = (n * a[i] % m * a[i] % m +
              n * (n - 1) % m * (2 * n - 1) % m * d % m * d % m * c % m +
              n * (n - 1) % m * d % m * a[i] % m) %
             m;
      if (sum2 == sum3 && ok(a[i], d)) {
        cout << a[i] << ' ' << d << endl;
        break;
      }
    }
    if (i >= n) cout << -1 << endl;
  } else if (ok(a[0], 1))
    cout << a[0] << ' ' << 1 << endl;
  else if (ok(a[0], 0))
    cout << a[0] << ' ' << 0 << endl;
  else
    cout << -1 << endl;
  return 0;
}
