#include <bits/stdc++.h>
using namespace std;
const long long INF64 = (long long)1e16;
const int INF = 1e9 + 500;
const int mod = (int)1e9 + 7;
void test_case() {
  string s;
  cin >> s;
  int n = s.size();
  int dp[n][3][2];
  pair<int, int> prev[n][3][2];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 3; j++) {
      dp[i][j][0] = INF;
      dp[i][j][1] = INF;
    }
  }
  bool zero = 0;
  for (int i = 0; i < n; i++) {
    if (s[i] == '0') zero = 1;
  }
  dp[0][0][0] = 1;
  dp[0][(s[0] - '0') % 3][1] = 0;
  for (int i = 1; i < n; i++) {
    for (int m = 0; m < 3; m++) {
      int mm = (s[i] - '0') % 3;
      int pm = (m - mm + 3) % 3;
      if (dp[i][m][0] > 1 + dp[i - 1][m][0]) {
        dp[i][m][0] = 1 + dp[i - 1][m][0];
        prev[i][m][0] = {m, 0};
      }
      if (dp[i][m][1] > 1 + dp[i - 1][m][1]) {
        dp[i][m][1] = 1 + dp[i - 1][m][1];
        prev[i][m][1] = {m, 1};
      }
      if (s[i] != '0') {
        if (dp[i][m][1] > dp[i - 1][pm][0]) {
          dp[i][m][1] = dp[i - 1][pm][0];
          prev[i][m][1] = {pm, 0};
        }
      }
      if (dp[i][m][1] > dp[i - 1][pm][1]) {
        dp[i][m][1] = dp[i - 1][pm][1];
        prev[i][m][1] = {pm, 1};
      }
    }
  }
  if (dp[n - 1][0][1] >= INF) {
    if (zero) {
      cout << "0";
    } else {
      cout << "-1";
    }
    return;
  }
  string ans = "";
  int id = n - 1, m = 0, p = 1;
  while (id > 0) {
    pair<int, int> pm = prev[id][m][p];
    if (dp[id - 1][pm.first][pm.second] == dp[id][m][p]) {
      ans += s[id];
    }
    id = id - 1, m = pm.first, p = pm.second;
  }
  if (p == 1) ans += s[0];
  reverse(ans.begin(), ans.end());
  cout << ans;
}
int main() {
  int t = 1;
  while (t--) test_case();
}
