#include <bits/stdc++.h>
using namespace std;
long long n, P;
long long a[500005], b[500005];
long long ksm(long long x, long long y, long long z) {
  long long ans = 1;
  while (y) {
    if (y % 2 == 1) ans = ans * x % z;
    y = y / 2;
    x = x * x % z;
  }
  return ans;
}
int main() {
  scanf("%lld%lld", &P, &n);
  long long sum = 0;
  long long sum1 = 0;
  for (int i = 1; i <= n; i++)
    scanf("%lld", &a[i]), sum = (sum + a[i]) % P,
                          sum1 = (sum1 + a[i] * a[i]) % P;
  sort(a + 1, a + n + 1);
  if (n == 1) {
    printf("%lld %d\n", a[1], 0);
    return 0;
  } else if (n == P) {
    printf("%d %d\n", 0, 1);
    return 0;
  } else if (n != 1 && n != P) {
    for (int i = 2; i <= n; i++) {
      long long d = a[i] - a[1];
      long long x =
          (sum - n * (n - 1) / 2 % P * d % P + P) * ksm(n, P - 2, P) % P;
      long long tot = n * x % P * x % P;
      tot = (tot + n * (n - 1) % P * d % P * x % P) % P;
      tot = (tot + n * (n - 1) * (2 * n - 1) / 6 % P * d % P * d % P) % P;
      long long tot1 = n * x % P * x % P;
      tot1 = (tot1 + n * (n - 1) % P * d % P * x % P) % P;
      tot1 = (tot1 + n * (n - 1) * (2 * n - 1) / 6 % P * d % P * d % P) % P;
      if (sum1 == tot) {
        b[1] = x;
        for (int i = 2; i <= n; i++) b[i] = (b[i - 1] + d) % P;
        sort(b + 1, b + n + 1);
        bool flag = true;
        for (int i = 1; i <= n; i++) flag = flag & (a[i] == b[i]);
        if (flag) {
          printf("%lld %lld\n", x, d);
          return 0;
        }
      }
    }
  }
  puts("-1");
  return 0;
}
