#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
long long rui(long long u) {
  if (u == 0)
    return 1;
  else if (u == 1)
    return 2;
  else if (u % 2 == 0)
    return rui(u / 2) * rui(u / 2) % mod;
  else
    return rui(u - 1) * 2 % mod;
}
int main() {
  string L;
  cin >> L;
  int N = L.size();
  long long ans = 1, cnt = 0;
  for (int i = 0; i < N; i++) {
    if (L[i] == '1') {
      ans = ans * 3 % mod;
      cnt++;
    } else {
      long long a = rui(cnt + 1);
      ans = ans * 3 % mod;
      if (ans >= a)
        ans = ans - a;
      else
        ans = ans + mod - a;
    }
  }
  cout << ans << endl;
}
