//201604-1
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++)scanf("%d", &arr[i]);
int count = 0;
for (int i = 1; i < n - 1; i++)
if ((arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) || (arr[i] < arr[i - 1] && arr[i] < arr[i + 1]))
count++;printf("%d\n", count);
return 0;}
//201604-1
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;scanf("%d", &n);
vector<int> v(n);
for (int i = 0; i < n; i++)scanf("%d", &v[i]);
int res = 0;
for (int i = 1; i < n - 1; i++)
if ((v[i] > v[i - 1] && v[i] > v[i + 1]) || (v[i] < v[i - 1] && v[i] < v[i + 1]))
res++;printf("%d\n", res);
return 0;}
//201604-2
#include <iostream>
#include <cstdio>
const int ROW = 15;
const int COL = 10;
const int N = 4;
int board[ROW + 1][COL];
int block[N][N];
struct{
int row, col;} coords[N];
using namespace std;
int main(){
int row, col;
// 输入数据
for (int i = 0; i < ROW; i++)
for (int j = 0; j < COL; j++)scanf("%d", &board[i][j]);
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)scanf("%d", &block[i][j]);scanf("%d", &col);
// 提取小方块坐标
int k = 0;
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
if (block[i][j] == 1){
coords[k].row = i;
coords[k].col = j;
k++;}
// 模拟小方块落下过程
row = 0;
col--;
bool flag;
for (;;){
flag = false;
// 0 1 2 3
//遍历每个小方块
for (int i = 0; i < N; i++)
if (board[row + coords[i].row][col + coords[i].col] == 1){
flag = true;
break;}
if (flag)
break;
row++;}
row--;
// 合并小方块到方格
for (int i = 0; i < N; i++)
board[row + coords[i].row][col + coords[i].col] = 1;
// 输出结果
for (int i = 0; i < ROW; i++){
for (int j = 0; j < COL; j++){
if (j != 0)printf(" ");printf("%d", board[i][j]);}printf("\n");}
return 0;}
//201604-2
#include <bits/stdc++.h>
using namespace std;
int main(){
vector<vector<int>> v(15);
for (int i = 0; i < v.size(); i++)
v[i].resize(10);
for (int i = 0; i < v.size(); i++)
for (int j = 0; j < v[i].size(); j++){scanf("%d", &v[i][j]);
if (v[i][j] == 1)
v[i][j] = 2;}
vector<vector<int>> temp(4);
for (int i = 0; i < temp.size(); i++)
temp[i].resize(4);
vector<int> dpRow, dpCol;
for (int i = 0; i < temp.size(); i++)
for (int j = 0; j < temp[i].size(); j++)scanf("%d", &temp[i][j]);
int col;scanf("%d", &col);
col--;
for (int i = 0; i < 4; i++){
int tempCol = 0;
for (int j = col; j < col + 4; j++){
v[i][j] = temp[i][tempCol++];
if (v[i][j] == 1)
dpRow.emplace_back(i), dpCol.emplace_back(j);}}
// for (int i = 0; i < v.size(); i++){
// for (int j = 0; j < v[i].size(); j++)
// printf("%d\t", v[i][j]);
// printf("\n");
// }
// 模拟方块下降
bool flag = true;
while (flag){
for (int i = 0; i < 4; i++)
if (dpRow[i] == 14 || v[dpRow[i] + 1][dpCol[i]] == 2)
flag = false;
if (flag)
for (int i = 0; i < 4; i++)
dpRow[i]++;}
for (int i = 0; i < 4; i++)
v[dpRow[i]][dpCol[i]] = 2;
for (int i = 0; i < v.size(); i++)
for (int j = 0; j < v[i].size(); j++)
if (v[i][j] == 1)
v[i][j] = 0;
else if (v[i][j] == 2)
v[i][j] = 1;
for (int i = 0; i < v.size(); i++){
for (int j = 0; j < v[i].size(); j++)printf("%d\t", v[i][j]);printf("\n");}
return 0;}