```
class Solution {
public:
int N,M ;
int minimumTotal(vector<vector<int> > &triangle) {
N = triangle.size() ;
M = N ;
for(int i=1;i<N;i++){
triangle[i][0] += triangle[i-1][0] ;
triangle[i][i] += triangle[i-1][i-1] ;
}
for(int i=2;i<N;i++){
for(int j=1;j<i;j++){
triangle[i][j] += min(triangle[i-1][j-1],triangle[i-1][j]) ;
}
}
int ans = 100000000 ;
for(int i=0;i<N;i++)
ans = min(ans,triangle[N-1][i]) ;
return ans ;
}
};
```