Problem: Asterix, Obelix and their temporary buddies Suffix and Prefix has finally found the Harmony temple. However, its doors were firmly locked and even Obelix had no luck opening them.

A little later they found a string s, carved on a rock below the temple's gates. Asterix supposed that that's the password that opens the temple and read the string aloud. However, nothing happened. Then Asterix supposed that a password is some substring t of the string s.

Prefix supposed that the substring t is the beginning of the string s; Suffix supposed that the substring t should be the end of the string s; and Obelix supposed that t should be located somewhere inside the string s, that is, t is neither its beginning, nor its end.

Asterix chose the substring t so as to please all his companions. Besides, from all acceptable variants Asterix chose the longest one (as Asterix loves long strings). When Asterix read the substring t aloud, the temple doors opened. 

You know the string s. Find the substring t or determine that such substring does not exist and all that's been written above is just a nice legend.

Input

You are given the string s whose length can vary from 1 to 106 (inclusive), consisting of small Latin letters.

Output

Print the string t. If a suitable t string does not exist, then print "Just a legend" without the quotes.

Examples

Input

fixprefixsuffix


Output

fix

Input

abcdabc


Output

Just a legend

Solution (in JAVA):

Solution:
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.StringTokenizer;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 * @author Artem Gilmudinov
 */
public class Main {
	public static void main(String[] args) {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		Reader in = new Reader(inputStream);
		PrintWriter out = new PrintWriter(outputStream);
		TaskD solver = new TaskD();
		solver.solve(1, in, out);
		out.close();
	}
}

class TaskD {
    public void solve(int testNumber, Reader in, PrintWriter out) {
        String s = in.rl();
        int n = s.length();
        int[] pref = Utils.prefixFunction(s);
        int pr = pref[n - 1];
        if(pr == 0) {
            out.println("Just a legend");
            return;
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < pr; i++) {
            sb.append(s.charAt(i));
        }
        String t = sb.toString();
        boolean[] used = new boolean[t.length() + 1];
        int cur, max, pos;
        cur = t.length();
        while(cur != 0) {
            used[cur] = true;
            cur = pref[cur - 1];
        }
        max = pos = cur = 0;
        for(int i = 1; i < n - 1; i++) {
            while(cur != 0 && t.charAt(cur) != s.charAt(i)) {
                cur = pref[cur - 1];
            }
            if(s.charAt(i) == t.charAt(cur)) {
                ++cur;
            }
            if(max < cur && used[cur]) {
                max = cur;
                pos = i;
            }
            if(cur == t.length()) {
                cur = pref[t.length() - 1];
            }
        }
        if(max == 0) {
            out.println("Just a legend");
            return;
        }
        sb = new StringBuilder();
        for(int i = pos - max + 1; i <= pos; i++) {
            sb.append(s.charAt(i));
        }
        out.println(sb);
    }
}

class Reader {
    private BufferedReader in;

    public Reader(InputStream in) {
        this.in = new BufferedReader(new InputStreamReader(in));
    }

    public String rl() {
        try {
            return in.readLine();
        } catch(IOException e) {
            throw new RuntimeException(e);
        }
    }

}

class Utils {

    public static int[] prefixFunction(String s) {
        int n = s.length();
        int[] pref = new int[n];
        int cur = 0;
        for(int i = 1; i < n; i++) {
            while(cur != 0 && s.charAt(cur) != s.charAt(i)) {
                cur = pref[cur - 1];
            }
            if(s.charAt(cur) == s.charAt(i)) {
                ++cur;
            }
            pref[i] = cur;
        }
        return pref;
    }

}