#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
bool all9(int num[],int n)
{
for(int i=0;i<n;i++)
{
if(num[i]!=9)
return false;
}
return true;
}
void printnum(int num[],int n)
{
for(int i=0;i<n;i++)
{
printf("%d",num[i]);
}
printf("\n");
}
void genNextP(int num[],int n)
{
int mid = n/2;
int l=mid-1;
int r=(n%2)?mid+1:mid;
bool flag;
if(all9(num,n))
{
printf("1");
for(int i=1;i<n;i++)
{
printf("0");
}
printf("1\n");
}
else
{
while(l>=0&&num[l]==num[r])
{
l--;
r++;
}
if(l<0 || num[l]<num[r]) //case 1: given is palindrome
{
flag = true;
}
while(l>=0)
{num[r]=num[l];l--;r++;}
if(flag)
{
int carry=1;
l=mid-1;
r=(n%2)?mid+1:mid;
if((n%2))
{
num[mid]+=carry;
carry=(num[mid])/10;
num[mid]=(num[mid])%10;
}
while(l>=0){
num[l]+=carry;
carry=(num[l])/10;
num[l]=(num[l])%10;
num[r]=num[l];
l--;r++;
}
}
printnum(num,n);
}
}
int main()
{
int num[1000007],t;
unsigned long int l;
char s[1000007];
scanf("%d",&t);
while(t--)
{
scanf("%s",s);
l=strlen(s);
for(unsigned long int i=0;i<l;i++)
num[i]=s[i]-48;
genNextP(num,l);
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPGNzdHJpbmc+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBhbGw5KGludCBudW1bXSxpbnQgbikKewogICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBpZihudW1baV0hPTkpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9Cgp2b2lkIHByaW50bnVtKGludCBudW1bXSxpbnQgbikKewogICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiJWQiLG51bVtpXSk7CiAgICAgICAgfQogICAgcHJpbnRmKCJcbiIpOwoKfQoKdm9pZCBnZW5OZXh0UChpbnQgbnVtW10saW50IG4pCnsKICAgIGludCBtaWQgPSBuLzI7CiAgICBpbnQgbD1taWQtMTsKICAgIGludCByPShuJTIpP21pZCsxOm1pZDsKICAgIGJvb2wgZmxhZzsKICAgIGlmKGFsbDkobnVtLG4pKQogICAgewogICAgICAgIHByaW50ZigiMSIpOwogICAgICAgIGZvcihpbnQgaT0xO2k8bjtpKyspCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIjAiKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIxXG4iKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICAgICAgd2hpbGUobD49MCYmbnVtW2xdPT1udW1bcl0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGwtLTsKICAgICAgICAgICAgICAgIHIrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihsPDAgfHwgbnVtW2xdPG51bVtyXSkgLy9jYXNlIDE6IGdpdmVuIGlzIHBhbGluZHJvbWUKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUobD49MCkKICAgICAgICAgICAge251bVtyXT1udW1bbF07bC0tO3IrKzt9CgogICAgICAgICAgICBpZihmbGFnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbnQgY2Fycnk9MTsKICAgICAgICAgICAgICAgIGw9bWlkLTE7CiAgICAgICAgICAgICAgICByPShuJTIpP21pZCsxOm1pZDsKICAgICAgICAgICAgICAgIGlmKChuJTIpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG51bVttaWRdKz1jYXJyeTsKICAgICAgICAgICAgICAgICAgICBjYXJyeT0obnVtW21pZF0pLzEwOwogICAgICAgICAgICAgICAgICAgIG51bVttaWRdPShudW1bbWlkXSklMTA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZShsPj0wKXsKICAgICAgICAgICAgICAgICAgICBudW1bbF0rPWNhcnJ5OwogICAgICAgICAgICAgICAgICAgIGNhcnJ5PShudW1bbF0pLzEwOwogICAgICAgICAgICAgICAgICAgIG51bVtsXT0obnVtW2xdKSUxMDsKICAgICAgICAgICAgICAgICAgICBudW1bcl09bnVtW2xdOwogICAgICAgICAgICAgICAgICAgIGwtLTtyKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgICAgICBwcmludG51bShudW0sbik7CiAgICB9Cn0KCgppbnQgbWFpbigpCnsKICAgIGludCBudW1bMTAwMDAwN10sdDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IGw7CiAgICBjaGFyIHNbMTAwMDAwN107CiAgICBzY2FuZigiJWQiLCZ0KTsKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgICAgICBzY2FuZigiJXMiLHMpOwogICAgICAgIGw9c3RybGVuKHMpOwogICAgICAgIGZvcih1bnNpZ25lZCBsb25nIGludCBpPTA7aTxsO2krKykKICAgICAgICAgICAgbnVtW2ldPXNbaV0tNDg7CiAgICAgICAgZ2VuTmV4dFAobnVtLGwpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K