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.*;
import java.util.*;

public class Main {

   // static class Scanner {
   // StreamTokenizer in;
   // boolean forceMode = false;
   //
   // Scanner(InputStream is, String codePage, boolean forceMode) {
   // in = new StreamTokenizer(new BufferedReader(new InputStreamReader(is)));
   // if (!forceMode) {
   // in.resetSyntax();
   // in.wordChars(33, 255);
   // in.whitespaceChars(0, 32);
   // }
   // }
   //
   // Scanner(InputStream is, String codePage) {
   // in = new StreamTokenizer(new BufferedReader(new InputStreamReader(is)));
   // if (!forceMode) {
   // in.resetSyntax();
   // in.wordChars(33, 255);
   // in.whitespaceChars(0, 32);
   // }
   // }
   //
   // String next() {
   // try {
   // in.nextToken();
   // return in.sval;
   // } catch (Exception e) {
   // throw new Error();
   // }
   // }
   //
   // int nextInt() {
   // if (forceMode) {
   // try {
   // in.nextToken();
   // return (int) in.nval;
   // } catch (Exception e) {
   // throw new Error();
   // }
   // } else {
   // return Integer.parseInt(next());
   // }
   // }
   //
   // long nextLong() {
   // if (forceMode) {
   // throw new Error("No long at force mod!");
   // } else {
   // return Long.parseLong(next());
   // }
   //
   // }
   //
   // double nextDouble() {
   // if (forceMode) {
   // try {
   // in.nextToken();
   // return in.nval;
   // } catch (Exception e) {
   // throw new Error();
   // }
   // } else {
   // return Double.parseDouble(next());
   // }
   // }
   // }

   static class Assertion {
      static void checkRE(boolean e) {
         if (!e) {
            throw new Error();
         }
      }

      static void checkTL(boolean e) {
         if (!e) {
            int idx = 1;
            while (idx > 0) {
               idx++;
            }
         }
      }
   }

   Scanner in;
   PrintWriter out;

   void solve() {
      String st = in.nextLine();
      char line[] = st.toCharArray();
      int n = line.length;
      int pi[] = new int[n];
      for (int i = 1; i < n; i++) {
         int j = pi[i - 1];
         while (j > 0 && line[i] != line[j]) {
            j = pi[j - 1];
         }
         if (line[i] == line[j]) {
            j++;
         }
         pi[i] = j;
      }
      boolean haveMaxCommonPrefixSuffixLen[] = new boolean[n];
      for (int i = 1; i < n - 1; i++) {
         haveMaxCommonPrefixSuffixLen[pi[i]] = true;
      }
      for (int maxLen = pi[n - 1]; maxLen > 0; maxLen = pi[maxLen - 1]) {
         if (haveMaxCommonPrefixSuffixLen[maxLen]) {
            out.print(st.substring(0, maxLen));
            return;
         }
      }
      out.println("Just a legend");
   }

   final static String fileName = "";

   void run() {
      // try {
      // in = new Scanner(new FileInputStream(fileName + ".in"), "ISO-8859-1");
      // out = new PrintWriter(fileName + ".out", "ISO-8859-1");
      // } catch (FileNotFoundException e) {
      // throw new Error(e);
      //
      // } catch (UnsupportedEncodingException e) {
      // throw new Error(e);
      // }
      in = new Scanner(System.in);
      out = new PrintWriter(System.out);
      try {
         solve();
      } catch (Exception e) {
         throw new Error(e);
      } finally {
         out.close();
      }
   }

   public static void main(String[] args) {
      new Main().run();
   }
}