#include <bits/stdc++.h>
using namespace std;
int n, p[1000010], a[1000010], addall, cnt0, cnt1, cnt2;
long long tmp;
vector<int> v[1000010];
bool flag[1000010];
int ask(int x) { return a[x] + addall; }
long long Abs(long long x) {
  if (x < 0) return -x;
  return x;
}
void dec(int n) {
  if (p[n] - ask(n) > 0)
    cnt1--;
  else if (p[n] - ask(n) == 0)
    cnt0--;
  else
    cnt2--;
  tmp -= cnt1;
  tmp += cnt2 + cnt0;
  tmp -= Abs(p[n] - ask(n));
  addall++;
  a[n] = 1 - addall;
  tmp += Abs(p[n] - ask(n));
  if (p[n] - ask(n) == 0)
    cnt0++;
  else
    cnt1++;
}
void add(int j, int v) {
  if (p[j] - ask(j) > 0)
    cnt1 += v;
  else if (p[j] - ask(j) == 0)
    cnt0 += v;
  else
    cnt2 += v;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &p[i]);
    a[i] = i;
    if (p[i] > i) {
      cnt1++;
      tmp += p[i] - (long long)i;
      v[p[i] - i].push_back(i);
    } else if (p[i] == i) {
      cnt0++;
      v[0].push_back(i);
    } else if (p[i] < i) {
      cnt2++;
      tmp += i - (long long)p[i];
    }
    v[n - i].push_back(i);
    if (n - i + p[i] - 1 < n) v[n - i + p[i] - 1].push_back(i);
  }
  long long ans = tmp;
  int tk = 0;
  dec(n);
  for (int i = 0; i < v[0].size(); i++) {
    int j = v[0][i];
    if (j == n || flag[j]) continue;
    flag[j] = 1;
    addall--, add(j, -1);
    addall++, add(j, 1);
  }
  for (int i = 0; i < v[1].size(); i++) {
    int j = v[1][i];
    if (j == n || flag[j]) continue;
    flag[j] = 1;
    addall--, add(j, -1);
    addall++, add(j, 1);
  }
  for (int i = 0; i < v[0].size(); i++) flag[v[0][i]] = 0;
  for (int i = 0; i < v[1].size(); i++) flag[v[1][i]] = 0;
  for (int k = 1; k < n; k++) {
    if (tmp < ans) ans = tmp, tk = k;
    dec(n - k);
    for (int i = 0; i < v[k].size(); i++) {
      int j = v[k][i];
      if (j == n - k || flag[j]) continue;
      flag[j] = 1;
      addall--, add(j, -1);
      addall++, add(j, 1);
    }
    for (int i = 0; i < v[k + 1].size(); i++) {
      int j = v[k + 1][i];
      if (j == n - k || flag[j]) continue;
      flag[j] = 1;
      addall--, add(j, -1);
      addall++, add(j, 1);
    }
    for (int i = 0; i < v[k].size(); i++) flag[v[k][i]] = 0;
    for (int i = 0; i < v[k + 1].size(); i++) flag[v[k + 1][i]] = 0;
  }
  cout << ans << ' ' << tk << endl;
  return 0;
}

### Prompt

In Cpp, your task is to solve the following problem:

Some time ago Mister B detected a strange signal from the space, which he started to study.

After some transformation the signal turned out to be a permutation p of length n or its cyclic shift. For the further investigation Mister B need some basis, that's why he decided to choose cyclic shift of this permutation which has the minimum possible deviation.

Let's define the deviation of a permutation p as <image>.

Find a cyclic shift of permutation p with minimum possible deviation. If there are multiple solutions, print any of them.

Let's denote id k (0 ≤ k < n) of a cyclic shift of permutation p as the number of right shifts needed to reach this shift, for example:

  * k = 0: shift p1, p2, ... pn, 
  * k = 1: shift pn, p1, ... pn - 1, 
  * ..., 
  * k = n - 1: shift p2, p3, ... pn, p1. 

Input

First line contains single integer n (2 ≤ n ≤ 106) — the length of the permutation.

