DP optimization

problem link -
for(int lines=0;lines<=m;lines++){
dp[0][lines][lines*vec[0]]=1;
}

for(int i=0;i<n-1;i++){
    for(int lines=0;lines<=m;lines++){
        for(int bugs=0;bugs<=b;bugs++){
            for(int k=0;k<=lines;k++)
                dp[i+1][lines][bugs]=((dp[i+1][lines][bugs]%mod)+((bugs-k*vec[i+1]>=0)?dp[i][lines-k][bugs-k*vec[i+1]]:0)%mod)%mod;
        }
    }
}

int ans=0;
for(int bugs=0;bugs<=b;bugs++){
    ans=((ans%mod)+(dp[n-1][m][bugs]%mod))%mod;
}

i have solved this problem in O(n4) how to optimize it can someone give any idea?