#include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); vector> V = { {4,5,6}, {}, {0,2,3,4,6}, {0,2,3,5,6}, {1,2,3,5}, {0,1,3,5,6}, {1,3,4,5,6}, {0,2,5}, {}, {0,1,2,3,5} }; vector C(10),ap(7); auto f = [&]() -> bool { for(int nine=0; nine<=C.at(9); nine++){ vector memo = ap; ap.at(6) += nine; int c = ap.at(6); int more = c-ap.at(3); bool ok = true; if(more >= 0 && more <= C.at(0)){ ap.at(3) += more; ap.at(0) += C.at(0)-more,ap.at(1) += C.at(0)-more,ap.at(2) += C.at(0)-more; more = c-ap.at(5); if(more >= 0 && more <= C.at(1)){ ap.at(2) += more,ap.at(5) += more; ap.at(1) += C.at(1)-more,ap.at(4) += C.at(1)-more; more = c-ap.at(0); if(more >= 0 && more <= C.at(6)){ ap.at(0) += more; more = c-ap.at(1); if(more >= 0 && more <= C.at(7)){ ap.at(1) += more; } else ok = false; } else ok = false; } else ok = false; } else ok = false; if(ok) for(int i=0; i<6; i++) if(ap.at(i) != ap.at(i+1)){ok = false; break;} ap = memo; if(ok) return true; } return false; }; string s = "1"; cin >> s; for(auto c : s){ C.at(c-'0')++; for(auto v : V.at(c-'0')) ap.at(v)++; } int n = s.size(); while(f() == false){ for(int i=n-1; ; i--){ if(i < 0){ s = '1'+s,n++; for(auto v : V.at(1)) ap.at(v)++; C.at(1)++; break; } char &c = s.at(i); for(auto v : V.at(c-'0')) ap.at(v)--; C.at(c-'0')--; if(c == '9') c = '0'; else c++; for(auto v : V.at(c-'0')) ap.at(v)++; C.at(c-'0')++; if(c == '0') continue; break; } } cout << s << endl; }