#include <bits/stdc++.h>
using namespace std;
float inf = std::numeric_limits<double>::infinity();
long long int INF = std::numeric_limits<long long int>::max();
const int N = 100005;
int A[N];
set<int> SS;
long long int powm(long long int b, int p, int m) {
  long long int ret = 1;
  while (p) {
    if (p & 1) ret = (ret * b) % m;
    b = (b * b) % m;
    p >>= 1;
  }
  return ret;
}
long long int cal(long long int n, long long int m, long long int a,
                  long long int d) {
  ;
  long long int ret = 0;
  ret += (a * a) % m;
  ;
  ret = (ret + (((n - 1) * ((a * d) % m)) % m)) % m;
  ret = (ret + (((((((n - 1) * ((n / 2) - 1)) % m) * ((d * d) % m)) % m) *
                 powm(2, m - 2, m)) %
                m)) %
        m;
  ;
  ret = (ret + m -
         ((((((((2 * (n / 2)) - 1) * ((n / 2) - 1)) % m) * ((d * d) % m)) % m) *
           powm(6, m - 2, m)) %
          m)) %
        m;
  ;
  ret = (ret * (n / 2)) % m;
  ;
  return ret;
}
int main() {
  int n, m;
  scanf("%d", &m);
  scanf("%d", &n);
  if (n > m) return 0 * printf("-1\n");
  long long int sum = 0;
  for (int i = 0; i < n; i++) {
    scanf("%d", &A[i]);
    SS.insert(A[i]);
    sum += A[i];
  }
  if (n == 1) return 0 * printf("%d 1", A[0]);
  long long int x = (((sum * 2) % m) * powm(n, m - 2, m)) % m;
  long long int y, d;
  sum = 0;
  long long int st = -1, diff = -1;
  for (int i = 0; i < n; i++) {
    y = (x + m - A[i]) % m;
    if (SS.count(y) == 0) return 0 * printf("-1\n");
    if (y == A[i]) continue;
    sum += (y * A[i]) % m;
    sum = sum % m;
  }
  sum = (sum * powm(2, m - 2, m)) % m;
  ;
  for (int i = 0; i < n; i++) {
    y = (x + m - A[i]) % m;
    d = (((y + m - A[i]) % m) * (powm(n - 1, m - 2, m))) % m;
    if (cal(n, m, A[i], d) == sum) {
      st = A[i];
      diff = d;
      ;
    }
  }
  if (st == -1) return 0 * printf("-1\n");
  printf("%lld %lld\n", st, diff);
  return 0;
}
