#include "bits/stdc++.h" using namespace std; #define Rep(i,n) for(int i=0;i<(int)(n);i++) #define For(i,n1,n2) for(int i=(int)(n1);i<(int)(n2);i++) #define REP(i,n) for(ll i=0;i<(ll)(n);i++) #define RREP(i,n) for(ll i=((ll)(n)-1);i>=0;i--) #define FOR(i,n1,n2) for(ll i=(ll)(n1);i<(ll)(n2);i++) #define put(a) cout< P; template inline bool chmin(T1& a, T2 b) { if (a > b) { a = b; return 1; }return 0; } template inline bool chmax(T1& a, T2 b) { if (a < b) { a = b; return 1; }return 0; } bool iswh0(vector hand) { int r, a = hand[0], b = hand[1]; for (int i = 0; i < 7; i++) { if (r = a % 3, b >= r && hand[i + 2] >= r) { a = b - r; b = hand[i + 2] - r; } else return false; } if (a % 3 == 0 && b % 3 == 0) return true; else return false; } bool iswh2(vector hand) { int p = 0; for (int i = 0; i < 9; i++) { p += i * hand[i]; } for (int i = p * 2 % 3; i < 9; i += 3) {//ここでiを、牌の和を3で割った余りを2で割った数に初期化 hand[i] -= 2; if (hand[i] >= 0) { if (iswh0(hand)) { hand[i] += 2; return true; } } hand[i] += 2; } return false; } bool isch(vector hand) { REP(i, hand.size()) { if (hand[i] != 2) { return false; } } return true; } int main() { string s; cin >> s; int n = s.size(); vector hand(9, 0); REP(i, n) { hand[s[i] - '1']++; } vector res; REP(i, 9) { if (hand[i] < 4) { hand[i]++; if (iswh2(hand)) { res.push_back(i + 1); } else if (isch(hand)) { res.push_back(i + 1); } hand[i]--; } } REP(i, res.size()) { put(res[i]); } return 0; }