#include <bits/stdc++.h>
using namespace std;
const int maxn = 200005;
const int INF = 1e9 + 7;
vector<int> ans(maxn);
vector<int> lista;
void solve_left() {
  int n = lista.size();
  vector<int> need(maxn);
  vector<pair<int, int> > ativo;
  int teto = n - 1;
  int sz = 0;
  for (int i = 0; i < maxn; i++) need[i] = 0;
  need[0] = 1;
  int custo = 0;
  for (int i = 0; i < n; i++) {
    int v = lista[teto];
    int total = 0;
    int esp = need[sz];
    for (int i = sz - 1; i >= 0; i--) {
      if (ativo[i].first > v) {
        total = max(total + 1, ativo[i].second);
        esp++;
        sz--;
        ativo.pop_back();
      } else
        break;
    }
    total++;
    ativo.push_back({v, total});
    if (total == esp) {
      need[sz] = esp + 1;
      need[sz + 1] = esp;
      custo++;
      ans[i] = custo;
    } else {
      need[sz] = esp;
      need[sz + 1] = esp - 1;
      ans[i] = custo;
    }
    sz++;
    teto--;
  }
}
void solve_right() {
  int n = lista.size();
  vector<int> need(maxn);
  vector<pair<int, int> > ativo;
  int teto = n - 1;
  int sz = 0;
  for (int i = 0; i < maxn; i++) need[i] = 0;
  need[0] = 1;
  int custo = 0;
  for (int i = n - 1; i >= 0; i--) {
    int v = lista[teto];
    int total = 0;
    int esp = need[sz];
    for (int i = sz - 1; i >= 0; i--) {
      if (ativo[i].first > v) {
        total = max(total + 1, ativo[i].second);
        esp++;
        sz--;
        ativo.pop_back();
      } else
        break;
    }
    total++;
    ativo.push_back({v, total});
    if (total == esp) {
      need[sz] = esp + 1;
      need[sz + 1] = esp;
      custo++;
      ans[i] = max(ans[i], custo);
    } else {
      need[sz] = esp;
      need[sz + 1] = esp - 1;
      ans[i] = max(ans[i], custo);
    }
    sz++;
    teto++;
    teto %= n;
  }
}
void shift(int res) {
  vector<int> aux(lista.size());
  int n = lista.size();
  for (int i = 0; i < lista.size(); i++) {
    aux[(i - res + n) % n] = lista[i];
  }
  for (int i = 0; i < lista.size(); i++) {
    lista[i] = aux[i];
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  int find;
  for (int i = 0; i < n; i++) {
    int a;
    cin >> a;
    if (a == 1) find = i;
    lista.push_back(a);
  }
  find++;
  shift(find);
  solve_left();
  solve_right();
  int mini = INF;
  int des;
  for (int i = 0; i < n; i++) {
    if (ans[i] < mini) {
      mini = ans[i];
      des = (find + (n - i) - 1) % n;
    } else if (ans[i] == mini) {
      des = min(des, (find + (n - i) - 1) % n);
    }
  }
  cout << mini << " " << des << endl;
}
