#include <bits/stdc++.h>
using namespace std;
int digits(char* number){
int cnt=0;
for(int i=0; number[i]!='\0'; i++){
cnt++;
}
return cnt;
}
void generatePalindrome(char* number){
int k=0;
int checknum=0;
//if all the numbers are 9.
for(k=0; number[k]!='\0'; k++){
if(number[k]=='9'){
checknum++;
}
}
if(checknum==k){
number[0]='1';
for(int j=1; j<k; j++){
number[j]='0';
}
number[k]='1';
number[k+1]='\0';
return;
}
if(k==2 && (int)number[0]<(int)number[1]){
number[0]++;
number[1]=number[0];
return;
}
int middle = digits(number)/2;
//case::EVEN NUMBER of digits.
if(digits(number)%2==0){
//if the number to left of the middle is
//greater than the number in the right of the middle.
if((int)number[middle-1]>(int)number[middle]){
int i = middle-1, j = middle;
while(i>=0){
number[j]=number[i];
i--;
j++;
}
return;
}else{
//if the left of middle is less than or equal to right.
int i = middle-1, j = middle;
int temp1=i, temp2=j;
// if there are successive equal numbers in the middle
//check for the first unequal number to the left to be
//greater than the first unequal right.
if(number[temp1]==number[temp2] && temp1!=0){
while((int)number[temp1]==(int)number[temp2] && temp1!=-1){
temp1--;
temp2++;
}
//copy all numbers to the left to the right
if((int)number[temp1]>(int)number[temp2] && temp1!=-1){
while(temp1>=0){
number[temp2]=number[temp1];
temp1--;
temp2++;
}
return;
}
}
// special case if the number is 9,, make that number 0 and
// increse the next (!9) by 1.
if(number[i]!='9'){
number[i]++;
while(i>=0){
number[j]=number[i];
i--;
j++;
}
return;
}else{
int temp1=i;
while(number[temp1]=='9'){
number[temp1]='0';
temp1--;
}
number[temp1]++;
while(i>=0){
number[j]=number[i];
i--;
j++;
}
return;
}
}
}else{
//similar for ODD NUMBERS IN THE SAME ORDER AS EVEN NUNBERS;
//Except....increase the middle number by one if the number
//to the left is less than the number to the right.
if((int)number[middle-1]>(int)number[middle+1]){
int i=middle-1, j=middle+1;
while(i>=0){
number[j]=number[i];
i--;
j++;
}
return;
}else{
int i=middle-1, j=middle+1;
int temp1 = i, temp2=j;
if(number[middle]!='9'){
if(number[temp1]==number[temp2] && temp1!=0){
while((int)number[temp1]==(int)number[temp2] && temp1!=-1){
temp1--;
temp2++;
}
if((int)number[temp1]>(int)number[temp2] && temp1!=-1){
while(temp1>=0){
number[temp2]=number[temp1];
temp1--;
temp2++;
}
return;
}
}
number[middle]++;
while(i>=0){
number[j]=number[i];
i--;
j++;
}
return;
}else{
if(number[temp1]==number[temp2] && temp1!=0){
while((int)number[temp1]==(int)number[temp2] && temp1!=-1){
temp1--;
temp2++;
}
if((int)number[temp1]>(int)number[temp2] && temp1!=-1){
while(temp1>=0){
number[temp2]=number[temp1];
temp1--;
temp2++;
}
return;
}
}
number[middle]='0';
number[i]++;
while(i>=0){
number[j]=number[i];
i--;
j++;
}
return;
}
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin>>t;
cin.ignore();
while(t--){
char number[1000000];
cin.getline(number,1000000);
int checklead = 0;
if(number[0]=='0'){
for(int k=0; number[k]=='0'; k++){
checklead++;
}
}
if(digits(number)==0){
printf("\n");
continue;
}
if(digits(number+checklead)==1){
if(number[0+checklead]!='9'){
number[0+checklead]++;
}else{
number[0+checklead]='1';
number[1+checklead]='1';
number[2+checklead]='\0';
}
printf("%s\n", number+checklead);
continue;
}
generatePalindrome(number+checklead);
printf("%s\n", number+checklead);
}
return 0;
}