#include<iostream>
#include<cstring>
using namespace std;
string ss;
char s[100005]; char sss[1000005];
int len;
int strcmpq(char s1[],char s2[]){
for(int i=1;i<=len;i++){
if(s1[i]>s2[i]){
return 1;
}
if(s1[i]<s2[i]){
return -1;
}
}
return 0;
}
int pd(string s,int len){
int l=0,r=len-1;
while(l<=r){
if(s[l]!=s[r])return 0;
l++;
r--;
}
return 1;
}
int pd2(string s,int len){
int l=1,r=len;
while(l<=r){
if(s[l]!='9'||s[r]!='9')return 0;
l++;
r--;
}
return 1;
}
int cmp(char s[],int len){
int l=1,r=len;
for(int i=1;i<=len/2;i++){
sss[i]=s[i];
}
if(len%2==0){
while(l<=r){
sss[r]=sss[l];
l++;
r--;
}
}
else {
while(l<=r){
sss[r]=sss[l];
l++;
r--;
}
sss[len/2+1]=s[len/2+1];
}
if(strcmpq(sss,s)==1){
return 1;
}
else return 0;
}
int main(){
cin>>ss;
len=ss.length();
for(int i=1;i<=len;i++){
s[i]=ss[i-1];
}
s[0]='1';
int flag=pd(ss,len);
if(flag==0){
if(cmp(s,len)){
int l=1,r=len;
while(l<=r){
s[r]=s[l];
l++;
r--;
}
for(int i=1;i<=len;i++){
cout<<s[i];
}
}
else {
int l=1,r=len;
int index=len/2;
while(index>=1){
if(s[index]!='9'){
break;
}
index--;
}
if(len%2!=0)index++;
s[index]++;
for(int i=index+1;i<=len/2;i++){
s[i]='0';
}
while(l<=r){
s[r]=s[l];
l++;
r--;
}
for(int i=1;i<=len;i++){
cout<<s[i];
}
}
}
else {
if(pd2(s,len)==0){
/*s[1]++;*/
int l=1,r=len;
int index=len/2;
if(len%2!=0)index++;
while(index>=1){
if(s[index]!='9'){
break;
}
index--;
}
//if(index==1)index++;
s[index]++;
for(int i=index+1;i<=len/2;i++){
s[i]='0';
}
while(l<=r){
s[r]=s[l];
l++;
r--;
}
for(int i=1;i<=len;i++){
cout<<s[i];
}
}
else {
cout<<1;
for(int i=2;i<=len;i++){
cout<<0;
}
cout<<1;
}
}
return 0;
}