#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  std::vector<int> t(n);
  for (int(i) = 0; (i) < (int)(n); ++(i)) cin >> t[i];
  vector<int> c;
  if (t[0] >= t[1]) c.push_back(0);
  for (int i = 1; i <= n - 2; ++i) {
    if (i % 2 == 1 && (t[i - 1] >= t[i] || t[i] <= t[i + 1])) c.push_back(i);
    if (i % 2 == 0 && (t[i - 1] <= t[i] || t[i] >= t[i + 1])) c.push_back(i);
  }
  if (n % 2 == 0 && t[n - 2] >= t[n - 1]) c.push_back(n - 1);
  if (n % 2 == 1 && t[n - 2] <= t[n - 1]) c.push_back(n - 1);
  set<pair<int, int> > s;
  if (c.size() <= 6) {
    for (const auto &x : c) {
      for (int(i) = 0; (i) < (int)(n); ++(i)) {
        if (i == x) continue;
        swap(t[i], t[x]);
        bool valid = true;
        for (const auto &y : c) {
          if (y == 0) {
            if (t[0] >= t[1]) valid = false;
          } else if (y == n - 1) {
            if (n % 2 == 0 && t[n - 2] >= t[n - 1]) valid = false;
            if (n % 2 == 1 && t[n - 2] <= t[n - 1]) valid = false;
          } else {
            if (y % 2 == 1 && (t[y - 1] >= t[y] || t[y] <= t[y + 1]))
              valid = false;
            if (y % 2 == 0 && (t[y - 1] <= t[y] || t[y] >= t[y + 1]))
              valid = false;
          }
        }
        if (i == 0) {
          if (t[0] >= t[1]) valid = false;
        } else if (i == n - 1) {
          if (n % 2 == 0 && t[n - 2] >= t[n - 1]) valid = false;
          if (n % 2 == 1 && t[n - 2] <= t[n - 1]) valid = false;
        } else {
          if (i % 2 == 1 && (t[i - 1] >= t[i] || t[i] <= t[i + 1]))
            valid = false;
          if (i % 2 == 0 && (t[i - 1] <= t[i] || t[i] >= t[i + 1]))
            valid = false;
        }
        if (valid) s.insert(pair<int, int>(min(i, x), max(i, x)));
        swap(t[i], t[x]);
      }
    }
  }
  std::cout << s.size() << std::endl;
  return 0;
}
