#include <bits/stdc++.h>
using namespace std;
long long int mod = 998244353;
long long int gcd(long long int a, long long int b) {
  return (b == 0) ? a : gcd(b, a % b);
}
long long int lcm(long long int a, long long int b) {
  return (a * b) / gcd(a, b);
}
template <class type>
type power(type x, long long int n) {
  type temp;
  long long int y = n;
  if (y == 0) return 1;
  temp = power(x, y / 2);
  return ((y % 2) ? ((y > 0) ? x * temp * temp : (temp * temp) / x)
                  : temp * temp);
}
void c_p_c() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
bool ispal(string s) {
  long long int n = s.length();
  for (long long int i = 0; i <= n / 2; i++) {
    if (s[i] != s[n - i - 1]) {
      return 0;
    }
  }
  return 1;
}
string longestprepal(string s) {
  string tmp = s;
  reverse(s.begin(), s.end());
  tmp += '@';
  tmp += s;
  long long int n = (long long int)tmp.length();
  long long int reset[n];
  long long int i = 0, j = -1;
  reset[0] = -1;
  while (i < n) {
    while (j >= 0 and tmp[j] != tmp[i]) {
      j = reset[j];
    }
    i++;
    j++;
    reset[i] = j;
  }
  return tmp.substr(0, reset[n - 1] + 1);
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  c_p_c();
  string x = "abcdfdcecba";
  long long int t;
  cin >> t;
  while (t--) {
    string str;
    cin >> str;
    string a = "", b = "";
    long long int n = str.length();
    long long int i;
    for (i = 0; i <= n / 2; i++) {
      if (str[i] == str[n - i - 1]) {
        a.push_back(str[i]);
      } else {
        break;
      }
    }
    b = a;
    reverse(b.begin(), b.end());
    if (i > n / 2) {
      cout << str << "\n";
      continue;
    }
    string tmp = str.substr(i, n - 2 * i);
    string op1 = longestprepal(tmp);
    reverse(tmp.begin(), tmp.end());
    string op2 = longestprepal(tmp);
    if (op1.length() < op2.length()) {
      op1 = op2;
    }
    cout << a + op1 + b << "\n";
  }
  return 0;
}
