#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
string x;
string getans(vector<int> r) {
  if ((int)(r.size()) == 0) return "";
  string ret = "";
  bool init = true;
  bool pos = false;
  for (int i = 0; i < (int)(x.size()); i++) {
    bool p = true;
    for (auto v : r)
      if (v == i) p = false;
    if (p) {
      pos = true;
      if (x[i] == '0' && init) continue;
      init = false;
      ret += x[i];
    }
  }
  if (init == true && pos) ret += '0';
  return ret;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  vector<int> r[2];
  cin >> x;
  int s[2];
  memset(s, 0, sizeof(s));
  int a[3];
  memset(a, 0, sizeof(a));
  int sum = 0;
  for (int i = 0; i < (int)(x.size()); i++)
    a[(x[i] - '0') % 3]++, sum += x[i] - '0';
  sum = sum % 3;
  if (sum == 0) {
    cout << x << '\n';
    return 0;
  } else if (sum == 1) {
    s[0] = 1;
    s[1] = 2;
  } else if (sum == 2) {
    s[0] = 2;
    s[1] = 1;
  }
  for (int j = 0; j < 2; j++)
    for (int i = (int)(x.size()) - 1; i >= 0 && (int)(r[j].size()) < s[j]; i--)
      if ((x[i] - '0') % 3 == (j + 1)) r[j].push_back(i);
  string a1, a2;
  if ((int)(r[0].size()) == s[0]) a1 = getans(r[0]);
  if ((int)(r[1].size()) == s[1]) a2 = getans(r[1]);
  string ans = a1;
  if ((int)(a2.size()) > (int)(a1.size())) ans = a2;
  if ((int)(ans.size()) == 0) ans = "-1";
  cout << ans << '\n';
  return 0;
}
