#include <bits/stdc++.h>
using namespace std;
int n;
int arr[150010];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  int ctr = 0;
  for (int i = 1; i <= n; i++) cin >> arr[i];
  vector<int> ind;
  arr[0] = 1e9;
  if (n & 1)
    arr[n + 1] = 1e9;
  else
    arr[n + 1] = 0;
  for (int i = 1; i < n; i++) {
    if ((i & 1) && arr[i] >= arr[i + 1])
      ctr++, ind.push_back(i - 1), ind.push_back(i), ind.push_back(i + 1);
    if (!(i & 1) && arr[i] <= arr[i + 1])
      ctr++, ind.push_back(i - 1), ind.push_back(i), ind.push_back(i + 1);
  }
  if (ctr > 4) {
    cout << 0;
    return 0;
  }
  int idx;
  long long ans = 0, tmp;
  vector<pair<int, int> > S;
  for (int i = 0; i < ind.size(); i++) {
    if (ind[i] == 0) continue;
    idx = ind[i];
    tmp = ctr;
    for (int i = 1; i <= n; i++) {
      if (idx == i + 1) {
        if (!(idx & 1) && (i & 1) && arr[idx] < arr[i] &&
            arr[idx] < arr[i - 1] && arr[i] > arr[idx + 1]) {
          if (arr[i] >= arr[i + 1]) ctr--;
          if (arr[i] >= arr[i - 1]) ctr--;
          if (arr[idx] <= arr[idx + 1]) ctr--;
          if (ctr == 0) S.push_back({min(i, idx), max(i, idx)});
          ctr = tmp;
        } else if ((idx & 1) && !(i & 1) && arr[idx] > arr[i] &&
                   arr[idx] > arr[i - 1] && arr[i] < arr[idx + 1]) {
          if (arr[i] <= arr[i + 1]) ctr--;
          if (arr[i] <= arr[i - 1]) ctr--;
          if (arr[idx] >= arr[idx + 1]) ctr--;
          if (ctr == 0) S.push_back({min(i, idx), max(i, idx)});
          ctr = tmp;
        }
      } else {
        if ((i & 1) && arr[idx] < arr[i - 1] && arr[idx] < arr[i + 1]) {
          if ((idx & 1) && (arr[i] < arr[idx + 1] && arr[i] < arr[idx - 1])) {
            if (arr[i] >= arr[i + 1]) ctr--;
            if (arr[i] >= arr[i - 1]) ctr--;
            if (arr[idx] >= arr[idx + 1]) ctr--;
            if (arr[idx] >= arr[idx - 1]) ctr--;
            if (ctr == 0) S.push_back({min(i, idx), max(i, idx)});
            ctr = tmp;
          } else if (!(idx & 1) &&
                     (arr[i] > arr[idx + 1] && arr[i] > arr[idx - 1])) {
            if (arr[i] >= arr[i + 1]) ctr--;
            if (arr[i] >= arr[i - 1]) ctr--;
            if (arr[idx] <= arr[idx + 1]) ctr--;
            if (arr[idx] <= arr[idx - 1]) ctr--;
            if (ctr == 0) S.push_back({min(i, idx), max(i, idx)});
            ctr = tmp;
          }
        } else if (!(i & 1) && arr[idx] > arr[i - 1] && arr[idx] > arr[i + 1]) {
          if ((idx & 1) && (arr[i] < arr[idx + 1] && arr[i] < arr[idx - 1])) {
            if (arr[i] <= arr[i + 1]) ctr--;
            if (arr[i] <= arr[i - 1]) ctr--;
            if (arr[idx] >= arr[idx + 1]) ctr--;
            if (arr[idx] >= arr[idx - 1]) ctr--;
            if (ctr == 0) S.push_back({min(i, idx), max(i, idx)});
            ctr = tmp;
          } else if (!(idx & 1) &&
                     (arr[i] > arr[idx + 1] && arr[i] > arr[idx - 1])) {
            if (arr[i] <= arr[i + 1]) ctr--;
            if (arr[i] <= arr[i - 1]) ctr--;
            if (arr[idx] <= arr[idx + 1]) ctr--;
            if (arr[idx] <= arr[idx - 1]) ctr--;
            if (ctr == 0) S.push_back({min(i, idx), max(i, idx)});
            ctr = tmp;
          }
        }
      }
    }
    ctr = tmp;
  }
  sort(S.begin(), S.end());
  int anss = 0;
  for (int i = 0; i < S.size(); i++) {
    anss++;
    i++;
    while (i < S.size() && S[i] == S[i - 1]) i++;
    i--;
  }
  cout << anss;
  return 0;
}
