#include <bits/stdc++.h>
using namespace std;
int n;
int t[150005];
vector<int> cag;
bool respeto(int j) {
  if (j >= n - 1 || j < 0) return true;
  if (j % 2 == 0) {
    return t[j] < t[j + 1];
  } else {
    return t[j] > t[j + 1];
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &t[i]);
  }
  for (int i = 0; i < n; i++) {
    if (!respeto(i)) {
      cag.push_back(i);
    }
  }
  if (cag.size() > 4) {
    puts("0");
    return 0;
  }
  int r = 0;
  for (int j = 0; j < n; j++) {
    if (j != cag[0]) {
      swap(t[cag[0]], t[j]);
      if (respeto(j) && respeto(j - 1) && respeto(j + 1) && respeto(cag[0]) &&
          respeto(cag[0] - 1) && respeto(cag[0] + 1)) {
        int u = 0;
        while (u < cag.size() && respeto(cag[u]) && respeto(cag[u] - 1)) {
          u++;
        }
        if (u == (int)cag.size()) r++;
      }
      swap(t[cag[0]], t[j]);
    }
    if (cag[0] != n - 1 && j != cag[0] + 1 && j != cag[0]) {
      swap(t[cag[0] + 1], t[j]);
      if (respeto(j) && respeto(j - 1) && respeto(cag[0]) &&
          respeto(cag[0] + 1) && respeto(cag[0] + 2) && respeto(j + 1)) {
        int u = 0;
        while (u < cag.size() && respeto(cag[u]) && respeto(cag[u] - 1)) {
          u++;
        }
        if (u == (int)cag.size()) r++;
      }
      swap(t[cag[0] + 1], t[j]);
    }
  }
  printf("%d\n", r);
  return 0;
}
