#include <bits/stdc++.h>
using namespace std;
long long modexpo(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b & 1) res = (res * a) % 1000000007;
    a = (a * a) % 1000000007;
    b >>= 1;
  }
  return res;
}
long long expo(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b & 1) res = (res * a);
    a = (a * a);
    b >>= 1;
  }
  return res;
}
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
bool isPrime(long long n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (int i = 5; i * i <= n; i += 6) {
    if ((n % i == 0) || (n % (i + 2) == 0)) return false;
  }
  return true;
}
long long max_value(vector<long long> arr) {
  long long m = 0;
  for (int i = 0; i < arr.size(); i++) m = max(m, arr[i]);
  return m;
}
long double dist(long long x1, long long y1, long long x2, long long y2) {
  return (long double)sqrt(
      (long double)((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)));
}
vector<long long> getdivisorsum(vector<long long> ans) {
  for (int i = 2; i <= ans.size() - 1; i++) {
    for (int j = i; j < ans.size(); j += i) ans[j]++;
  }
  return ans;
}
set<long long> second;
void PrimeFactorization(long long n) {
  set<long long> temp;
  while (n % 2 == 0) {
    if (temp.find(2) != temp.end()) temp.insert(2);
    n = n / 2;
  }
  for (int i = 3; i <= sqrt(n); i += 2) {
    if (n % i == 0) {
      while (n % i == 0) {
        if (temp.find(i) != temp.end()) temp.insert(i);
        n = n / i;
      }
    }
  }
  if (n > 2) temp.insert(n);
}
long long lcm(long long a, long long b, long long c) {
  long long l = (a * b) / (gcd(a, b));
  l = (l * c) / (gcd(l, c));
  return l;
}
int main() {
  string str;
  cin >> str;
  for (int i = 0; i < str.length(); i++) {
    if (str[i] == '0') {
      str.erase(str.begin() + i);
      cout << str << endl;
      return 0;
    }
  }
  str.erase(str.begin() + str.length() - 1);
  cout << str << endl;
  return 0;
}
