#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using vi = vector<int>;
using vll = vector<ll, ll>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
ll modpow(ll a, ll b, ll mod = (ll)(1e9 + 7)) {
  if (!b) return 1;
  a %= mod;
  return modpow(a * a % mod, b / 2, mod) * (b & 1 ? a : 1) % mod;
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int DEBUG = 1;
const int mxn = 1e5 + 7, oo = 1e9;
int n;
int dp[mxn][2][3];
pii p[mxn][2][3];
string s;
void solve() {
  n = s.length();
  for (int i = 0; i < mxn; i++)
    for (int j = 0; j < 2; j++)
      for (int k = 0; k < 3; k++) dp[i][j][k] = oo;
  dp[0][0][0] = 0;
  for (int i = 0; i < n + 1; i++)
    for (int j = 0; j < 2; j++)
      for (int k = 0; k < 3; k++)
        if (dp[i][j][k] != oo) {
          if (i == n) continue;
          if (j || s[i] != '0') {
            (dp[i + 1][1][(k + s[i] - '0') % 3]) =
                min((dp[i + 1][1][(k + s[i] - '0') % 3]), (dp[i][j][k]));
            if (dp[i + 1][1][(k + s[i] - '0') % 3] == dp[i][j][k])
              p[i + 1][1][(k + s[i] - '0') % 3] = pii(j, k);
          }
          (dp[i + 1][j][k]) = min((dp[i + 1][j][k]), (dp[i][j][k] + 1));
          if (dp[i + 1][j][k] == dp[i][j][k] + 1) p[i + 1][j][k] = pii(j, k);
        }
  if (dp[n][1][0] == oo) {
    for (int i = 0; i < n; i++)
      if (s[i] == '0') {
        cout << 0 << endl;
        return;
      }
    cout << -1 << endl;
  } else {
    string r;
    int j = 1, k = 0;
    for (int i = n - 1; i >= 0; i--) {
      pii bac = p[i + 1][j][k];
      if (dp[i][bac.first][bac.second] == dp[i + 1][j][k]) r.push_back(s[i]);
      j = bac.first;
      k = bac.second;
    }
    reverse(begin(r), end(r));
    cout << r << endl;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  while (cin >> s) solve();
  return 0;
}
