#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;
}
