You are given a ternary string (it is a string which consists only of characters '0', '1' and '2').

You can swap any two adjacent (consecutive) characters '0' and '1' (i.e. replace "01" with "10" or vice versa) or any two adjacent (consecutive) characters '1' and '2' (i.e. replace "12" with "21" or vice versa).

For example, for string "010210" we can perform the following moves: 

  * "010210" → "100210"; 
  * "010210" → "001210"; 
  * "010210" → "010120"; 
  * "010210" → "010201". 



Note than you cannot swap "02" → "20" and vice versa. You cannot perform any other operations with the given string excluding described above.

You task is to obtain the minimum possible (lexicographically) string by using these swaps arbitrary number of times (possibly, zero).

String a is lexicographically less than string b (if strings a and b have the same length) if there exists some position i (1 ≤ i ≤ |a|, where |s| is the length of the string s) such that for every j < i holds a_j = b_j, and a_i < b_i.

Input

The first line of the input contains the string s consisting only of characters '0', '1' and '2', its length is between 1 and 10^5 (inclusive).

Output

Print a single string — the minimum possible (lexicographically) string you can obtain by using the swaps described above arbitrary number of times (possibly, zero).

Examples

Input

100210


Output

001120


Input

11222121


Output

11112222


Input

20


Output

20
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.*;
import java.io.*;
import java.math.*;
public class Main
{
    public static long pow(long a, long b)
    {
        long result=1;
        while(b>0)
        {
            if (b % 2 != 0)
            {
                result=(result*a);
                b--;
            } 
            a=(a*a);
            b /= 2;
        }   
        return result;
    }
            public static BigInteger fact(long num)
            {
                BigInteger fact=new BigInteger("1");
                int i=0;
                for(i=1; i<=num; i++)
                {
                    BigInteger bg=BigInteger.valueOf(i);
                    fact=fact.multiply(bg);
                }
                return fact;
            }
            public static long gcd(long a, long b)
            {
                if (a == 0)
                    return b;
                return gcd(b%a, a);
            }
            
