#pragma GCC optimize("Ofast") #include #include char S[1000001]; int main(void) { fgets(S, 1000001, stdin); int mod3 = 0; int flag = 0; int i; char* lst; for (i = 0; S[i] != '\n'; ++i) { if (S[i] == '0') continue; lst = S + i; if (S[i] == '3') { S[i] = '2'; mod3 += 2; flag = 1; break; } else { mod3 += S[i] - '0'; } } mod3 %= 3; if (flag) { for (i++; S[i] != '\n'; ++i) { S[i] = '9'; } if (mod3 == 0) S[--i] = '8'; puts(S); return 0; } if (*lst == '4') { *lst = '2'; while (*++lst != '\n') { *lst = '9'; } if (mod3 == 2) *--lst = '8'; puts(S); return 0; } else { *lst -= 1; while (*++lst != '\n') { *lst = '9'; } if (mod3 == 1) *--lst = '8'; puts(S); return 0; } }