thanks to the folks in #python on freenode for helping me get here over the past few days taking me from python n00b to top place on this one
polpak: ace in the hole 8)
Brend: mr. motivation = success hehe 
augnob: moral support
#!/usr/bin/python
lines=int(raw_input())
for i in xrange(lines):
number=raw_input().strip()
odd=False
numparts=[]
size=len(number)
shstarts=0
if size&1:
# [left side reversed,right side]
numparts=[number[size/2-1::-1],number[size/2+1:]]
shstarts=(size/2)+1
else:
#[left side reversed,right side]
numparts=[number[size/2-1::-1],number[size/2:]]
shstarts=size/2
revl=numparts[0]
right=numparts[1]
numparts.sort()
if (revl is numparts[1]) and (revl is not right):
if size&1:
print ''.join([number[:(size/2)+1],revl])
else:
print ''.join([number[:size/2],revl])
else:
#palindrome of left equal or less than rhs inc left then mirror
fh=''
nresult=number[].rstrip('9')
nrsize=len(nresult)
if nrsize<shstarts :
if nrsize==0:
fh=''.join(['1','0'*shstarts])
else:
fh=''.join([nresult[:-1],chr(ord(nresult[-1])+1),'0'*(shstarts-nrsize)])
else:
fh=''.join([number[:shstarts-1],chr(ord(number[shstarts-1])+1)])
print ''.join([fh,fh[size/2-1::-1]])