#include #include #include #include #include #include using namespace std; struct block { int x,y,z,d; }b[1005]; long long dp[1005]; int n; bool cmp(block a,block b) { if(a.x!=b.x)return a.xb.d; } void DP() { long long ans=b[0].z; for(int i=0;i=b[j].y&&(b[i].y*b[j].y||b[i].x>b[j].x)) dp[i]=max(dp[i],dp[j]+b[i].z); } } if(b[i].d==2) { for(int j=0;jb[j].x&&b[i].y>b[j].y) { dp[i]=max(dp[i],dp[j]+b[i].z); } } } ans=max(ans,dp[i]); } cout<