func_code_string: #include <bits/stdc++.h>   using namespace std;   int num[150000];   void Sum(int i, int op, int n, int &sum) {     if (i != op && i > 0 && i <= n && op > 0 && op <= n) {       swap(num[i], num[op]);       if ((i & 1) && (op & 1)) {         if ((i > 1 && num[i] < num[i - 1] || i == 1) &&             (i < n && num[i] < num[i + 1] || i == n) &&             (op == 1 || op > 1 && num[op] < num[op - 1]) &&             (op == n || op < n && num[op] < num[op + 1]))           sum++;       } else if (!(i & 1) && (op & 1)) {         if ((i > 1 && num[i] > num[i - 1] || i == 1) &&             (i < n && num[i] > num[i + 1] || i == n) &&             (op == 1 || op > 1 && num[op] < num[op - 1]) &&             (op == n || op < n && num[op] < num[op + 1]))           sum++;       } else if ((i & 1) && !(op & 1)) {         if ((i > 1 && num[i] < num[i - 1] || i == 1) &&             (i < n && num[i] < num[i + 1] || i == n) &&             (op == 1 || op > 1 && num[op] > num[op - 1]) &&             (op == n || op < n && num[op] > num[op + 1]))           sum++;       } else {         if ((i > 1 && num[i] > num[i - 1] || i == 1) &&             (i < n && num[i] > num[i + 1] || i == n) &&             (op == 1 || op > 1 && num[op] > num[op - 1]) &&             (op == n || op < n && num[op] > num[op + 1]))           sum++;       }       swap(num[i], num[op]);     }   }   void Solve(int n, int minx[], int mins, int &sum) {     if (mins == 0) {       int op = minx[0];       for (int i = 1; i <= n; i++) Sum(i, op, n, sum);       op++;       if (op <= n) {         for (int i = 1; i <= n; i++) Sum(i, op, n, sum);       }       int sum1 = sum;       Sum(minx[0], minx[0] + 1, n, sum);       if (sum1 < sum) sum -= 2;     } else if (mins == 1) {       if (minx[0] + 1 == minx[1]) {         Sum(minx[0], minx[1] + 1, n, sum);         for (int i = 1; i <= n; i++) Sum(i, minx[1], n, sum);       } else {         Sum(minx[0], minx[1], n, sum);         Sum(minx[0], minx[1] + 1, n, sum);         Sum(minx[0] + 1, minx[1], n, sum);         Sum(minx[0] + 1, minx[1] + 1, n, sum);       }     } else if (mins == 2) {       if (minx[0] + 1 == minx[1] && minx[1] + 1 == minx[2]) {         Sum(minx[0], minx[2], n, sum);         Sum(minx[1], minx[2], n, sum);         Sum(minx[1], minx[2] + 1, n, sum);       } else if (minx[0] + 1 == minx[1]) {         Sum(minx[1], minx[2], n, sum);         Sum(minx[1], minx[2] + 1, n, sum);       } else if (minx[1] + 1 == minx[2]) {         Sum(minx[0], minx[2], n, sum);         Sum(minx[0] + 1, minx[2], n, sum);       }     } else if (minx[0] + 1 == minx[1] && minx[2] + 1 == minx[3]) {       Sum(minx[1], minx[3], n, sum);     }   }   int main() {     int n;     while (~scanf( %d , &n) && n) {       int sum = 0;       for (int i = 1; i <= n; i++) scanf( %d , &num[i]);       int minx[110], mins = -1;       for (int i = 1; i <= n - 1; i++) {         if (i & 1) {           if (num[i] >= num[i + 1] && mins < 100) minx[++mins] = i;         } else {           if (num[i] <= num[i + 1] && mins < 100) minx[++mins] = i;         }       }       if (mins >= 4 || mins < 0)         printf( 0 n );       else {         Solve(n, minx, mins, sum);         printf( %d n , sum);       }     }     return 0;   }   