#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';
}