The second line contains n space-separated integers p1, p2, ..., pn (1 ≤ pi ≤ n) — the elements of the permutation. It is guaranteed that all elements are distinct.

Output

Print two integers: the minimum deviation of cyclic shifts of permutation p and the id of such shift. If there are multiple solutions, print any of them.

Examples

Input

3
1 2 3


Output

0 0


Input

3
2 3 1


Output

0 1


Input

3
3 2 1


Output

2 1

Note

In the first sample test the given permutation p is the identity permutation, that's why its deviation equals to 0, the shift id equals to 0 as well.

In the second sample test the deviation of p equals to 4, the deviation of the 1-st cyclic shift (1, 2, 3) equals to 0, the deviation of the 2-nd cyclic shift (3, 1, 2) equals to 4, the optimal is the 1-st cyclic shift.

In the third sample test the deviation of p equals to 4, the deviation of the 1-st cyclic shift (1, 3, 2) equals to 2, the deviation of the 2-nd cyclic shift (2, 1, 3) also equals to 2, so the optimal are both 1-st and 2-nd cyclic shifts.

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
int n, p[1000010], a[1000010], addall, cnt0, cnt1, cnt2;
long long tmp;
vector<int> v[1000010];
bool flag[1000010];
int ask(int x) { return a[x] + addall; }
long long Abs(long long x) {
  if (x < 0) return -x;
  return x;
}
void dec(int n) {
  if (p[n] - ask(n) > 0)
    cnt1--;
  else if (p[n] - ask(n) == 0)
    cnt0--;
  else
    cnt2--;
  tmp -= cnt1;
  tmp += cnt2 + cnt0;
  tmp -= Abs(p[n] - ask(n));
  addall++;
  a[n] = 1 - addall;
  tmp += Abs(p[n] - ask(n));
  if (p[n] - ask(n) == 0)
    cnt0++;
  else
    cnt1++;
}
void add(int j, int v) {
  if (p[j] - ask(j) > 0)
    cnt1 += v;
  else if (p[j] - ask(j) == 0)
    cnt0 += v;
  else
    cnt2 += v;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &p[i]);
    a[i] = i;
    if (p[i] > i) {
      cnt1++;
      tmp += p[i] - (long long)i;
      v[p[i] - i].push_back(i);
    } else if (p[i] == i) {
      cnt0++;
      v[0].push_back(i);
    } else if (p[i] < i) {
      cnt2++;
      tmp += i - (long long)p[i];
    }
    v[n - i].push_back(i);
    if (n - i + p[i] - 1 < n) v[n - i + p[i] - 1].push_back(i);
  }
  long long ans = tmp;
  int tk = 0;
  dec(n);
  for (int i = 0; i < v[0].size(); i++) {
    int j = v[0][i];
    if (j == n || flag[j]) continue;
    flag[j] = 1;
    addall--, add(j, -1);
    addall++, add(j, 1);
  }
  for (int i = 0; i < v[1].size(); i++) {
    int j = v[1][i];
    if (j == n || flag[j]) continue;
    flag[j] = 1;
    addall--, add(j, -1);
    addall++, add(j, 1);
  }
  for (int i = 0; i < v[0].size(); i++) flag[v[0][i]] = 0;
  for (int i = 0; i < v[1].size(); i++) flag[v[1][i]] = 0;
  for (int k = 1; k < n; k++) {
    if (tmp < ans) ans = tmp, tk = k;
    dec(n - k);
    for (int i = 0; i < v[k].size(); i++) {
      int j = v[k][i];
      if (j == n - k || flag[j]) continue;
      flag[j] = 1;
      addall--, add(j, -1);
      addall++, add(j, 1);
    }
    for (int i = 0; i < v[k + 1].size(); i++) {
      int j = v[k + 1][i];
      if (j == n - k || flag[j]) continue;
      flag[j] = 1;
      addall--, add(j, -1);
      addall++, add(j, 1);
    }
    for (int i = 0; i < v[k].size(); i++) flag[v[k][i]] = 0;
    for (int i = 0; i < v[k + 1].size(); i++) flag[v[k + 1][i]] = 0;
  }
  cout << ans << ' ' << tk << endl;
  return 0;
}

```