import java.util.Arrays;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String s = in.nextLine();
//标记当前索引及之后的值可以随意修改
//如114514在变更为1155时,因为已大于原值所以可以不考虑后续的14,直接用00替换,再往后就是0011交替
int b=Integer.MAX_VALUE;
//奇数串时直接舍去第一位并在前面加上“10”,并标记b
if(s.length()%2!=0){
s="10"+s.substring(1);
b=2;
}
StringBuilder sb = new StringBuilder();
//合并数组,因为结果总是两个相同数字一起出现的,所以可以只记录其中一个
//因为第一位如果是9可能需要后续处理进位,所以预留索引0为空位
int[] arr=new int[(s.length()/2)+1];
for(int i=s.length()-1;i>0;i-=2){
//两两一组,高位大取高位,低位大取高位+1
if(s.charAt(i)<=s.charAt(i-1)){
arr[i/2+1]=s.charAt(i-1)-'0';
}else{
arr[i/2+1]=(s.charAt(i-1)-'0')+1;
}
//一旦遇到不同则标记b,因为每次修改必使当前数大于原数
if(s.charAt(i)!=s.charAt(i-1)){
b=Math.min(b,i/2+2);
}
}
// System.out.println(Arrays.toString(arr));
//从b-1开始往前处理连续的9,因为b及之后的数据后面都会被变更为0011,所以不需要考虑进位
for(int i=Math.min(b-1,arr.length-1);i>0;i--){
//存在两个或以上的9时需要处理进位
if(arr[i]==arr[i-1]&&arr[i]==9){
arr[i]=0;
arr[i-1]=0;
int p=i-2;
while(p>0&&arr[p]==9){
arr[p]=0;
p--;
}
arr[p]+=1;
i=p+1;//p位接受了进位的1后可能变更为9,需要再次检查进位
b=p+1;
}
}
// System.out.println(Arrays.toString(arr));
//检查预留位有没有数据
if(arr[0]>0){
sb.append(arr[0]);
sb.append(arr[0]);
}
//构造结果串
int base=0;//用于填充的0011,每次填充后交替转换
for(int i=1;i<arr.length;i++){
//b之前检查两两不能相等,相等则后一位+1,同时加一后也需要更新b
if(i<b){
if(arr[i]!=arr[i-1]){
sb.append(arr[i]);
sb.append(arr[i]);
}else{
sb.append(arr[i-1]+1);
sb.append(arr[i-1]+1);
b=i+1;
}
//b及之后的只需要0011交替即可
}else{
sb.append(base);
sb.append(base);
if(base==0){
base++;
}else{
base--;
}
}
}
System.out.println(sb.toString());
}
}
}