Sang的奇妙冒险
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

现有一个长度为 n 的数组 a,从左到右依次编号为 1n,其中第 i (1 \leq i \leq n) 个元素的值为 a_i

Sang 最初位于第 1 个元素的位置,他想要到达第 n 个元素的位置,即从最左端到最右端。

为此,他需要在数组上进行移动。在一次操作中,他可以向任意其他位置移动。如果 Sang 想从第 i 个元素的位置移动到第 j 个元素的位置,就需要大小为 \left| a_i - a_j \right| + \left| i - j \right| (1 \leq i, j \leq n, i \neq j) 的代价。

Sang 想要知道,他从第 1 个元素的位置移动到第 n 个元素的位置所需要的最小代价。

显然,代价最小的移动方案可能会有多种。为了这次冒险足够奇妙,他还想要知道满足代价最小的前提下,他最多可以进行多少次移动。

输入描述:

输入的第一行为一个正整数 n (1 \leq n \leq 10^6),表示数组的长度。

接下来一行 n 个空格分隔的正整数 a_i (1 \leq i \leq n, 1 \leq a_i \leq 10^6),表示数组中第 i 个元素的值。

输出描述:

输出一行两个空格分隔的整数表示答案。

第一个数字表示最小代价,第二个数字为最小代价下的最大移动次数。
示例1

输入

复制
4
2 4 9 7

输出

复制
8 2