#include <bits/stdc++.h>
using namespace std;
int gcd(int x, int y) { return (!y ? x : gcd(y, x % y)); }
const int maxn = 4e5 + 10;
const int M = 19;
int a[maxn], b[maxn];
int rmq[M][maxn], lg[maxn];
inline int cmp(int i, int j) { return (a[i] < a[j] ? i : j); }
inline int get(int l, int r) {
  int t = lg[r - l];
  return cmp(rmq[t][l], rmq[t][r - (1 << t)]);
}
int n, lef, rig;
int solve(int l, int r) {
  if (r - l <= 1) return r - l;
  int mid = get(l, r);
  int t1 = solve(l, mid);
  int t2 = solve(mid + 1, r);
  if (r - l == n) lef = t1, rig = t2;
  return 1 + max(t1, t2);
}
int32_t main() {
  cin >> n;
  for (int i = 2; i < maxn; i++) lg[i] = lg[i / 2] + 1;
  int pos = -1;
  for (int i = 0; i < n; i++) {
    cin >> b[i];
    b[i]--;
    if (b[i] == 0) pos = i;
  }
  assert(pos != -1);
  if (n == 1) {
    cout << "1 0" << '\n';
    return 0;
  }
  int sz = 0;
  for (int i = pos; i < n; i++) a[sz++] = b[i];
  for (int i = 0; i < pos; i++) a[sz++] = b[i];
  assert(sz == n);
  for (int i = n; i < 2 * n; i++) a[i] = a[i - n];
  int m = n;
  n *= 2;
  for (int i = 0; i < n; i++) rmq[0][i] = i;
  for (int j = 1; j < M; j++)
    for (int i = 0; i + (1 << j) <= n; i++)
      rmq[j][i] = cmp(rmq[j - 1][i], rmq[j - 1][i + (1 << (j - 1))]);
  n /= 2;
  int hi = n, lo = 1;
  while (hi - lo > 1) {
    int mid = hi + lo >> 1;
    solve(mid, mid + n);
    if (rig >= lef)
      hi = mid;
    else
      lo = mid;
  }
  int x = solve(hi, hi + n);
  int y = solve(hi - 1, hi - 1 + n);
  int ans = (x < y ? hi : hi - 1);
  cout << min(x, y) << " ";
  for (int i = 0; i < n; i++)
    if (b[i] == a[ans]) cout << i << '\n';
}
