第6个点挂了((((
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+6;
const int IM=2147483647;
const long long LLM=9223372036854775807;
inline int read()
{
int x=0,y=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-') y=-y;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^'0');c=getchar();}
return x*y;
}
int n,a[N],nex[N],vis[N];
int x,y;
signed main()
{
n=read();
for(int i=1;i<=n;i++) a[i]=read();
for(int i=n;i;i--)
{
nex[i]=(!vis[a[i]])?n+1:vis[a[i]];
vis[a[i]]=i;
}
if(n==1) return puts("1"),0;
x=a[1],y=a[2];
int idx=1,idy=2;
int ans=2;
for(int i=3;i<=n;i++)
{
if(a[i]==x) ans+=(a[i]!=y),y=a[i],idy=i;
else if(a[i]==y) ans++,x=a[i],idx=i;
else
{
ans++;
nex[idx]>nex[idy]?y=a[i],idy=a[i]:x=a[i],idx=a[i];
}
}
printf("%d\n",ans);
return 0;
}