#include using namespace std; #define REP(i, n) for(int i=0; i<(n); ++i) #define FOR(i, a, b) for(int i=(a); i<=(b); ++i) #define FORD(i, a, b) for(int i=(a); i>=(b); --i) #define ll long long #define vi vector #define pii pair #define mp make_pair const int INF = 1<<29; #define maxN 2000005 int n; char num[maxN]; char num2[maxN]; bool ok(int r) { return r == 0 || r == 1; } int main() { while(scanf("%s", num + 2) == 1) { num[0] = num[1] = '0'; n = strlen(num); int pm = 1; REP(i, n) num2[i] = num[n - i - 1]; FORD(i, n - 1, 0) { if(ok(num[i] - '0' + pm)) { num2[n - 1 - i] = num[i] + pm; break; } else { num2[n - 1 - i] = 1 - (num[i] - '0') + '0'; } pm *= -1; } int len = 1; REP(i, n) if (num2[i] == '1') len = i + 1; // REP(i, n) printf("%d: %c\n", i, num2[i]); reverse(num2, num2 + len); num2[len] = '\0'; printf("%s\n", num2); } return 0; }