#include <bits/stdc++.h>
using namespace std;
const long long inf = 1LL << 61;
const long long mod = 1000000007;
const int maxn = 1e5 + 10;
long long a[maxn], b[maxn];
long long s[2];
long long extgcd(long long a, long long b, long long &x, long long &y);
long long inv(long long a, long long n);
int main() {
  std::ios::sync_with_stdio(false);
  int i = 0, j = 0, k = 0;
  long long m, n;
  cin >> m >> n;
  for (i = 0; i < n; i++) {
    cin >> a[i];
    s[0] = (s[0] + a[i]) % m;
    s[1] = (s[1] + a[i] * a[i] % m) % m;
  }
  if (n == 1) {
    cout << a[0] << " " << 0 << endl;
    return 0;
  }
  sort(a, a + n);
  for (i = 1; i < n; i++) {
    long long d = (a[i] - a[0]) % m;
    long long ans =
        (s[0] - n * (n - 1) % m * inv(2, m) % m * d % m + m) * inv(n, m) % m;
    long long s1 =
        (ans * ans % m * n % m + n * (n - 1) % m * ans % m * d % m +
         (n - 1) * n % m * (2 * n - 1) % m * inv(6, m) % m * d % m * d % m) %
        m;
    if (s1 == s[1]) {
      b[0] = ans;
      for (j = 1; j < n; j++) {
        b[j] = (b[j - 1] + d + m) % m;
      }
      sort(b, b + n);
      for (j = 0; j < n; j++) {
        if (a[j] != b[j]) break;
      }
      if (j == n) {
        cout << ans << " " << d << endl;
        return 0;
      }
    }
  }
  cout << -1 << endl;
  return 0;
}
long long extgcd(long long a, long long b, long long &x, long long &y) {
  long long d = a;
  if (b != 0) {
    d = extgcd(b, a % b, y, x);
    y -= (a / b) * x;
  } else {
    x = 1, y = 0;
  }
  return d;
}
long long inv(long long a, long long n) {
  long long d, x, y;
  d = extgcd(a, n, x, y);
  return d == 1 ? (x + n) % n : -1;
}
