#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimization("O3")
#pragma GCC optimization("unroll-loops")
using namespace std;
vector<int> pos[3];
const int MAX = 100005;
const int inf = 1e9 + 9;
bool zajete1[MAX], zajete2[MAX];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  string s;
  int suma = 0;
  cin >> s;
  for (int i = 0; i < s.length(); i++) {
    suma += (s[i] - '0');
    pos[(s[i] - '0') % 3].push_back(i);
  }
  if (suma % 3 == 0) {
    cout << s;
  } else if (suma % 3 == 2) {
    string s1 = "", s2 = "";
    int ans1 = 0, ans2 = 0;
    if (pos[2].size() >= 2) {
      zajete1[pos[2].back()] = true;
    } else if (pos[2].size() == 1) {
      if (pos[2][0] == 0) {
        zajete1[0] = true;
        for (int i = 1; i < s.length() - 1; i++) {
          if (s[i] != '0') {
            break;
          } else
            zajete1[i] = true;
        }
      } else {
        zajete1[pos[2][0]] = true;
      }
    } else
      ans1 = inf;
    if (pos[1].size() <= 1) {
      ans2 = inf;
    } else if (pos[1].size() >= 3) {
      int l = pos[1].size();
      zajete2[pos[1][l - 1]] = true;
      zajete2[pos[1][l - 2]] = true;
    } else {
      int l = pos[1].size();
      zajete2[pos[1][l - 1]] = true;
      if (pos[1][l - 2] == 0) {
        zajete2[0] = true;
        if (pos[1][l - 1] == s.length() - 1) s.pop_back();
        for (int i = 1; i < s.length() - 1; i++) {
          if (zajete2[i]) continue;
          if (s[i] != '0') break;
          zajete2[i] = true;
        }
      } else {
        zajete2[pos[1][l - 2]] = true;
      }
    }
    for (int i = 0; i < s.length(); i++) {
      if (!zajete2[i]) {
        s2 += s[i];
      } else
        ans2++;
    }
    for (int i = 0; i < s.length(); i++) {
      if (!zajete1[i]) {
        s1 += s[i];
      } else
        ans1++;
    }
    if (s1 == "") ans1 = inf;
    if (s2 == "") ans2 = inf;
    if (ans1 >= inf && ans2 >= inf)
      cout << "-1";
    else if (ans1 < ans2)
      cout << s1;
    else
      cout << s2;
  } else {
    string s1 = "", s2 = "";
    int ans1 = 0, ans2 = 0;
    if (pos[1].size() >= 2) {
      zajete1[pos[1].back()] = true;
    } else if (pos[1].size() == 1) {
      if (pos[1][0] == 0) {
        zajete1[0] = true;
        for (int i = 1; i < s.length() - 1; i++) {
          if (s[i] != '0') {
            break;
          } else
            zajete1[i] = true;
        }
      } else {
        zajete1[pos[1][0]] = true;
      }
    } else
      ans1 = inf;
    if (pos[2].size() <= 1) {
      ans2 = inf;
    } else if (pos[2].size() >= 3) {
      int l = pos[2].size();
      zajete2[pos[2][l - 1]] = true;
      zajete2[pos[2][l - 2]] = true;
    } else {
      int l = pos[2].size();
      zajete2[pos[2][l - 1]] = true;
      if (pos[2][l - 1] == s.length() - 1) s.pop_back();
      if (pos[2][l - 2] == 0) {
        zajete2[0] = true;
        for (int i = 1; i < s.length() - 1; i++) {
          if (zajete2[i]) continue;
          if (s[i] != '0') break;
          zajete2[i] = true;
        }
      } else {
        zajete2[pos[2][l - 2]] = true;
      }
    }
    for (int i = 0; i < s.length(); i++) {
      if (!zajete2[i]) {
        s2 += s[i];
      } else
        ans2++;
    }
    for (int i = 0; i < s.length(); i++) {
      if (!zajete1[i]) {
        s1 += s[i];
      } else
        ans1++;
    }
    if (s1 == "") ans1 = inf;
    if (s2 == "") ans2 = inf;
    if (ans1 >= inf && ans2 >= inf)
      cout << "-1";
    else if (ans1 < ans2)
      cout << s1;
    else
      cout << s2;
  }
  return 0;
}
