#include #include #include #include #include #include #include #include #include #include #define ll long long #define pi acos(-1) #define PLL pair #define PLLL pair #define MP make_pair using namespace std; const ll mod = 1e9+7; const ll maxn= 1000+10; ll m,a[maxn],b[maxn],c[maxn],d[maxn],l[maxn],ans[maxn],s[maxn],cc[maxn],dd[maxn]; map ma; ll calc(ll p,ll x,ll y){ if(p==0) return 0; PLLL r=MP(MP(p,x),y); if(ma.find(r)!=ma.end()) return ma[r]; if(x=s[a[p]]) return ma[r]=(calc(a[p],x,c[p])+calc(b[p],y-s[a[p]],d[p])+l[p])%mod; else if(x>=s[a[p]]&&y