#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define Bit(mask , i) ((mask >> i) & 1)
#define fi first
#define se second
#define _LOG2(nl) 31 - __builtin_clz(nl)
#define c_bit(nl) __builtin_popcount(nl)
#define li pair<long long , int>
#define db double
#define onBit(mask , i) (mask | (1 << i))
#define offBit(mask , i) (mask & (~(1 << i)))
 
const long long MOD = 1e9 + 7;
const long long INF = 1e14;
const int N = 1e6 + 7;
int pre[N] , z[N] , kmp[N];
string s;
int n;
 
void inp(){
    cin >> s;
    n = s.size();
    s = "L" + s;
}
 
void solve(){
    int k = kmp[1] = 0;
    for (int i = 2 ; i <= n ; ++i){
        while (k > 0 && s[i] != s[k + 1]) k = kmp[k];
        kmp[i] = s[i] == s[k + 1] ? ++k : 0;
    }
    for (int i = 2 , l = 2 , r = 1 ; i <= n ; ++i){
        if (i <= r)
            z[i] = min(r - i + 1 , z[i - l + 1]);
        while (i + z[i] <= n && s[1 + z[i]] == s[i + z[i]])
            ++z[i];
        if (i + z[i] - 1 > r){
            l = i;
            r = i + z[i] - 1;
        }
    }
    for (int i = 1 ; i <= n ; ++i) if (z[i] != 0){
        ++pre[1];
        --pre[z[i] + 1];
    }
    for (int i = 1 ; i <= n ; ++i){
        pre[i] += pre[i - 1];
    }
    k = kmp[n];
    while (k > 0){
        if (pre[k] < 2){
            k = kmp[k];
            continue;
        }
        for (int i = 1 ; i <= k ; ++i) cout << s[i];
        return;
    }
    cout << "No solution!";
}
 
int main(){
//	freopen("xhmax.inp" , "r" , stdin);
//	freopen("xhmax.out" , "w" , stdout);
    faster;
    inp();
    solve();
    return 0;
}
 
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdGVyIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpCiNkZWZpbmUgQml0KG1hc2sgLCBpKSAoKG1hc2sgPj4gaSkgJiAxKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgX0xPRzIobmwpIDMxIC0gX19idWlsdGluX2NseihubCkKI2RlZmluZSBjX2JpdChubCkgX19idWlsdGluX3BvcGNvdW50KG5sKQojZGVmaW5lIGxpIHBhaXI8bG9uZyBsb25nICwgaW50PgojZGVmaW5lIGRiIGRvdWJsZQojZGVmaW5lIG9uQml0KG1hc2sgLCBpKSAobWFzayB8ICgxIDw8IGkpKQojZGVmaW5lIG9mZkJpdChtYXNrICwgaSkgKG1hc2sgJiAofigxIDw8IGkpKSkKCmNvbnN0IGxvbmcgbG9uZyBNT0QgPSAxZTkgKyA3Owpjb25zdCBsb25nIGxvbmcgSU5GID0gMWUxNDsKY29uc3QgaW50IE4gPSAxZTYgKyA3OwppbnQgcHJlW05dICwgeltOXSAsIGttcFtOXTsKc3RyaW5nIHM7CmludCBuOwoKdm9pZCBpbnAoKXsKICAgIGNpbiA+PiBzOwogICAgbiA9IHMuc2l6ZSgpOwogICAgcyA9ICJMIiArIHM7Cn0KCnZvaWQgc29sdmUoKXsKICAgIGludCBrID0ga21wWzFdID0gMDsKICAgIGZvciAoaW50IGkgPSAyIDsgaSA8PSBuIDsgKytpKXsKICAgICAgICB3aGlsZSAoayA+IDAgJiYgc1tpXSAhPSBzW2sgKyAxXSkgayA9IGttcFtrXTsKICAgICAgICBrbXBbaV0gPSBzW2ldID09IHNbayArIDFdID8gKytrIDogMDsKICAgIH0KICAgIGZvciAoaW50IGkgPSAyICwgbCA9IDIgLCByID0gMSA7IGkgPD0gbiA7ICsraSl7CiAgICAgICAgaWYgKGkgPD0gcikKICAgICAgICAgICAgeltpXSA9IG1pbihyIC0gaSArIDEgLCB6W2kgLSBsICsgMV0pOwogICAgICAgIHdoaWxlIChpICsgeltpXSA8PSBuICYmIHNbMSArIHpbaV1dID09IHNbaSArIHpbaV1dKQogICAgICAgICAgICArK3pbaV07CiAgICAgICAgaWYgKGkgKyB6W2ldIC0gMSA+IHIpewogICAgICAgICAgICBsID0gaTsKICAgICAgICAgICAgciA9IGkgKyB6W2ldIC0gMTsKICAgICAgICB9CiAgICB9CiAgICBmb3IgKGludCBpID0gMSA7IGkgPD0gbiA7ICsraSkgaWYgKHpbaV0gIT0gMCl7CiAgICAgICAgKytwcmVbMV07CiAgICAgICAgLS1wcmVbeltpXSArIDFdOwogICAgfQogICAgZm9yIChpbnQgaSA9IDEgOyBpIDw9IG4gOyArK2kpewogICAgICAgIHByZVtpXSArPSBwcmVbaSAtIDFdOwogICAgfQogICAgayA9IGttcFtuXTsKICAgIHdoaWxlIChrID4gMCl7CiAgICAgICAgaWYgKHByZVtrXSA8IDIpewogICAgICAgICAgICBrID0ga21wW2tdOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgaSA9IDEgOyBpIDw9IGsgOyArK2kpIGNvdXQgPDwgc1tpXTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBjb3V0IDw8ICJObyBzb2x1dGlvbiEiOwp9CgppbnQgbWFpbigpewovLwlmcmVvcGVuKCJ4aG1heC5pbnAiICwgInIiICwgc3RkaW4pOwovLwlmcmVvcGVuKCJ4aG1heC5vdXQiICwgInciICwgc3Rkb3V0KTsKICAgIGZhc3RlcjsKICAgIGlucCgpOwogICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Cg==