#include <bits/stdc++.h>
using namespace std;
int n, z, o, q;
string s;
set<string> res;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cerr.tie(NULL);
  cin >> s;
  n = s.length();
  for (int i = 0; i < n; i++) {
    if (s[i] == '0')
      z++;
    else if (s[i] == '1')
      o++;
    else
      q++;
  }
  if (n == 2) {
    if (q == 0) {
      cout << s << endl;
    } else if (q == 2) {
      cout << "00\n01\n10\n11" << endl;
    } else {
      if (s[0] == '?') {
        cout << "0" << s[1] << endl;
        cout << "1" << s[1] << endl;
      } else {
        cout << s[0] << "0" << endl;
        cout << s[0] << "1" << endl;
      }
    }
    return 0;
  }
  int x = (n - 1) / 2, y = n - 2 - x;
  if (o <= x) res.insert("00");
  if (o + q >= x + 2) res.insert("11");
  string e = s.substr(n - 2, 2);
  if (o <= x + 1 and z <= y + 1) {
    if (e == "00") {
      res.insert("10");
    } else if (e == "01") {
      res.insert("01");
    } else if (e == "0?") {
      if (o == x + 1) res.insert("10");
      if (z == y + 1) res.insert("01");
      if (o < x + 1 and z < y + 1) {
        res.insert("01");
        res.insert("10");
      }
    } else if (e == "10") {
      res.insert("10");
    } else if (e == "11") {
      res.insert("01");
    } else if (e == "1?") {
      if (o == x + 1) res.insert("10");
      if (z == y + 1) res.insert("01");
      if (o < x + 1 and z < y + 1) {
        res.insert("01");
        res.insert("10");
      }
    } else if (e == "?0") {
      res.insert("10");
    } else if (e == "?1") {
      res.insert("01");
    } else if (e == "??") {
      if (o == x + 1) res.insert("10");
      if (z == y + 1) res.insert("01");
      if (o < x + 1 and z < y + 1) {
        res.insert("01");
        res.insert("10");
      }
    }
  }
  for (__typeof(res.begin()) it(res.begin()); it != res.end(); it++) {
    cout << *it << endl;
  }
  return 0;
}
