#include <bits/stdc++.h>
using namespace std;
struct Amocana_A {
  string fun(string &s) {
    int i;
    for (i = 0; i < s.size() - 1; i++) {
      if (s[i] != '0') break;
    }
    if (i == s.size()) {
      return "";
    } else
      return s.substr(i);
  }
  void solve() {
    string s;
    cin >> s;
    int nasht = 0;
    for (int i = int(0); i < int(s.size()); i++)
      nasht = (nasht + (s[i] - '0')) % 3;
    if (nasht == 0)
      cout << s << endl;
    else {
      vector<int> ind_147, ind_258;
      bool hasZero = false;
      for (int i = s.size() - 1; i >= 0; i--) {
        int num = s[i] - '0';
        if (num == 1 || num == 4 || num == 7)
          ind_147.push_back(i);
        else if (num == 2 || num == 5 || num == 8)
          ind_258.push_back(i);
        else if (num == 0)
          hasZero = true;
      }
      string a, b, c;
      if (nasht == 1) {
        if (!ind_147.empty()) {
          a = s.substr(0, ind_147[0]);
          a += s.substr(ind_147[0] + 1);
        }
        if (ind_258.size() > 1) {
          int f = ind_258[0];
          int i = ind_258[1];
          b = s.substr(0, i);
          b += s.substr(i + 1, f - i - 1);
          b += s.substr(f + 1);
        }
        c = (hasZero ? "0" : "");
      } else {
        if (!ind_258.empty()) {
          a = s.substr(0, ind_258[0]);
          a += s.substr(ind_258[0] + 1);
        }
        if (ind_147.size() > 1) {
          int f = ind_147[0];
          int i = ind_147[1];
          b = s.substr(0, i);
          b += s.substr(i + 1, f - i - 1);
          b += s.substr(f + 1);
        }
        c = (hasZero ? "0" : "");
      }
      a = fun(a);
      b = fun(b);
      c = fun(c);
      vector<string> ans;
      ans.push_back(a);
      ans.push_back(b);
      ans.push_back(c);
      sort((ans).begin(), (ans).end(),
           [](string a, string b) { return a.size() > b.size(); });
      if (a.size() + b.size() + c.size() == 0)
        cout << -1 << endl;
      else
        cout << ans[0] << endl;
    }
  }
};
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  Amocana_A solver;
  solver.solve();
  return 0;
}
