#include <bits/stdc++.h>
using namespace std;
const int maxn = 150000 + 10;
int A[maxn], n;
long long ans;
set<int> S;
vector<int> v;
bool check(int i) {
  if (i < 0 || i >= n) return true;
  bool res = true;
  if (i % 2 == 0) {
    if (i > 0 && A[i] >= A[i - 1]) res = false;
    if (i < n - 1 && A[i] >= A[i + 1]) res = false;
  } else {
    if (i > 0 && A[i] <= A[i - 1]) res = false;
    if (i < n - 1 && A[i] <= A[i + 1]) res = false;
  }
  return res;
}
void check(int idx1, int idx2) {
  bool ok = true;
  swap(A[idx1], A[idx2]);
  for (int i = 0; i < v.size(); ++i) {
    if (!check(v[i])) {
      ok = false;
      break;
    }
  }
  if (!check(idx1) || !check(idx1 + 1) || !check(idx1 - 1)) ok = false;
  if (!check(idx2) || !check(idx2 + 1) || !check(idx2 - 1)) ok = false;
  if (ok) ++ans;
  swap(A[idx1], A[idx2]);
}
int main() {
  scanf("%d\n", &n);
  for (int i = 0; i < n; ++i) scanf("%d", &A[i]);
  for (int i = 0; i < n - 1; ++i) {
    if (!check(i)) {
      S.insert(i);
      if (i > 0) S.insert(i - 1);
      if (i < n - 1) S.insert(i + 1);
    }
  }
  if (S.size() > 13) {
    printf("0\n");
    return 0;
  }
  v.resize(S.size());
  copy(S.begin(), S.end(), v.begin());
  for (int i = 0; i < v.size(); ++i)
    for (int j = i + 1; j < v.size(); ++j) check(v[i], v[j]);
  for (int i = 0; i < n; ++i) {
    if (S.count(i) > 0) continue;
    for (int j = 0; j < v.size(); ++j) {
      check(i, v[j]);
    }
  }
  printf("%I64d\n", ans);
  return 0;
}
