#include <bits/stdc++.h>
using namespace std;
long long modular_exponentiation(long long b, long long exp, long long m) {
  long long ans = 1;
  while (exp) {
    if (exp & 1) ans = (ans * b) % m;
    b = (b * b) % m;
    exp >>= 1;
  }
  return ans % m;
}
long long modular_divison(long long a, long long b, long long m) {
  return (a * modular_exponentiation(b, m - 2, m)) % m;
}
long long count_differences(long long d, vector<long long> a, long long m) {
  long long y;
  long long cnt = 0;
  vector<long long>::iterator it;
  int l = a.size();
  for (int i = 0; i < l; i++) {
    for (long long j = -d; j <= d; j += 2 * d) {
      y = (a[i] + j + m) % m;
      if (a[i] > y) continue;
      it = lower_bound(a.begin(), a.end(), y);
      if (it != a.end() && *it == y) {
        cnt++;
      }
    }
  }
  return cnt;
}
bool is_good_diff(vector<long long> a, long long n, long long m, long long d,
                  long long& first) {
  long long y = a[0];
  long long cnt = 0;
  vector<long long>::iterator it;
  it = lower_bound(a.begin(), a.end(), y);
  while (it != a.end() && *it == y) {
    first = y;
    y = (y + d) % m;
    cnt++;
    it = lower_bound(a.begin(), a.end(), y);
  }
  y = a[0];
  it = lower_bound(a.begin(), a.end(), y);
  while (it != a.end() && *it == y) {
    first = y;
    y = (y - d + m) % m;
    cnt++;
    it = lower_bound(a.begin(), a.end(), y);
  }
  return cnt == n + 1;
}
pair<long long, long long> solve(vector<long long> a, long long n,
                                 long long m) {
  if (n == 0) return make_pair(1, 1);
  if (n == 1) return make_pair(a[0], 1);
  if (2 * n >= m) {
    vector<long long> b;
    vector<long long>::iterator it;
    for (long long i = 0; i < m; i++) {
      it = lower_bound(a.begin(), a.end(), i);
      if (it == a.end() || *it != i) b.push_back(i);
    }
    pair<long long, long long> answer = solve(b, m - n, m);
    if (answer.first != -1)
      answer.first = (answer.first + (m - n) * answer.second) % m;
    return answer;
  }
  long long first, diff;
  diff = a[1] - a[0];
  long long k = n - count_differences(diff, a, m);
  long long d = modular_divison(diff, k, m);
  if (is_good_diff(a, n, m, d, first)) {
    return make_pair(first, d);
  }
  return make_pair(-1, -1);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  long long n, m;
  cin >> m >> n;
  vector<long long> ap;
  ap.resize(n);
  for (long long i = 0; i < n; i++) {
    cin >> ap[i];
  }
  sort(ap.begin(), ap.end());
  pair<long long, long long> answer = solve(ap, n, m);
  if (answer.first == -1)
    cout << "-1" << endl;
  else
    cout << answer.first << " " << answer.second << endl;
  return 0;
}
