#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
void solve(){
int n;cin>>n;
vector<string>a(n+10);
for(int i=1;i<=n;i++)cin>>a[i];
int ans=0;
for(int i=1;i<=n;i++){
int j=i;
int flag=0;
string s=a[i];
while(a[j+1]==s){
j++;
}//j来到第一段的末尾
int jj=j;
if(a[j+1]!=s)flag=1;
ans=max(j-i+1,ans);
if(a[j+2]==s&&flag){//判断是否有第二段
j=j+2;
while(a[j+1]==s) j++;
ans=max(j-i,ans);//j此时在第二段的末尾,中间有一个不是s的,所以是i-j+1-1个
}
i=jj;
//回到第一段的末端而不是回到第二段的末端,防止下面样例的情况
// 9
// aa
// aa
// b
// aa
// aa
// b
// aa
// aa
// aa
}
cout<<ans;
}
int main(){
int T=1;//cin>>T;
while(T--){
solve();
cout<<endl;
}
}