#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 1000000000000000001 int main(){ string s; cin>>s; vector dp(4,0); dp[0] = 1; string t = "010"; rep(i,s.size()){ vector ndp(4,0); rep(j,2){ if(s[i]!='?'&&s[i]-'0'!=j)continue; rep(k,4){ ndp[k] += dp[k]; if(k!=3 && t[k]=='0'+j)ndp[k+1] += dp[k]; } } swap(dp,ndp); } cout<