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.*;

/**
 * Codeforces Beta Round #93 (Div. 2 Only), D
 * @author Roman Kosenko <madkite@gmail.com>
 */
public class Main {
	public static void main(String... args) throws IOException {
		long time = 0;
		if(args.length != 0) {
			System.setIn(new FileInputStream(args[0]));
			time = System.currentTimeMillis();
		} else if(!Boolean.parseBoolean(System.getProperty("ONLINE_JUDGE"))) {
			//main("in/C127D.1.txt");
			//main("in/C127D.2.txt");
			main("input.txt");
			return;
		}
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s = br.readLine();
		if(s.length() < 3) {
			System.out.println("Just a legend");
			return;
		}

		/*
		int result = -1;
		for(int i = s.length() - 2; i > 0; i--) {
			String temp = s.substring(0, i);
			int p = s.indexOf(temp, 1);
			if(p < s.length() - temp.length() - 1 && s.endsWith(temp)) {
				result = i;
				break;
			}
		}
		System.out.println(result > 0 ? s.substring(0, result) : "Just a legend");
		*/

		long[] h = Strings.getHashArray(s);
		for(int i = h.length - 3; i > 0; i--) {
			if(h[i] * Strings.getP(h.length - i - 1) != h[h.length - 1] - h[h.length - i - 1])
				continue;
			for(int j = h.length - i - 2; j > 0; j--) {
				if(h[i] * Strings.getP(j) == h[j + i] - h[j]) {
					String temp = s.substring(0, i);
					if(s.startsWith(temp) && s.startsWith(temp, j) && s.endsWith(temp)) {
						System.out.println(temp);
						return;
					}
				}
			}
		}
		System.out.println("Just a legend");

		if(time != 0)
			System.out.println(System.currentTimeMillis() - time);
	}
}
abstract class Strings {
	private static long[] p = new long[]{1, 67};
	public static long getP(int i) {
		return p[i];
	}
	public static void ensurePSize(int size) {
		if(p.length < size) {
			int i = p.length;
			System.arraycopy(p, 0, p = new long[size], 0, i);
			for(; i < p.length; i++)
				p[i] = p[i - 1] * p[1];
		}
	}
	public static long[] getHashArray(String s) {
		int length = s.length();
		ensurePSize(length);
		long[] result = new long[length + 1];
		for(int i = 0; i < length; i++)
			result[i + 1] = s.charAt(i) * p[i] + result[i];
		return result;
	}
}