(题目忘记是哪道了)
#include<bits/stdc++.h>
using namespace std;
string s;
int len,nxt[1000005],cnt[1000005];
void get_next(string s) {
int i=0,j=-1;
nxt[0]=-1;
int len=s.size();
while(i<len) {
if(j==-1||s[i]==s[j]) nxt[++i]=++j;
else j=nxt[j];
}
}
int main() {
cin>>s;
int len=s.size();
get_next(s);
for(int i=1; i<len; i++) cnt[nxt[i]]++;
cout<<" ";
for(int i=0;i<len;i++) cout<<s[i]<<" ";
cout<<endl;
for(int i=0;i<=len;i++) cout<<nxt[i]<<" ";
if(nxt[len]<=0) return cout<<"Just a legend",0;
if(cnt[nxt[len]]) return cout<<s.substr(0,nxt[len]),0;
if(nxt[nxt[len]]>0) return cout<<s.substr(0,nxt[nxt[len]]),0;
return cout<<"Just a legend",0;
}