var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
while(lines.length){
let N = parseInt(lines.shift());
if(!N) break;
let amostras = lines.shift().trim().split(" ").map((x) => parseInt(x));
let picos = amostras.filter((atual, i) => {
let anterior = amostras[(i - 1 + N) % N];
let proximo = amostras[(i + 1) % N];
return (atual < anterior && atual < proximo) || (atual > anterior && atual > proximo);
});
console.log(picos.length);
}
while True:
try:
N = int(input())
if(N == 0):
break
amostras = [int(x) for x in input().strip().split(' ')]
picos = 0
for i in range(len(amostras)):
anterior = amostras[((i - 1) + N) % N]
proximo = amostras[(i + 1) % N]
if((amostras[i] < anterior and amostras[i] < proximo) or (amostras[i] > anterior and amostras[i] > proximo)):
picos += 1
print(picos)
except EOFError:
break
Sendo que, como se trata de um loop, o vizinho à esquerda da primeira magnitude é a última e o vizinho à direita da última magnitude é a primeira. Confira a página para entender melhor porque as operações (i + 1) % N e ((i - 1) + N) % N funcionam para acessarmos os vizinhos da direita e da esquerda respectivamente.