problem

Given the sequence $ A $ of length $ N $. The $ i $ item in $ A $ is $ A_i $. You can do the following for this sequence:

* $ 1 \ leq i \ leq N --Choose the integer i that is 1 $. Swap the value of $ A_i $ with the value of $ A_ {i + 1} $.



Find the minimum number of operations required to make $ A $ a sequence of bumps.

A sequence of length $ N $ that satisfies the following conditions is defined as a sequence of irregularities.

* For any $ i $ that satisfies $ 1 <i <N $, ​​$ A_ {i + 1}, A_ {i --1}> A_i $ or $ A_ {i + 1}, A_ {i --1} <A_i Satisfy $.
Intuitively, increase, decrease, increase ... (decrease, like $ 1, \ 10, \ 2, \ 30, \ \ dots (10, \ 1, \ 30, \ 2, \ \ dots) $ It is a sequence that repeats increase, decrease ...).



output

Output the minimum number of operations required to make a sequence of bumps. Also, output a line break at the end.

Example

Input

5
1 2 3 4 5


Output

2
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <string>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <stdio.h>
using namespace std;
#define int long long
int MOD = 1000000007;
int solve(vector<int> A) {
	int N = A.size();
	int res = 0;
	for (int i = 0; i < N - 1; i++) {
		if (i % 2 == 0) {
			if (A[i] < A[i + 1]) {
				if (i + 2 < N && A[i + 1] > A[i + 2] && A[i] > A[i + 2]) {
					swap(A[i + 1], A[i + 2]);
				}
				else {
					swap(A[i], A[i + 1]);
				}
				res++;
			}
		}
		else {
			if (A[i] > A[i + 1]) {
				if (i + 2 < N && A[i + 1] < A[i + 2] && A[i] < A[i + 2]) {
					swap(A[i + 1], A[i + 2]);
				}
				else {
					swap(A[i], A[i + 1]);
				}
				res++;
			}
		}
	}
	/*for (int i = 0; i < N; i++) {
		cerr << A[i] << " ";
	}
	cerr << endl;*/
	return res;
}
signed main() {
	cin.tie(0);
	ios::sync_with_stdio(false);
	int N;
	cin >> N;
	vector<int> A(N);
	
	for (int i = 0; i < N; i++) {
		cin >> A[i];
	}
	int res = solve(A);
	for (int i = 0; i < N; i++) {
		A[i] = -A[i];
	}
	res = min(res, solve(A));
	cout << res << endl;
}
