#include <bits/stdc++.h>
using namespace std;
const int inf = (1 << 30) - 1;
const long long linf = (1ll << 62) - 1;
const int N = 2e5 + 100;
int n;
int a[N];
bool bad[N];
int value[N];
int hucountb = 0;
inline void upd(int x) {
  bad[x] = false;
  if (x & 1) {
    if (x > 0 && value[x] <= value[x - 1]) {
      bad[x] = true;
    }
    if (x < n - 1 && value[x] <= value[x + 1]) {
      bad[x] = true;
    }
  } else {
    if (x > 0 && value[x] >= value[x - 1]) {
      bad[x] = true;
    }
    if (x < n - 1 && value[x] >= value[x + 1]) {
      bad[x] = true;
    }
  }
}
inline void update(int x, int val) {
  if (x > 0) {
    hucountb -= bad[x - 1];
  }
  hucountb -= bad[x];
  if (x < n - 1) {
    hucountb -= bad[x + 1];
  }
  value[x] = val;
  if (x > 0) {
    upd(x - 1);
    hucountb += bad[x - 1];
  }
  upd(x);
  hucountb += bad[x];
  if (x < n - 1) {
    upd(x + 1);
    hucountb += bad[x + 1];
  }
}
inline bool good(int i, int j) {
  int a = value[i], b = value[j];
  update(i, b);
  update(j, a);
  bool res = hucountb == 0;
  update(i, a);
  update(j, b);
  return res;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  for (int i = 0; i < n; i++) {
    value[i] = i % 2;
  }
  for (int i = 0; i < n; i++) {
    update(i, a[i]);
  }
  vector<int> bad;
  for (int i = 0; i < n; i++) {
    if (::bad[i] || (i > 0 && ::bad[i - 1]) || (i < n - 1 && ::bad[i + 1])) {
      bad.push_back(i);
    }
  }
  if (((int)(bad).size()) > 100) {
    puts("0");
    return 0;
  }
  int ans = 0;
  for (int i = 0; i < ((int)(bad).size()); i++) {
    for (int j = 0; j < n; j++) {
      if (good(bad[i], j)) {
        ans += ::bad[j] ? 1 : 2;
      }
    }
  }
  cout << ans / 2 << endl;
  return 0;
}
