#include <bits/stdc++.h>
using namespace std;
const int maxn = 150005;
const int INF = 0x3f3f3f3f, MOD = 1e9 + 7;
const double pi = 3.14159265359;
int n, t[maxn], ans, cnt;
vector<int> v, vp;
inline bool check(const vector<int> &vt) {
  for (const int &i : vt) {
    if (i == 0) {
      if (t[i] >= t[i + 1])
        return false;
      else
        continue;
    } else if (i == n - 1) {
      if (i % 2 == 0 && t[i] >= t[i - 1])
        return false;
      else if (i % 2 == 1 && t[i] <= t[i - 1])
        return false;
      else
        continue;
    } else if (i % 2 == 1 && (t[i] <= t[i - 1] || t[i] <= t[i + 1]))
      return false;
    else if (i % 2 == 0 && (t[i] >= t[i - 1] || t[i] >= t[i + 1]))
      return false;
  }
  return true;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &t[i]);
  if (t[0] < t[1])
    vp.push_back(0);
  else {
    cnt++;
    v.push_back(0);
  }
  if ((n - 1) % 2 == 0 && t[n - 1] < t[n - 2])
    vp.push_back(n - 1);
  else if ((n - 1) % 2 == 1 && t[n - 1] > t[n - 2])
    vp.push_back(n - 1);
  else {
    cnt++;
    v.push_back(n - 1);
  }
  for (int i = int(1); i < int(n - 1); i++) {
    if (i % 2 == 0 && t[i] < t[i - 1] && t[i] < t[i + 1])
      vp.push_back(i);
    else if (i % 2 == 1 && t[i] > t[i - 1] && t[i] > t[i + 1])
      vp.push_back(i);
    else {
      cnt++;
      v.push_back(i);
    }
  }
  if (v.size() > 6) {
    printf("%d\n", 0);
    exit(0);
  }
  for (int i = 0; i < v.size() - 1; i++) {
    for (int j = int(i + 1); j < int(v.size()); j++) {
      swap(t[v[i]], t[v[j]]);
      if (check(v)) ans++;
      swap(t[v[i]], t[v[j]]);
    }
  }
  for (const int &i : v) {
    for (const int &j : vp) {
      swap(t[i], t[j]);
      vector<int> vt(v);
      vt.push_back(j);
      if (check(vt)) ans++;
      swap(t[i], t[j]);
    }
  }
  printf("%d\n", ans);
  return 0;
}
