func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long inf = 1e18;   const long long N = 100001;   long long mod = 1000000007;   long long min(long long a, long long b) {     if (a < b)       return a;     else       return b;   }   long long max(long long a, long long b) {     if (a > b)       return a;     else       return b;   }   long long power(long long a, long long b) {     long long res = 1;     a %= mod;     assert(b >= 0);     for (; b; b >>= 1) {       if (b & 1) res = res * a % mod;       a = a * a % mod;     }     return res;   }   long long gcd(long long p, long long q) {     if (p % q == 0)       return q;     else {       return gcd(q, p % q);     }   }   long long mul(long long a, long long b) {     return ((a % mod) * (b % mod)) % mod;   }   long long sub(long long a, long long b) {     return (((a - b) % mod) + mod) % mod;   }   vector<long long> kmp(string s) {     long long n = s.size();     vector<long long> ans(n);     long long len = 0;     for (long long i = 1; i < n; i++) {       while (len > 0 && s[len] != s[i]) len = ans[len - 1];       len += (s[i] == s[len]);       ans[i] = len;     }     return ans;   }   void solve() {     string s;     cin >> s;     vector<long long> ans = kmp(s);     if (ans.back() == 0) {       cout <<  Just a legend  <<   n ;       return;     }     for (long long i = 1; i < s.size() - 1; i++) {       if (ans[i] == ans.back()) {         cout << s.substr(0, ans[i]);         cout <<   n ;         return;       }     }     if (ans[ans.back() - 1] == 0)       cout <<  Just a legend ;     else       cout << s.substr(0, ans[ans.back() - 1]);   }   signed main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long t = 1;     for (long long i = 0; i < t; i++) {       solve();     }     return 0;   }   