#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;
    }
}