#include<bits/stdc++.h>
using namespace std;
int n,m,s[5001],t[5001];
int main(){
freopen("lcp.in","r",stdin);
freopen("lcp.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;++i) cin>>s[i];
if(n<=5&&m<=5){
int maxa=0;
for(int i=1;i<=n;++i) maxa=max(maxa,s[i]);
int ans=0;
stack<pair<int,string>> s;
s.push(make_pair(1,""));
while(!s.empty()){
pair<int,string> copy=s.top();
s.pop();
if(copy.first==m+1){
int tmp=0;
for(int i=1;i<=m;++i){
int len=0;
while(i+len<=m&&len<n&&int(copy.second[i+len-1]-'0')==s[len+1]) ++len;
tmp+=len;
}
ans=max(ans,tmp);
continue;
}
for(int i=1;i<=maxa;++i){
s.push(make_pair(copy.first+1,copy.second+char('0'+i)));
}
}
cout<<ans;
return 0;
}
int pos=0,mxl=0;
for(int i=2;i<=n;++i){
int len=0;
int j=0;
while(i+j<=n&&s[j+1]==s[i+j]){
++j;
++len;
}
--j;
if(len>mxl){
mxl=len;
pos=i;
}
}
for(int i=1;i<=min(m,pos);++i) t[i]=s[i];
for(int i=0;i+n<=m;++i){
t[i+n]=s[n-pos+i%(n-pos+2)+1];
}
int ans=0;
for(int i=1;i<=m;++i){
int len=0;
while(i+len<=m&&len<n&&t[i+len]==s[len+1]) ++len;
ans=ans+len;
}
cout<<ans;
return 0;
}