#include<iostream>
using namespace std;
const int N(100005);
int a[N];
int solve(int n)
{
if (n==1||n==2&&a[0]==a[1]) return 1;
if (n==2) return 2;
int ans(1),k=1;
while (a[k]==a[k-1]&&k<n) k++; //去掉数列前面多余的相同数据
bool flag=(a[k]>a[k-1]);
for (int i=k+1;i<n;i++)
{
if (a[i]==a[i-1]) continue;
if ((a[i]>a[i-1])!=flag)
ans++,flag=!flag;
}
ans++;
return ans;
}
int main()
{
//ifstream cin("flower.in");
//ofstream cout("flower.out");
int n;
cin>>n;
for (int i=0;i<n;i++) cin>>a[i];
int ans(0);
cout<<solve(n)<<endl;
return 0;
}
/**************************************************************
Problem: 2328
User: admin
Language: C++
Result: Accepted
Time:86 ms
Memory:2464 kb
****************************************************************/