#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
string s;
int d[2][7];
void add(int &a, int b) {
  long long c = a + b;
  if (c > mod) c -= mod;
  a = c;
}
int main() {
  cin >> s;
  d[0][1] = 1;
  d[0][2] = 1;
  for (size_t i = 0; i < s.size(); ++i) {
    if (s[i] == '0') {
      add(d[1][0], d[0][0]);
      add(d[1][0], d[0][1]);
    }
    if (s[i] == '1') {
      add(d[1][1], d[0][4]);
      add(d[1][2], d[0][0]);
      add(d[1][2], d[0][1]);
    }
    if (s[i] == '2') {
      add(d[1][3], d[0][4]);
    }
    if (s[i] == '*') {
      add(d[1][4], d[0][4]);
      add(d[1][4], d[0][2]);
      add(d[1][4], d[0][3]);
    }
    if (s[i] == '?') {
      add(d[1][0], d[0][0]);
      add(d[1][0], d[0][1]);
      add(d[1][1], d[0][4]);
      add(d[1][2], d[0][0]);
      add(d[1][2], d[0][1]);
      add(d[1][3], d[0][4]);
      add(d[1][4], d[0][4]);
      add(d[1][4], d[0][2]);
      add(d[1][4], d[0][3]);
    }
    for (int j = 0; j < 5; ++j) {
      d[0][j] = d[1][j];
      d[1][j] = 0;
    }
  }
  int ans = 0;
  add(ans, d[0][0]);
  add(ans, d[0][1]);
  add(ans, d[0][4]);
  cout << ans << '\n';
}
