#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; void solve() { string s; cin >> s; int n = s.length(); string d = "_"; for (int i = 0; i < n; ++i) { d += s[i]; d += "_"; } n = d.length(); vector<int> D(n); int l = 0; int r = -1; for (int i=0; i < n; ++i) { int k = 0; if (i <= r) k = min(D[l + r - i], r - i) + 1; while (true) if (k <= i && i + k < n && d[i+k] == d[i-k]) ++k; else break; --k; D[i] = k; if (r < k + i) { r = i + k; l = i - k; } } int p = 0; for (int i = 0; i < n; ++i) { //cout << D[i] << ' '; if (D[i] > D[p]) p = i; } //cout << endl; for (int j = p - D[p]; j <= p + D[p]; ++j) { if (d[j] != '_') cout << d[j]; } cout << endl; } int main() { solve(); return 0; }