using System.Collections.Generic;
public static void Main()
numbers = Array.ConvertAll<string, int>(input.Split(' '), int.Parse);
List<int> platoRawIndexes = new List<int>();
for (int i = numbers.Length - 1; i >= 1; i--) {
if (i < numbers.Length - 1 && numbers[i] == numbers[i + 1]) {
platoRawIndexes.Add(i + 1);
if (numbers[i] == numbers[i - 1]) {
platoRawIndexes.Add(i - 1);
Dictionary<int, List<int>> subArrays = new Dictionary<int, List<int>>();
subArrays[0] = new List<int>();
for (int i = 0; i < numbers.Length; i++) {
if (platoRawIndexes.Contains(i)) {
subArrays[subArrayCount] = new List<int>();
subArrays[subArrayCount].Add(numbers[i]);
foreach (KeyValuePair<int, List<int>> entry in subArrays)
List<int> partialNumbers = entry.Value;
if (platoRawIndexes.Count > index) {
partialNumbers.Add(numbers[platoRawIndexes[index]]);
partialNumbers.Reverse();
if (platoRawIndexes.Count > index - 1 && index > 0) {
partialNumbers.Add(numbers[platoRawIndexes[index - 1]]);
partialNumbers.Reverse();
for (int i = partialNumbers.Count - 1; i >= 1; i--) {
if (partialNumbers[i - 1] > partialNumbers[i] ||
partialNumbers[i - 1] < partialNumbers[0]) {
partialNumbers[i - 1] = partialNumbers[i];
Console.WriteLine(pushesCount);