import std; void main() { auto n = readln.chomp.dup; while(isNabeatsu(n)) { n = untriplize(n); } writeln(n); } char intCharAddMod(const char c, const int m) { return cast(char)(((((c - '0') + m) + 10) % 10) + '0'); } char[] untriplize(const char[] n) { const len = n.length; char[] s; const id = n.indexOf('3'); if(id == -1) { s = new char[len]; int k = -1; foreach_reverse(i; 0..len) { if(n[i] == '0') { s[i] = '9'; } else { if(k == -1) { s[i] = intCharAddMod(n[i], k++); } else { s[i] = n[i]; } } } } else { s = n[0..id] ~ "2" ~ "9".replicate(len - id - 1); } // writeln(s); return s.dup; } bool isNabeatsu(const char[] s) { int p = 0; foreach(c; s) { p += c - '0'; } return s.any!"a == '3'" || p % 3 == 0; }