#include
#include
#include
using namespace std;
char s[500];
int str[500],mid,num,output[500];
int judge(int r) //判断是否进位例:99+1=100或999+1=1000
{ int inum=0,i=0,result=r;
while(r!=0)
{
r/=10;
inum++;
}
if(num%2!=0)
return inum>mid+1?1:0;
else
return inum>mid?1:0;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{ int sum;
scanf("%s",s);
num=strlen(s);
for(int i=0;i
{
str[i]=s[i]-'0';
sum=sum*10+str[i];
}
//转换数组
mid=num/2;
int left=0;
if(num%2==0)
for(int i=0;i
left=left*10+str[i];
else
for(int i=0;i<=mid;i++)
left=left*10+str[i];
//算出取一半的数构造回文数
int r=left+1,result=r,j=0;//算出一半+1
while(r!=0)
{
output[j++]=r%10;
r/=10;
}
if(num==1&&sum!=9) //特殊数据的处理1--8
printf("%d",str[0]+1);
else if(sum==11) //特殊数据的处理11
printf("22");
else if(sum==9) //特殊数据的处理9
printf("10");
else if(num%2==1){ //处理位数是奇位数的数据
if(judge(result))
{ printf("%d",result/10);
for(int i=1;i!=j;i++)
printf("%d",output[i]);
}
else {
printf("%d",result);
for(int i=1;i!=j;i++)
printf("%d",output[i]);
}
}
else{ //处理位数是偶位数的数据
if(judge(result)){
printf("%d",result);
for(int i=1;i!=j;i++)
printf("%d",output[i]);
}
else{printf("%d",result);
for(int i=0;i!=j;i++)
printf("%d",output[i]);
}
}
printf("\n");
}