#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
const int MAXN = 100000;
int MOD, n;
int a[MAXN];
int aa[MAXN];
int pw(int x, int n) {
  int ret = 1;
  while (true) {
    if (n & 1) ret = (long long)ret * x % MOD;
    if ((n >>= 1) == 0) return ret;
    x = (long long)x * x % MOD;
  }
}
int inv(int x) { return pw(x, MOD - 2); }
int calctimes(int x) {
  int ret = 0;
  int at = 0;
  for (int i = (0); i < (n); ++i) {
    while (at < 2 * n) {
      int cur = at < n ? a[at] : a[at - n] + MOD;
      if (cur - a[i] > x) break;
      if (cur - a[i] == x) ++ret;
      ++at;
    }
  }
  return ret;
}
bool have(int x) { return (*lower_bound(a, a + n, x)) == x; }
pair<int, int> solve() {
  int g = a[1] - a[0];
  int t = calctimes(g);
  int k = n - t;
  int d = (long long)g * inv(k) % MOD;
  for (int i = (-(n - 1)); i <= (+(n - 1)); ++i) {
    int x = (a[0] + (long long)i * d % MOD + MOD) % MOD;
    if (!have(x)) continue;
    for (int j = (0); j < (n); ++j) {
      int xj = (x + (long long)j * d) % MOD;
      if (!have(xj)) return make_pair(-1, -1);
    }
    return make_pair(x, d);
  }
  return make_pair(-1, -1);
}
void run() {
  scanf("%d%d", &MOD, &n);
  for (int i = (0); i < (n); ++i) scanf("%d", &a[i]);
  sort(a, a + n);
  if (n == 1) {
    printf("%d %d\n", a[0], 1);
  } else if (2 * n - 2 < MOD) {
    pair<int, int> ret = solve();
    if (ret.first == -1 || ret.second == -1)
      printf("-1\n");
    else
      printf("%d %d\n", ret.first, ret.second);
  } else if (n == MOD) {
    printf("%d %d\n", 0, 1);
  } else if (n == MOD - 1) {
    for (int i = (0); i < (MOD); ++i)
      if (!have(i)) {
        printf("%d %d\n", (i + 1) % MOD, 1);
        break;
      }
  } else {
    int nn = 0;
    for (int i = (0); i < (MOD); ++i)
      if (!have(i)) aa[nn++] = i;
    n = nn;
    for (int i = (0); i < (n); ++i) a[i] = aa[i];
    pair<int, int> ret = solve();
    if (ret.first == -1 || ret.second == -1)
      printf("-1\n");
    else
      printf("%d %d\n", (int)((ret.first + (long long)n * ret.second) % MOD),
             ret.second);
  }
}
int main() {
  run();
  return 0;
}
