#include <bits/stdc++.h>
using namespace std;
bool is_ok(const vector<int>& t) {
  const int n = t.size();
  for (int i = 1; i < n; i++) {
    if (i & 1) {
      if (t[i - 1] >= t[i]) return false;
    } else {
      if (t[i - 1] <= t[i]) return false;
    }
  }
  return true;
}
bool is_ok(const vector<int>& t, int p) {
  const int n = t.size();
  if (p & 1) {
    if (0 <= p - 1 && t[p - 1] >= t[p]) return false;
    if (p + 1 < n && t[p + 1] >= t[p]) return false;
  } else {
    if (0 <= p - 1 && t[p - 1] <= t[p]) return false;
    if (p + 1 < n && t[p + 1] <= t[p]) return false;
  }
  return true;
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0);
  int n;
  cin >> n;
  vector<int> t(n);
  for (int i = 0; i < n; i++) {
    cin >> t[i];
  }
  vector<int> pos;
  for (int i = 1; i < n; i++) {
    if (i & 1) {
      if (t[i - 1] >= t[i]) pos.push_back(i);
    } else {
      if (t[i - 1] <= t[i]) pos.push_back(i);
    }
  }
  if (pos.size() >= 5) {
    cout << 0 << endl;
    return 0;
  }
  if (pos.size() == 4) {
    if (pos[0] != pos[1] - 1 || pos[2] != pos[3] - 1) {
      cout << 0 << endl;
      return 0;
    }
    swap(t[pos[0]], t[pos[2]]);
    cout << is_ok(t) << endl;
    return 0;
  }
  if (pos.size() == 3) {
    if (pos[0] + 1 != pos[1] && pos[1] + 1 != pos[2]) {
      cout << 0 << endl;
      return 0;
    }
    if (pos[0] + 1 == pos[1]) {
      int cnt = 0, p = pos[0];
      for (int i = pos[2] - 1; i <= pos[2]; i++) {
        swap(t[p], t[i]);
        cnt += is_ok(t);
        swap(t[p], t[i]);
      }
      cout << cnt << endl;
      return 0;
    } else {
      int cnt = 0, p = pos[1];
      for (int i = pos[0] - 1; i <= pos[0]; i++) {
        swap(t[p], t[i]);
        cnt += is_ok(t);
        swap(t[p], t[i]);
      }
      cout << cnt << endl;
      return 0;
    }
  }
  if (pos.size() == 2) {
    if (pos[0] + 1 != pos[1]) {
      int cnt = 0;
      for (int i = pos[0] - 1; i <= pos[0]; i++) {
        for (int j = pos[1] - 1; j <= pos[1]; j++) {
          swap(t[i], t[j]);
          cnt += is_ok(t);
          swap(t[i], t[j]);
        }
      }
      cout << cnt << endl;
      return 0;
    }
    int cnt = 0;
    for (int i = pos[0] - 1; i <= pos[0] - 1; i++) {
      for (int j = pos[0] + 1; j <= pos[0] + 1; j++) {
        swap(t[i], t[j]);
        cnt += is_ok(t);
        swap(t[i], t[j]);
      }
    }
    int p = pos[0];
    for (int i = 0; i < n; i++)
      if (i != p) {
        swap(t[i], t[p]);
        if (is_ok(t, i) && is_ok(t, p) && is_ok(t, p + 1)) {
          ++cnt;
        }
        swap(t[i], t[p]);
      }
    cout << cnt << endl;
    return 0;
  }
  assert(pos.size() == 1);
  int cnt = 0;
  int p = pos[0] - 1;
  swap(t[p], t[p + 1]);
  cnt += is_ok(t, p) && is_ok(t, p + 1);
  swap(t[p], t[p + 1]);
  for (int i = 0; i < n; i++)
    if (i != p && i != p + 1) {
      swap(t[i], t[p]);
      if (is_ok(t, i) && is_ok(t, p) && is_ok(t, p + 1)) {
        ++cnt;
      }
      swap(t[i], t[p]);
    }
  ++p;
  for (int i = 0; i < n; i++)
    if (i != p - 1 && i != p) {
      swap(t[i], t[p]);
      if (is_ok(t, i) && is_ok(t, p - 1) && is_ok(t, p)) {
        ++cnt;
      }
      swap(t[i], t[p]);
    }
  cout << cnt << endl;
  return 0;
}