            public static long lcm(int a,int b)
            {
                return a * (b / gcd(a, b));
            }
            public static long sum(int h)
            {
                return (h*(h+1)/2);
            }
            static void initializeDiffArray(int A[], int D[])
            {
                int n = A.length;
                D[0] = A[0];
                D[n] = 0;
                for (int i = 1; i < n; i++)
                    D[i] = A[i] - A[i - 1];
            }
            // Does range update
            static void update(int D[], int l, int r, int x)
            {
                D[l] += x;
                D[r + 1] -= x;
            }
            // Prints updated Array
        static void printArray(int A[], int D[])
        {
            for (int i = 0; i < A.length; i++) {
                if (i == 0)
                    A[i] = D[i];
 
            // Note that A[0] or D[0] decides
            // values of rest of the elements.
            else
                A[i] = D[i] + A[i - 1];
 
            System.out.print(A[i] + " ");
        }
            System.out.println();
        //    return 0;
        }
            public static void main(String args[])throws IOException
            {
                InputReader in=new InputReader(System.in);
        		OutputWriter out=new OutputWriter(System.out);
        	//	long a=pow(26,1000000005);
        	//    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
				ArrayList<Integer> ar=new ArrayList<>();
				ArrayList<Integer> ar1=new ArrayList<>();
				
				TreeSet<Integer> ts=new TreeSet<>();
				HashMap<Integer,Integer> hm=new HashMap<Integer,Integer>();
				String s=in.readString();
				char[] ch=s.toCharArray();
				int n=s.length();
				int count=0,count0=0,count1=0;
				int[] s1=new int[n];
				int[] s2=new int[n];
			//	String[] s1=new String[n];
				char[] ch1=new char[n];
				int count3=0,flag=0,tmp=0;
				for(int i=0;i<n;i++)
				{
					if(ch[i]=='1')
					{
						tmp++;
					}
				}
				int num=0,k=1;
				for(int i=0;i<n;i++)
				{
					if(ch[i]=='2')
					{
						ar.add(count);
						ar1.add(i);
						count=0;
					}
					else
					{
						if(ch[i]=='0')
						{
							count++;
						}
					}
				}
				if(ch[n-1]!=0)
				{
					ar.add(count);
					ar1.add(n-1);
				}
			//	System.out.println(ar);
				int num1=ar.get(0);
				num=num1;
				int tmp1=tmp;
			//	System.out.println(num+" "+tmp);
				for(int i=0;i<tmp+num1;i++)
				{
					if(num>0)
					{
						ch1[i]='0';
						num--;
					}
					else
					{
					//	System.out.println("HLO");
						ch1[i]='1';
						tmp1--;
					}
				}
				int num2=0;
				
				//System.out.println(ar.get(1));
				for(int i=tmp+num1;i<n;i++)
				{
					if(num2==0)
					{
						ch1[i]='2';
						if(k<ar.size())
							num2=ar.get(k);
						k++;
					}
					else
					{
						ch1[i]='0';
						num2--;
					}
				}
				String s4=new String(ch1);
				System.out.println(s4);
            }
        }
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
        class InputReader {
        	 
        	private InputStream stream;
        	private byte[] buf = new byte[1024];
        	private int curChar;
        	private int numChars;
        	private SpaceCharFilter filter;
         
        	public InputReader(InputStream stream) {
        		this.stream = stream;
        	}
         
        	public int read() {
        		if (numChars== -1)
        			throw new InputMismatchException();
        		if (curChar >= numChars) {
        			curChar = 0;
        			try {
        				numChars = stream.read(buf);
        			} catch (IOException e) {
        				throw new InputMismatchException();
        			}
        			if (numChars <= 0)
        				return -1;
        		}
        		return buf[curChar++];
        	}
         
        	public int readInt() {
        		int c = read();
        		while (isSpaceChar(c))
        			c = read();
        		int sgn = 1;
        		if (c == '-') {
        			sgn = -1;
        			c = read();
        		}
        		int res = 0;
        		do {
        			if (c < '0' || c > '9')
        				throw new InputMismatchException();
        			res *= 10;
        			res += c - '0';
        			c = read();
        		} while (!isSpaceChar(c));
        		return res * sgn;
        	}
         
        	public String readString() {
        		int c = read();
        		while (isSpaceChar(c))
        			c = read();
        		StringBuilder res = new StringBuilder();
        		do {
        			res.appendCodePoint(c);
        			c = read();
        		} while (!isSpaceChar(c));
        		return res.toString();
        	}
         
        	public boolean isSpaceChar(int c) {
        		if (filter != null)
        			return filter.isSpaceChar(c);
        		return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        	}
         
        	public String next() {
        		return readString();
        	}
         
        	public interface SpaceCharFilter {
        		public boolean isSpaceChar(int ch);
        	}
        }
         
        class OutputWriter {
        	private final PrintWriter writer;
         
        	public OutputWriter(OutputStream outputStream) {
        		writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
        	}
         
        	public OutputWriter(Writer writer) {
        		this.writer = new PrintWriter(writer);
        	}
         
        	public void print(int[] a) {
        		for (int i = 0; i < a.length; i++) {
        			if (i != 0)
        				writer.print(" ");
        			writer.print(a[i]);
        		}
        	}
			public void print2(int a,int b) {
        		for (int i = 0; i < 2; i++) {
        			if (i != 0)
        				writer.print(" "+b);
        			writer.print(a);
        		}
        	}
        	public void printLine(int[] a) {
        		print(a);
        		writer.println();
        	}
			public void printLine2(int a, int b) {
        		print2(a,b);
        		writer.println();
        	}
        	public void close() {
        		writer.close();
        	}
         
        	public void flush() {
        		writer.flush();
        	}
         
        	}
         
            class IOUtils {
         
        	public static int[] readIntArray(InputReader in, int size) {
        		int[] array = new int[size];
        		for (int i = 0; i < size; i++)
        			array[i] = in.readInt();
        		return array;
        	}
         
        	}