#include <bits/stdc++.h>
using namespace std;
using INT = long long;
const int N = 2e5 + 10;
int power(int a, int b, int c) {
  int ans = 1;
  for (; b; b >>= 1, a = (INT)a * a % c) {
    if (b & 1) ans = (INT)ans * a % c;
  }
  return ans;
}
int a[N], b[N], c[N], m;
int f[N], g[N];
bool solve(int* a, int n, int& x, int& d) {
  if (n == 1) {
    x = a[0], d = 1;
    return true;
  }
  set<int> st;
  int t = (a[1] - a[0] + m) % m;
  for (int i = 0; i < n; i++) {
    f[i] = (a[i] + t) % m;
    st.insert(a[i]);
  }
  int com = 0;
  for (int i = 0; i < n; i++) {
    if (st.count(f[i])) {
      com++;
    }
  }
  if (!com || com >= n) return false;
  t = 1ll * t * power(n - com, m - 2, m) % m;
  int root = -1;
  for (int i = 0; i < n; i++) {
    if (!st.count((a[i] + t) % m)) {
      if (root == -1)
        root = a[i];
      else
        return false;
    }
  }
  x = root;
  d = (m - t) % m;
  return true;
}
int n;
void print(int x, int d) { cout << x << ' ' << d << endl; }
int main() {
  scanf("%d %d", &m, &n);
  for (int i = 0; i < n; i++) scanf("%d", a + i);
  if (n == m) {
    puts("0 1");
    return 0;
  }
  if (n == 1) {
    cout << a[0] << ' ' << 1 << endl;
    return 0;
  }
  int x, d;
  if (n * 2 > m) {
    for (int i = 0; i < n; i++) b[a[i]] = 1;
    int cn = 0;
    for (int i = 0; i < m; i++)
      if (!b[i]) c[cn++] = i;
    if (!solve(c, cn, x, d))
      puts("-1");
    else
      print((x + 1ll * d * cn) % m, d);
  } else {
    if (!solve(a, n, x, d))
      puts("-1");
    else
      print(x, d);
  }
  return 0;
}
