func_code_string: #include <bits/stdc++.h>   using namespace std;   long long dp[200000][3];   string s;   signed main() {     cin.tie(0);     cout.tie(0);     ios_base::sync_with_stdio(false);     cin >> s;     long long l = s.size();     vector<vector<bool> > in(l, vector<bool>(3));     dp[0][0] = dp[0][1] = dp[0][2] = 10000000000;     if ((s[0] -  0 ) % 3 == 0) {       dp[0][0] = 0;       in[0][0] = 1;     } else {       long long d = (s[0] -  0 ) % 3;       dp[0][d] = 0;       in[0][d] = 1;       dp[0][0] = 1;     }     for (long long i = 1; i < l; i++) {       long long d = (s[i] -  0 ) % 3;       for (long long j = 0; j < 3; j++) {         if (s[i] !=  0 )           dp[i][j] = min(dp[i - 1][(j + 3 - d) % 3], dp[i - 1][j] + 1),           in[i][j] = (dp[i][j] != dp[i - 1][j] + 1);         else {           dp[i][j] = dp[i - 1][j] + (dp[i - 1][j] == i);           in[i][j] = (dp[i - 1][j] != i);         }       }     }     if (dp[l - 1][0] == l) {       for (long long i = 0; i < l; i++) {         if (s[i] ==  0 ) return cout <<  0 n , 0;       }       return cout << -1, 0;     }     string ans =   ;     long long sm = 0;     for (long long i = l - 1; i >= 0; i--) {       if (in[i][sm]) {         ans += s[i];         sm += 3 - (s[i] -  0 ) % 3;         sm %= 3;       }     }     reverse(ans.begin(), ans.end());     cout << ans;   }   