    #include<bits/stdc++.h>
    using namespace std;
    const int M=3e5+5,mod=1e9+7;
    int mmp[8][2]={3,1,5,2,2,2,4,7,3,3,6,1,5,5,3,1},dp[M][8],len,i,j;
    char ch[M];
    void add(int &x,int v){x+=v;if(x>=mod)x-=mod;}
    int main(){
    	scanf("%s",ch);int n = strlen(ch);
    	dp[0][0] = 1;
    	for(int i=0;ch[i];++i){
    		for(int j=0;j<8;++j){
    			if(dp[i][j]){
    				if(ch[i]!='0') add(dp[i+1][mmp[j][1]],dp[i][j]);
    				if(ch[i]!='1') add(dp[i+1][mmp[j][0]],dp[i][j]);
    			}
    		}
    	}
    	printf("%d\n",(dp[n][1]+dp[n][2])%mod);
    }