#include <bits/stdc++.h>
using namespace std;
int n, mod;
int a[200050];
set<int> s;
int x0;
int d;
int check(int d) {
  int cur = *(s.begin());
  int num = 1;
  x0 = cur;
  while (num < n) {
    cur -= d;
    cur = (cur + mod) % mod;
    if (!s.count(cur)) break;
    x0 = cur;
    num++;
  }
  cur = *(s.begin());
  while (num < n) {
    cur += d;
    if (cur >= mod) cur -= mod;
    if (!s.count(cur)) break;
    num++;
  }
  return (num == n);
}
int solve() {
  vector<int> v(s.begin(), s.end());
  for (int i = 0; i < n - 1; i++) {
    d = (v[0] - v[i + 1] + mod) % mod;
    if (check(d)) return 1;
  }
  return 0;
}
int main() {
  while (cin >> mod >> n) {
    for (int i = 0; i < n; i++) {
      scanf("%d", &a[i]);
      s.insert(a[i]);
    }
    if (n == 1) {
      cout << a[0] << " " << 0 << endl;
      continue;
    }
    if (n == mod) {
      cout << 1 << " " << 1 << endl;
      continue;
    }
    if (n > mod / 2) {
      set<int> temp;
      for (int i = 0; i < mod; i++) {
        if (s.find(i) == s.end()) temp.insert(i);
      }
      s = temp;
      n = mod - n;
      if (n == 1) {
        x0 = *(s.begin());
        d = 1;
      } else {
        if (!solve()) {
          cout << -1 << endl;
          continue;
        }
      }
      int fir = (int)((x0 + (long long)n * d) % mod);
      cout << fir << " " << d << endl;
    } else {
      if (!solve()) {
        printf("-1\n");
      } else {
        cout << x0 << " " << d << endl;
      }
    }
  }
  return 0;
}
