#include <bits/stdc++.h>
using namespace std;
const int N = 201110;
int a[N];
set<int> s;
bool usecomplement;
int n, MOD, Gap, d, k, first, last, cnt;
int MUL(int u, int v) { return (int)(((long long)u * v) % MOD); }
int quick_pow(int x, int y) {
  int ans = 1;
  for (; y; y >>= 1, x = MUL(x, x))
    if (y & 1) ans = MUL(ans, x);
  return ans;
}
int invert(int x) { return quick_pow(x, MOD - 2); }
void NIE() {
  puts("-1");
  exit(0);
}
int main() {
  scanf("%d%d", &MOD, &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]), s.insert(a[i]);
  if (n == MOD) {
    printf("%d %d\n", a[1], 1);
    return 0;
  }
  if (2 * n > MOD) {
    usecomplement = true;
    n = 0;
    for (int i = 0; i < MOD; i++)
      if (!s.count(i)) a[++n] = i;
  }
  s.clear();
  sort(a + 1, a + n + 1);
  for (int i = 1; i <= n; i++) s.insert(a[i]);
  if (n > 1) {
    Gap = a[2] - a[1];
    for (int i = 1; i <= n; i++)
      if (s.count((a[i] + Gap) % MOD)) k++;
    d = MUL(Gap, invert(n - k));
  } else
    d = 1;
  first = a[1];
  last = a[1];
  cnt = 1;
  s.erase(a[1]);
  while (s.count((last + d) % MOD)) {
    last = (last + d) % MOD;
    cnt++;
    s.erase(last);
  }
  while (s.count((first - d + MOD) % MOD)) {
    first = (first - d + MOD) % MOD;
    cnt++;
    s.erase(first);
  }
  if (cnt < n) NIE();
  if (usecomplement) first = (last + d) % MOD;
  printf("%d %d", first, d);
}
