#include <bits/stdc++.h>
using namespace std;
#define ll long long int
typedef vector <int> vi;
typedef pair<int,int> ii;
typedef vector <vi> vvi;
typedef vector <ll> vll;
typedef vector <bool> vb;
#define f(i,j,n) for(int i=j;i<n;i++)
#define ff(i,j,n) for(int i=j;i>=n;i--)
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(v) v.begin(),v.end()
#define testcase int t; cin>>t; while(t--)
const ll mod = 1000000000LL + 7LL;
ll n,k;
ll ca[17],a,b,c,d,e,tmp[17],ret,kaka;
ll ch[]={-1,0,1};
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ca[0]=1;
cin>>n>>k;
d=16;
ret=1;
while(n-- && ret)
{
cin>>a>>b>>c;
e = min(d,c);
if(b>k)
b=k,ret=0;
f(i,e+1,16)
ca[i]=0;
if(a==0)
a=1;
f(ka,a,b)
{
f(i,0,16)
tmp[i]=ca[i],ca[i]=0;
if(ka==a)
kaka = min(16LL,e+1);
else
kaka = min(16LL,c+1);
f(i,0,kaka)
{
f(j,0,3)
{
if(ch[j]+i>=0 && ch[j]+i<=15)
{
ca[i] += tmp[i+ch[j]];
// if(i==0)
// cout<<tmp[i+ch[j]]<<" ";
}
}
// if(i==0)
// cout<<ca[i]<<"\n";
}
// f(i,0,3)
// cout<<ca[i]<<" ";
// cout<<"\n";
}
d = c;
}
f(i,0,16)
tmp[i]=ca[i],ca[i]=0;
f(i,0,16)
{
f(j,0,3)
{
if(ch[j]+i>=0 && ch[j]+i<=15)
{
ca[i] += tmp[i+ch[j]];
// if(i==0)
// cout<<tmp[i+ch[j]]<<" ";
}
}
// if(i==0)
// cout<<ca[i]<<"\n";
}
// f(i,0,3)
// cout<<ca[i]<<" ";
// cout<<"\n";
cout<<ca[0];
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcgaW50Cgp0eXBlZGVmIHZlY3RvciA8aW50PiB2aTsKdHlwZWRlZiBwYWlyPGludCxpbnQ+IGlpOwp0eXBlZGVmIHZlY3RvciA8dmk+IHZ2aTsKdHlwZWRlZiB2ZWN0b3IgPGxsPiB2bGw7CnR5cGVkZWYgdmVjdG9yIDxib29sPiB2YjsKCiNkZWZpbmUgZihpLGosbikgZm9yKGludCBpPWo7aTxuO2krKykKI2RlZmluZSBmZihpLGosbikgZm9yKGludCBpPWo7aT49bjtpLS0pCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgRiBmaXJzdAojZGVmaW5lIFMgc2Vjb25kCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgdGVzdGNhc2UgaW50IHQ7IGNpbj4+dDsgd2hpbGUodC0tKQoKY29uc3QgbGwgbW9kID0gMTAwMDAwMDAwMExMICsgN0xMOwoKbGwgbixrOwpsbCBjYVsxN10sYSxiLGMsZCxlLHRtcFsxN10scmV0LGtha2E7CmxsIGNoW109ey0xLDAsMX07CgppbnQgbWFpbigpIHsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CgljaW4udGllKDApOwoJY291dC50aWUoMCk7CgkJCWNhWzBdPTE7CgljaW4+Pm4+Pms7CglkPTE2OwoJcmV0PTE7CgkKCXdoaWxlKG4tLSAmJiByZXQpCgl7CgkJY2luPj5hPj5iPj5jOwoJCWUgPSBtaW4oZCxjKTsKCQkKCQlpZihiPmspCgkJYj1rLHJldD0wOwoJCQoJCWYoaSxlKzEsMTYpCgkJY2FbaV09MDsKCQlpZihhPT0wKQoJCWE9MTsKCQlmKGthLGEsYikKCQl7CgkJCQoJCQlmKGksMCwxNikKCQkJdG1wW2ldPWNhW2ldLGNhW2ldPTA7CgkJCQoJCQlpZihrYT09YSkKCQkJa2FrYSAgPSAgbWluKDE2TEwsZSsxKTsKCQkJZWxzZQoJCQlrYWthICA9ICBtaW4oMTZMTCxjKzEpOwoJCQlmKGksMCxrYWthKQoJCQl7CgkJCQlmKGosMCwzKQoJCQkJewoJCQkJCWlmKGNoW2pdK2k+PTAgJiYgY2hbal0raTw9MTUpCgkJCQkJewoJCQkJCWNhW2ldICs9IHRtcFtpK2NoW2pdXTsKCQkJCQkvLyBpZihpPT0wKQoJCQkJCS8vIGNvdXQ8PHRtcFtpK2NoW2pdXTw8IiAiOwoJCQkJCX0KCQkJCX0KCQkJCS8vIGlmKGk9PTApCgkJCQkvLyBjb3V0PDxjYVtpXTw8IlxuIjsKCQkJfQoJCQkvLyBmKGksMCwzKQoJCQkvLyBjb3V0PDxjYVtpXTw8IiAiOwoJCQkvLyBjb3V0PDwiXG4iOwoJCX0KCQkKCQlkID0gYzsKCQkKCX0KCWYoaSwwLDE2KQoJdG1wW2ldPWNhW2ldLGNhW2ldPTA7CglmKGksMCwxNikKCXsKCQlmKGosMCwzKQoJCXsKCQkJaWYoY2hbal0raT49MCAmJiBjaFtqXStpPD0xNSkKCQkJewoJCQljYVtpXSArPSB0bXBbaStjaFtqXV07CgkJCS8vIGlmKGk9PTApCgkJCS8vIGNvdXQ8PHRtcFtpK2NoW2pdXTw8IiAiOwoJCQl9CgkJfQoJCS8vIGlmKGk9PTApCgkJLy8gY291dDw8Y2FbaV08PCJcbiI7Cgl9CgkvLyBmKGksMCwzKQoJLy8gY291dDw8Y2FbaV08PCIgIjsKCS8vIGNvdXQ8PCJcbiI7Cgljb3V0PDxjYVswXTsKCXJldHVybiAwOwp9