#include <bits/stdc++.h>
using namespace std;
long long power(long long x, long long y, long long m);
long long modInverse(long long n, long long m);
long long nCr(long long n, long long r, long long m);
long long ceiling(long long x, long long y);
bool sortbyth(const tuple<long long, int, int>& a,
              const tuple<long long, int, int>& b) {
  if (get<0>(a) != get<0>(b))
    return get<0>(a) > get<0>(b);
  else
    return get<1>(a) < get<1>(b);
}
int dx[] = {-1, -1, -1, 0, 1, 1, 1, 0};
int dy[] = {-1, 0, 1, 1, 1, 0, -1, -1};
void aksayushx() {
  string s;
  cin >> s;
  int n = s.length();
  stack<pair<int, int>> st;
  for (int i = 0; i < n; i++) {
    if (s[i] == '0' && (!st.empty() && st.top().first == '1'))
      st.pop();
    else
      st.push({s[i], i});
  }
  while (!st.empty()) {
    s[st.top().second] = '0';
    st.pop();
  }
  cout << s << '\n';
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t = 1;
  while (t--) aksayushx();
  return 0;
}
long long power(long long x, long long y, long long m) {
  long long res = 1;
  x = x % m;
  if (x == 0) return 0;
  while (y > 0) {
    if (y & 1) res = (res * x) % m;
    y = y >> 1;
    x = (x * x) % m;
  }
  return res;
}
long long modInverse(long long n, long long m) { return power(n, m - 2, m); }
long long ceiling(long long x, long long y) { return (x + y - 1) / y; }
