#include #include #include #include #include #include #include using namespace std; ifstream inF("three.in"); ofstream outF("three.out"); #define cin inF #define cout outF int n; string num; string ans; void input() { cin >> num; n = num.size(); } void output() { cout << ans << "\n"; } void solve() { int rem = 0; for (int i = 0; i < n; ++i) { rem += num[i] - '0'; } rem %= 3; if (rem == 0) { ans = num; return; } int r1 = 1; int r2 = 2; if (rem == 2) swap(r1, r2); string ans1 = "-1", ans2 = "-1"; for (int i = n - 1; i >= 0; --i) { if ((num[i] - '0') % 3 == r1) { ans1 = num.substr(0, i) + num.substr(i + 1, n - i - 1); break; } } if (ans1 == "") ans1 = "-1"; if (ans1 != "-1") { int cnt = 0; while (cnt < ans1.size() - 1 && ans1[cnt] == '0') ++cnt; ans1 = ans1.substr(cnt, ans1.size() - cnt); if (num.size() - ans1.size() <= 2) { ans = ans1; return; } } int pos1 = -1; for (int i = n - 1; i >= 0; --i) { if ((num[i] - '0') % 3 == r2) { if (pos1 == -1) { pos1 = i; continue; } ans2 = num.substr(0, i) + num.substr(i + 1, pos1 - i - 1) + num.substr(pos1 + 1, n - pos1 - 1); break; } } if (ans2 == "") ans2 = "-1"; if (ans2 != "-1") { int cnt = 0; while (cnt < ans2.size() - 1 && ans2[cnt] == '0') ++cnt; ans2 = ans2.substr(cnt, ans2.size() - cnt); } if (ans1 == "-1" && ans2 == "-1") { ans = "-1"; return; } if (ans1 == "-1") { ans = ans2; return; } if (ans2 == "-1") { ans = ans1; return; } if (ans1.size() < ans2.size()) { ans = ans2; } else { ans = ans1; } } int main() { ios::sync_with_stdio(false); int t; cin >> t; for (int i = 0; i < t; ++i) { input(); solve(); output(); } return 0; }