int maxValue(int** grid, int gridSize, int* gridColSize){
    int i, j, temp1, temp2;
    for(i=gridSize-1; i>=0; i--){
        for(j=gridColSize[i]-1; j>=0; j--){
            temp1=(i+1<gridSize)?grid[i+1][j] :0;
            temp2=(j+1<gridColSize[i])?grid[i][j+1] :0;
            grid[i][j]+=fmax(temp1,temp2);
        }
    }
    return grid[0][0];
}