#include<bits/stdc++.h>
using namespace std;
using ll=long long;

int dp[5005][5005];
int main(){
    int N;string S;cin>>N>>S;
    for(int i=N-1;i>=0;i--){
        for(int j=N-1;j>=0;j--)if(S.at(i)==S.at(j))dp[i][j]=dp[i+1][j+1]+1;    
    }
    int ans=0;
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            if(i>=j)continue;
            int now=min(dp[i][j],j-i);
            ans=max(ans,now);
        }
    }
    cout<<ans<<endl;

    return 0;
}