#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
long long mypow(long long x, int res, int mod) {
  if (!res) return 1;
  long long cur = mypow(x, res >> 1, mod);
  cur = cur * cur % mod;
  if (res & 1) cur = cur * x % mod;
  return cur;
}
long long a[maxn], b[maxn];
int main() {
  int mod;
  long long n;
  scanf("%d%lld", &mod, &n);
  long long s1 = 0, s2 = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
    s1 = (s1 + a[i]) % mod;
    s2 = (s2 + a[i] * a[i]) % mod;
  }
  if (n == 1 || n == mod) {
    printf("%d 1", a[1]);
    return 0;
  }
  sort(a + 1, a + 1 + n);
  for (int i = 2; i <= n; i++) {
    long long d = ((a[i] - a[1]) % mod + mod) % mod;
    long long x = ((s1 - n * (n - 1) / 2 % mod * d) % mod + mod) % mod *
                  mypow(n, mod - 2, mod) % mod;
    long long tmp =
        (n * x % mod * x % mod + n * (n - 1) % mod * d % mod * x % mod +
         n * (n - 1) * (2 * n - 1) / 6 % mod * d % mod * d % mod) %
        mod;
    if (tmp != s2) continue;
    b[1] = x;
    for (int i = 2; i <= n; i++) b[i] = (b[i - 1] + d) % mod;
    sort(b + 1, b + 1 + n);
    bool flag = 1;
    for (int i = 1; i <= n; i++)
      if (a[i] != b[i]) {
        flag = 0;
        break;
      }
    if (flag) {
      printf("%lld %lld", x, d);
      return 0;
    }
  }
  printf("-1");
  return 0;
}
