#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cout << setprecision(32);
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  {
    bool flg = true;
    bool eqf = false;
    int mx = a[0];
    for (int i = 1; i < n; i++) {
      if (abs(a[i] - a[i - 1]) != 1) flg = false;
      if (a[i] == a[i - 1]) eqf = true;
      mx = max(mx, a[i]);
    }
    if (flg) {
      cout << "YES" << endl;
      cout << mx << " " << 1 << endl;
      exit(0);
    }
    if (eqf) {
      cout << "NO" << endl;
      exit(0);
    }
  }
  int y = -1;
  for (int i = 1; i < n; i++) {
    int z = abs(a[i] - a[i - 1]);
    if (z != 1) {
      if (y == -1)
        y = z;
      else if (y != z) {
        cout << "NO" << endl;
        exit(0);
      }
    }
  }
  for (int i = 1; i < n; i++) {
    int z = a[i];
    set<int> adj;
    if (z % y != 1) adj.insert(z - 1);
    if (z % y != 0) adj.insert(z + 1);
    adj.insert(z + y);
    if (z > y) adj.insert(z - y);
    if (adj.find(a[i - 1]) == adj.end()) {
      cout << "NO" << endl;
      exit(0);
    }
  }
  cout << "YES" << endl;
  cout << 1e9 << " " << y << endl;
  return 0;
}
