#include <bits/stdc++.h>
#define M 500
using namespace std;
int n;
int ans;
int dp[M+5][M+5];
int dis[M+5],st[M+5],ck[M+5];
int a[M+5][M+5];
void pro(){
dp[0][0]=1;
for(int k=1;k<n;k++){
for(int i=0;i<k;i++){
for(int j=0;j<k;j++){
if(i==j&&i!=0){
continue;
}
if(dp[i][j]==0){
continue;
}
if(a[i][k]){
dp[k][j]+=dp[i][j];
dp[k][j]%=1000;
}
if(a[k][j]){
dp[i][k]+=dp[i][j];
dp[i][k]%=1000;
}
}
}
}
/*for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<dp[i][j]<<" ";
}
cout<<endl;
}*/
for(int i=0;i<n;i++){
if(a[i][n-1]){
ans+=dp[i][n-1];
ans%=1000;
}
}
}
int main(){
//freopen("in.txt","r",stdin);
cin>>n;
for(int i=0;i<n;i++){
cin>>dis[i]>>st[i]>>ck[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(abs(dis[i]-dis[j])<=st[i]&&!(i>j&&!ck[i])){
a[i][j]=1;
}
}
}
pro();
cout<<ans<<endl;
return 0;
}
Comments
Post a Comment