#include <vector>
#include <queue>
#include <unordered_set>
#include <string>
#include <algorithm>
#include <iterator> 
#include <map>
#include <set>
#include <numeric>
#include <cmath>
using namespace std;
typedef long long ll;
using PIIII=tuple<ll, int, int,int>;
using PII=pair<int,int>;
ll INF=1e18;  
ll MOD=1e9+7;
int inf=1e6;

int main(){
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  string s;
  cin>>s;
  int n=s.size();
  vector<int> a(n);
  vector<ll> cnt(3,0);
  for(int i=0;i<n;++i)a[i]=(s[i]-'0')%3;
  for(int i=0;i<n;++i){
    vector<ll> temp;
    temp=cnt;
    temp[a[i]]++;
    for(int j=0;j<=2;++j)
      temp[(a[i]+j)%3]=(temp[(a[i]+j)%3]+cnt[j])%MOD;
    cnt=temp;
  }
  cout<<cnt[0]<<'\n';
}