Help me in solving MAXCOMP problem

My issue

the output is correct but where I am failing the test cases

My code

t=int(input())
for _ in range(t):
    n=int(input())
    events=[]
    for c in range(n):
        Si,Ei,Ci=map(int,input().split())
        events.append((Si,Ei,Ci))
    events.sort(key=lambda x:x[1])
    dp=[0]*48
    for event in events:
        start,end,comp=event
        for i in range(end,start,-1):
            dp[i]=max(dp[i],dp[start]+comp)
    print(max(dp))
    

Learning course: Dynamic programming
Problem Link: Event Organizer Practice Problem in Dynamic programming - CodeChef

@sivaramaraju21
this is my c++ code .
plzz refer it for better understanding.
ping me incase u get stuck at any point.

#include <bits/stdc++.h>
using namespace std;
int dp[2001];
int lowerbound(vector<vector<long long int>>& v,int sr)
{
    int lo=0,hi=v.size()-1;
    int ans=v.size();
    while(lo<=hi)
    {
        int mid=lo+(hi-lo)/2;
        if(v[mid][0]>=sr)
        {
            ans=mid;
            hi=mid-1;
        }
        else
        {
            lo=mid+1;
        }
    }
    return ans;
}
long long int cal(vector<vector<long long int>>& v,int i)
{
    if(i>=v.size())
    {
        return 0;
    }
    if(dp[i]!=-1)
    return dp[i];
    int sr=v[i][1];
   int l=lowerbound(v,sr);
    return dp[i]=max(v[i][2]+cal(v,l),cal(v,i+1));
}
int main() {
	// your code goes here
	int t;
	cin>>t;
	while(t--)
	{
	    int n,a,b,c;
	    cin>>n;
	    vector<vector<long long int>> v(n,vector<long long int>(3));
	    for(int i=0;i<n;i++)
	    {
	        for(int j=0;j<3;j++)
	        {
	            cin>>v[i][j];
	        }
	    }
	    sort(v.begin(),v.end());
	   memset(dp,-1,sizeof(dp));
	    cout<<cal(v,0)<<endl;
	}

}