hash+二分
#include<cstdio>
#include<map>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=4e4+5;
const int seed=31;
typedef long long ll;
ll _base[maxn],_hash[maxn];
int len;
map<ll,ll> mp;
int m;
string s;
ll str_hash(int l,int r){
return _hash[r]-_hash[l-1]*_base[r-l+1];
}
int solved(int l){
mp.clear();
int ans=-1;
for(int i=0;i<=len-l;i++){
ll t=str_hash(i,i+l-1);
mp[t]++;
if(mp[t]>=m) ans=i;
}
return ans;
}
int main()
{
_base[0]=1;
for(int i=1;i<maxn;i++) _base[i]=_base[i-1]*seed;
while(cin>>m,m){
cin>>s;
len=s.length();
_hash[0]=s[0]-'a'+1;
for(int i=1;i<len;i++) _hash[i]=_hash[i-1]*seed+(s[i]-'a'+1);
int l=1,r=len-m+1,t,ans;
if(solved(l)==-1) {
cout<<"none"<<endl;
continue;
}
while(l<=r){
int mid=(l+r)>>1;
t=solved(mid);
if(t!=-1){
l=mid+1;
ans=t;
}
else r=mid-1;
}
cout<<r<<" "<<ans<<endl;
}
return 0;
}