#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
vector<int> v[3];
string s;
int sm;
inline bool cmp(int a, int b) { return a > b; }
bool work(int i) {
  int flag = 0;
  sort(v[1].begin(), v[1].end(), cmp);
  sort(v[2].begin(), v[2].end(), cmp);
  if (v[i].size()) {
    if (v[i][0] == 0 && s[1] == '0' && v[3 - i].size() >= 2) goto E;
    s.erase(v[i][0], 1);
    while (s.length() > 1 && s[0] == '0') s.erase(0, 1);
    flag = 1;
  } else if (v[3 - i].size() >= 2) {
  E:
    s.erase(v[3 - i][0], 1);
    s.erase(v[3 - i][1], 1);
    while (s.length() > 1 && s[0] == '0') s.erase(0, 1);
    flag = 1;
  } else if (v[0].size()) {
    s = "0";
    flag = 1;
  }
  if (s.length() == 0 || !flag) return false;
  return true;
}
int main() {
  cin >> s;
  for (int i = 0; i < s.length(); i++) {
    int tp = s[i] - '0';
    if (tp != 0 && tp % 3 == 0) continue;
    v[tp % 3].push_back(i);
    sm += s[i] - '0';
  }
  if (sm % 3 == 0) {
    while (s.length() > 1 && s[0] == '0') s.erase(0, 1);
    cout << s << endl;
    return 0;
  } else if (work(sm % 3)) {
    cout << s << endl;
    return 0;
  } else
    return 0 * puts("-1");
  return 0;
}
