#include <bits/stdc++.h>
const int maxn = 150010;
const int INF = 0x3f3f3f3f;
using namespace std;
vector<int> V;
int a[maxn];
long long ans = 0;
int ok(int i) {
  if (i & 1) return a[i] < a[i - 1] && a[i] < a[i + 1];
  return a[i] > a[i + 1] && a[i] > a[i - 1];
}
int ok2(int i, int j) {
  int f = 1;
  swap(a[i], a[j]);
  if (!ok(i)) f = 0;
  if (!ok(j)) f = 0;
  for (int k = 0; k < V.size(); k++) {
    if (!ok(V[k])) f = 0;
  }
  swap(a[i], a[j]);
  return f;
}
void fun(int idx, int n) {
  for (int i = 1; i <= n; i++) {
    if (ok2(idx, i)) {
      ++ans;
    }
  }
}
int main() {
  int n, i;
  while (~scanf("%d", &n)) {
    for (i = 1; i <= n; i++) {
      scanf("%d", &a[i]);
    }
    a[0] = INF;
    a[n + 1] = (n + 1) % 2 ? -INF : INF;
    V.empty();
    for (i = 1; i <= n; i++) {
      if (!ok(i)) {
        V.push_back(i);
      }
    }
    if (V.size() > 6) {
      printf("0\n");
      continue;
    }
    ans = 0;
    for (i = 0; i < V.size(); i++) {
      fun(V[i], n);
      for (int j = i + 1; j < V.size(); j++) {
        if (ok2(V[i], V[j])) {
          --ans;
        }
      }
    }
    printf("%d\n", ans);
  }
}
