#include <bits/stdc++.h>
using namespace std;
int n, m, l, s, tot, an;
const int N = 210000;
int a[N];
int ans, d;
map<int, bool> f;
long long quick(long long x, long long y, int p) {
  long long xx = 1;
  while (y) {
    if (y & 1) xx = 1ll * xx * x % p;
    x = 1ll * x * x % p;
    y /= 2;
  }
  return xx;
}
void work(int a[], int n) {
  long long x = (a[2] - a[1] + m) % m;
  int c = 0;
  for (int i = 1; i <= n; i++)
    if (f[(a[i] + x + m) % m]) c++;
  int k = n - c;
  d = 1ll * x * quick(k, m - 2, m) % m;
  ans = -1;
  for (int i = 1; i <= n; i++)
    if (!f[(a[i] + d) % m]) {
      if (ans < 0)
        ans = a[i];
      else {
        ans = -1;
        return;
      }
    }
  d = (m - d) % m;
}
int main() {
  scanf("%d%d", &m, &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]), f[a[i]] = 1;
  if ((n == 1) || (n == m)) {
    printf("%d %d\n", a[1], 1);
    return 0;
  }
  if (2 * n < m) {
    work(a, n);
  } else {
    int s = 0;
    for (int i = 0; i < m; i++)
      if (!f[i]) a[++s] = i;
    f.clear();
    for (int i = 1; i <= s; i++) f[a[i]] = 1;
    work(a, s);
    if (ans != -1) ans = (ans + 1ll * s * d % m) % m;
  }
  if (ans < 0)
    printf("%d\n", ans);
  else
    printf("%d %d\n", ans, d);
}
