#include <bits/stdc++.h>
const int N = 1e5 + 100;
const int M = 1e5 + 100;
const double EPS = 1e-9;
using namespace std;
long long n, m, a[N], b[N];
long long powe(long long a, long long b, long long p) {
  long long ans = 1;
  long long base = a;
  while (b) {
    if (b & 1) ans = (ans * base) % p;
    b >>= 1;
    base = (base * base) % p;
  }
  return (ans % p);
}
int main() {
  scanf("%lld%lld", &m, &n);
  for (long long i = 1; i <= n; i++) scanf("%lld", &a[i]);
  if (n == 1)
    printf("%lld 0\n", a[1]);
  else {
    sort(a + 1, a + 1 + n);
    long long sum1 = 0, sum2 = 0;
    for (long long i = 1; i <= n; i++)
      sum1 = (sum1 + a[i]) % m, sum2 = (sum2 + a[i] * a[i] % m) % m;
    for (long long i = 2; i <= n; i++) {
      long long d = a[i] - a[1];
      long long xx = (sum1 * powe(n, m - 2, m) % m -
                      (n - 1) * d % m * powe(2, m - 2, m) % m + m) %
                     m;
      long long yy = ((n * xx % m) * xx % m +
                      n * (n - 1ll) % m * (2 * n - 1ll) % m *
                          powe(6, m - 2, m) % m * d % m * d % m +
                      n * (n - 1) % m * d % m * xx % m) %
                     m;
      if (yy == sum2) {
        b[1] = xx;
        for (long long i = 2; i <= n; i++) b[i] = (b[i - 1] + d) % m;
        sort(b + 1, b + 1 + n);
        int jud = 0;
        for (long long i = 1; i <= n; i++)
          if (a[i] != b[i]) {
            jud = 1;
            break;
          }
        if (!jud) {
          printf("%lld %lld\n", xx, d);
          return 0;
        }
      }
    }
    printf("-1\n");
  }
  return 0;
}
