#include <bits/stdc++.h>
using namespace std;
const pair<int, int> DD[] = {{1, 0},  {1, 1},   {0, 1},  {-1, 1},
                             {-1, 0}, {-1, -1}, {0, -1}, {1, -1}};
template <class T>
T smin(T &a, T b) {
  if (a > b) a = b;
  return a;
}
template <class T>
T smax(T &a, T b) {
  if (a < b) a = b;
  return a;
}
int main(void) {
  srand(time(0));
  cout << fixed << setprecision(7);
  cerr << fixed << setprecision(7);
  int n, mod;
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cin >> mod >> n;
  if (mod < n) return 0 * puts("-1");
  if (n == mod) return 0 * puts("0 1");
  static int s[1 << 20];
  for (int i = 1; i <= n; ++i) cin >> s[i];
  if (n == 1) return cout << s[1] << " 0\n", 0;
  int S1 = 0, S2 = 0;
  for (int i = 1; i <= n; ++i) {
    S1 = (S1 + s[i]) % mod;
    S2 = (S2 + 1ll * s[i] * s[i]) % mod;
  }
  auto pow = [&](int a, int b) {
    int ans = 1;
    while (b) {
      if (b & 1) ans = (1ll * ans * a) % mod;
      a = (1ll * a * a) % mod;
      b /= 2;
    }
    return ans;
  };
  set<int> ss;
  for (int i = 1; i <= n; ++i) ss.insert(s[i]);
  auto go = [&](int a, int b) {
    for (int i = 0; i < n; ++i) {
      if (!ss.count(a)) return 0;
      a = (a + b);
      if (a >= mod) a -= mod;
    }
    return 1;
  };
  int sum = 0;
  for (int i = 0; i < n; ++i) sum = (sum + 1ll * i * i) % mod;
  const int ppp = (1ll * n * (n - 1) / 2) % mod;
  const int inv = pow(ppp, mod - 2);
  auto mul = [&](int a, int b) {
    int ans = (1ll * a * b) % mod;
    return ans;
  };
  int was = 0;
  for (int i = 1; i <= n; ++i) {
    int cnt = s[i];
    int sub = (1ll * mod * mod - 1ll * n * cnt) % mod;
    int cur = (1ll * (S1 + sub) * inv) % mod;
    assert(S1 == (mul(ppp, cur) + mul(cnt, n)) % mod);
    int square = mul(n, mul(cnt, cnt));
    square = (square + mul(cnt, mul(n, mul(n - 1, cur)))) % mod;
    square = (square + mul(cur, mul(cur, sum))) % mod;
    was += square == S2;
    if (S2 == square && go(cnt, cur))
      return cout << cnt << ' ' << cur << '\n', 0;
  }
  puts("-1");
  cerr << "Time elapsed :" << clock() * 1000.0 / CLOCKS_PER_SEC << " ms"
       << '\n';
  return 0;
}
