#include <bits/stdc++.h>
using namespace std;
const int N = 1500010;
int n, cnt, ans;
int a[N], bug[N], v[N];
map<pair<int, int>, int> vis;
bool check(int i) {
  if (!(i & 1)) {
    if (i < n)
      return a[i - 1] < a[i] && a[i + 1] < a[i];
    else
      return a[i - 1] < a[i];
  } else if (i > 1 && i < n)
    return a[i - 1] > a[i] && a[i + 1] > a[i];
  else if (i == 1)
    return a[i + 1] > a[i];
  else
    return a[i - 1] > a[i];
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i += 2) {
    if (i == 1 && a[i] >= a[i + 1]) {
      if (!v[i]) bug[++cnt] = i, v[i] = 1;
      if (!v[i + 1]) bug[++cnt] = i + 1, v[i + 1] = 1;
    } else if (i == n && a[i] >= a[i - 1]) {
      if (!v[i]) bug[++cnt] = i, v[i] = 1;
      if (!v[i - 1]) bug[++cnt] = i - 1, v[i - 1] = 1;
    } else if (i > 1 && i < n) {
      if (a[i] >= a[i + 1] && a[i] >= a[i - 1]) {
        if (!v[i]) bug[++cnt] = i, v[i] = 1;
        if (!v[i + 1]) bug[++cnt] = i + 1, v[i + 1] = 1;
        if (!v[i - 1]) bug[++cnt] = i - 1, v[i - 1] = 1;
      } else {
        if (a[i] >= a[i + 1]) {
          if (!v[i]) bug[++cnt] = i, v[i] = 1;
          if (!v[i + 1]) bug[++cnt] = i + 1, v[i + 1] = 1;
        }
        if (a[i] >= a[i - 1]) {
          if (!v[i]) bug[++cnt] = i, v[i] = 1;
          if (!v[i - 1]) bug[++cnt] = i - 1, v[i - 1] = 1;
        }
      }
    }
  }
  if (cnt > 6) {
    puts("0");
    return 0;
  }
  for (int i = 1; i <= cnt; i++)
    for (int j = 1; j <= n; j++) {
      if (a[j] == a[bug[i]]) continue;
      swap(a[j], a[bug[i]]);
      bool fl = 1;
      for (int k = 1; k <= cnt; k++)
        if (!check(bug[k])) fl = 0;
      if (!check(j)) fl = 0;
      if (fl) {
        pair<int, int> p = make_pair(min(bug[i], j), max(bug[i], j));
        if (!vis[p]) {
          ans++;
          vis[p] = 1;
        }
      }
      swap(a[j], a[bug[i]]);
    }
  printf("%d\n", ans);
  return 0;
}
