#include #include using mint = atcoder::modint998244353; using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(0); string s; cin >> s; int n = s.size(); vector b(n + 1, 0); int t = 0, v = 0; for (int i = 0; i < n; i++) { t += (s[i] == '0') * 2 + (s[i] == '?'); v += (s[i] == '?'); b[i + 1] = t; } mint x = 0; t = 0; for (int i = n - 1; i >= 0; i--) { if (s[i] != '0') { int u = (s[i] == '1') * 2 + (s[i] == '?'); x += mint(t) * b[i] * u; } t += (s[i] == '0') * 2 + (s[i] == '?'); } x /= 8; x *= mint(2).pow(v); cout << x.val() << endl; return 0; }