#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
long long sum, powsum, a[MAXN], b[MAXN];
long long n, m;
long long Pow(long long a, long long b) {
  long long ret = 1;
  for (; b; b >>= 1) {
    if (b & 1) (ret *= a) %= m;
    (a *= a) %= m;
  }
  return ret;
}
int main() {
  while (~scanf("%I64d%I64d", &m, &n)) {
    sum = powsum = 0;
    for (int i = 0; i < n; ++i) {
      scanf("%I64d", a + i);
      (sum += a[i]) %= m;
      (powsum += a[i] * a[i] % m) %= m;
    }
    if (n == 1) {
      printf("%I64d 0\n", a[0]);
      continue;
    }
    sort(a, a + n);
    long long d, a1, sn;
    bool ok = false;
    for (int i = 1; i < n; ++i) {
      d = a[i] - a[0];
      a1 = ((sum - n * (n - 1) / 2 * d) % m + m) % m * Pow(n, m - 2) % m;
      sn = (n * a1 % m * a1 % m +
            n * (n - 1) * (2 * n - 1) / 6 % m * d % m * d % m +
            n * (n - 1) % m * d % m * a1 % m) %
           m;
      if (sn == powsum) {
        for (int j = 0; j < n; ++j) b[j] = (a1 + j * d) % m;
        sort(b, b + n);
        bool flag = true;
        for (int j = 0; j < n; ++j)
          if (a[j] != b[j]) {
            flag = false;
            break;
          }
        if (flag) {
          printf("%I64d %I64d\n", a1, d);
          ok = true;
          break;
        }
      }
    }
    if (!ok) puts("-1");
  }
}
