#include <bits/stdc++.h>
using namespace std;
int n, tot;
int a[1000100];
int so[1000100];
set<pair<int, int> > S;
bool check() {
  for (int i = 0; i < tot; i++) {
    for (int j = -1; j <= 1; j++) {
      int pos = so[i] + j;
      if (pos == 0 || pos == n + 1) continue;
      if (pos % 2 == 1) {
        if (a[pos] >= a[pos - 1] || a[pos] >= a[pos + 1]) return false;
      } else {
        if (a[pos] <= a[pos - 1] || a[pos] <= a[pos + 1]) return false;
      }
    }
  }
  return true;
}
int main() {
  tot = 0;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  a[0] = 1e9;
  if (n % 2 == 1)
    a[n + 1] = 1e9;
  else
    a[n + 1] = -1;
  int x, y;
  for (int i = 1; i <= n; i++) {
    if (i % 2 == 1) {
      int F = 0;
      if (i + 1 <= n && a[i] >= a[i + 1]) F = 1;
      if (i - 1 >= 1 && a[i] >= a[i - 1]) F = 1;
      if (F) so[tot++] = i;
    } else {
      int F = 0;
      if (i + 1 <= n && a[i] <= a[i + 1]) F = 1;
      if (i - 1 >= 1 && a[i] <= a[i - 1]) F = 1;
      if (F) so[tot++] = i;
    }
  }
  if (tot > 6)
    cout << 0 << endl;
  else {
    long long ans = 0;
    for (int i = 0; i < tot; i++) {
      for (int j = 1; j <= n; j++) {
        if (so[i] == j) continue;
        swap(a[so[i]], a[j]);
        bool flag = check();
        if (j % 2 == 1) {
          if (a[j] >= a[j - 1] || a[j] >= a[j + 1]) flag = false;
        } else {
          if (a[j] <= a[j - 1] || a[j] <= a[j + 1]) flag = false;
        }
        if (flag) {
          pair<int, int> tmp = make_pair(min(so[i], j), max(so[i], j));
          if (S.count(tmp) == 0) {
            S.insert(tmp);
            ans++;
          }
        }
        swap(a[so[i]], a[j]);
      }
    }
    printf("%I64d\n", ans);
  }
  return 0;
}
