#include <bits/stdc++.h>
using pii = std::pair<int, int>;
using ll = long long;
int const MAXN = 111111;
ll N, M;
ll A[MAXN];
ll hold[MAXN];
ll pow_mod(ll a, ll k, ll MOD) {
  ll res = 1, cur = a;
  while (k) {
    if (k & 1) res = res * cur % MOD;
    k /= 2;
    cur = cur * cur % MOD;
  }
  return res;
}
ll inv(ll a, ll m) { return pow_mod(a, m - 2, m); }
int main(int argc, char** argv) {
  std::ios_base::sync_with_stdio(false);
  std::cin >> M >> N;
  ll sum = 0, ssum = 0;
  for (int n = 0; n < N; ++n) {
    std::cin >> A[n];
    sum = (sum + A[n]) % M;
    ssum = (ssum + A[n] * A[n]) % M;
  }
  if (N == 1) {
    std::cout << A[0] << ' ' << 0 << std::endl;
    return 0;
  }
  std::sort(A, A + N);
  for (int i = 1; i < N; ++i) {
    ll d = A[i] - A[0];
    ll x = ((sum - N * (N - 1) / 2 % M * d % M + M) % M * inv(N, M)) % M;
    ll here = N * x % M * x % M + N * (N - 1) % M * d % M * x % M +
              N * (N - 1) * (2 * N - 1) / 6 % M * d % M * d % M;
    here %= M;
    if (here == ssum) {
      for (int j = 0; j < N; ++j) {
        hold[j] = (x + d * j) % M;
      }
      std::sort(hold, hold + N);
      bool good = true;
      for (int j = 0; j < N; ++j)
        if (hold[j] != A[j]) good = false;
      if (good) {
        std::cout << x << ' ' << d << std::endl;
        return 0;
      }
    }
  }
  std::cout << -1 << std::endl;
}
