#include <bits/stdc++.h>
using namespace std;
long long a[200005];
int main() {
  ios_base::sync_with_stdio(0);
  int n, v1, v2;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int d = 1;
  long long ans = -1;
  for (int i = 0; i < n - 1; i++) {
    if (abs(a[i] - a[i + 1]) == 1) {
      ans = max(a[i], ans);
      if (d == 1) {
        continue;
      }
      if (a[i] % d == 0) {
        v1 = d;
      } else {
        v1 = a[i] % d;
      }
      if (a[i + 1] % d == 0) {
        v2 = d;
      } else {
        v2 = a[i + 1] % d;
      }
      if (a[i] > a[i + 1]) {
        if (v1 - v2 == 1) {
          continue;
        } else {
          cout << "NO";
          return 0;
        }
      } else {
        if (v2 - v1 == 1) {
          continue;
        } else {
          cout << "NO";
          return 0;
        }
      }
    } else {
      ans = max(a[i], ans);
      if (d == 1) {
        d = abs(a[i] - a[i + 1]);
        if (d == 0) {
          cout << "NO";
          return 0;
        }
      } else {
        if (d == abs(a[i] - a[i + 1])) {
          continue;
        } else {
          cout << "NO";
          return 0;
        }
      }
    }
  }
  for (int i = 0; i < n - 1; i++) {
    if (abs(a[i] - a[i + 1]) == 1) {
      ans = max(a[i], ans);
      if (d == 1) {
        continue;
      }
      if (a[i] % d == 0) {
        v1 = d;
      } else {
        v1 = a[i] % d;
      }
      if (a[i + 1] % d == 0) {
        v2 = d;
      } else {
        v2 = a[i + 1] % d;
      }
      if (a[i] > a[i + 1]) {
        if (v1 - v2 == 1) {
          continue;
        } else {
          cout << "NO";
          return 0;
        }
      } else {
        if (v2 - v1 == 1) {
          continue;
        } else {
          cout << "NO";
          return 0;
        }
      }
    }
  }
  ans = max(ans, a[n - 1]);
  cout << "YES"
       << "\n";
  if (ans % d == 0) {
    cout << ans / d << " " << d;
  } else {
    cout << ans / d + 1 << " " << d;
  }
  return 0;
}
