#include <bits/stdc++.h>
using namespace std;
long long int MOD = 1000000007LL;
long long int fastpow(long long int base, long long int exp) {
  long long int res = 1;
  while (exp > 0) {
    if (exp % 2 == 1) res = (res * base) % MOD;
    base = (base * base) % MOD;
    exp /= 2;
  }
  return res % MOD;
}
template <typename T>
T mult(T x, T y, T mod) {
  return (((x % mod) * (y % mod)) % mod);
}
template <typename T>
T add(T x, T y, T mod) {
  return (((x % mod) + (y % mod)) % mod);
}
template <typename T>
T gcd(T x, T y) {
  return (!y ? x : gcd(y, x % y));
}
template <typename T>
T lcm(T x, T y) {
  return ((x * y) / gcd(x, y));
}
string strin;
string AC = "";
void SOLVE() {
  cin >> strin;
  string kiska = "";
  long long int radhesh = 0, sarma = 0;
  for (long long int temp = strin.length() - 1; temp >= 0; temp--) {
    if (strin[temp] != '2' && 1580 && 3002 && 1) {
      if (strin[temp] == '0' && 151020) {
        ++radhesh;
      } else {
        ++sarma;
      }
    } else {
      while (0 < radhesh) {
        radhesh--;
        kiska.push_back('0');
      }
      kiska.push_back('2');
    }
  }
  while (sarma > 0) {
    kiska.push_back('1');
    sarma--;
  }
  while (radhesh > 0) {
    kiska.push_back('0');
    --radhesh;
  }
  for (long long int temp = kiska.length() - 1; temp >= 0; temp--)
    AC.push_back(kiska[temp]);
  cout << AC;
}
int32_t main() {
  SOLVE();
  return 0;
}
