public int solution(int[][] a) {
        int maximumValue = Integer.MIN_VALUE;
        for (int p = 0; p < a.length; p++) {
            for (int q = 0; q < a[p].length; q++) {
                if (p > 0 && q > 0) {
                    a[p][q] += Math.max(a[p - 1][q], a[p][q - 1]);
                } else if (p == 0 && q > 0) {
                    a[p][q] += a[p][q - 1];
                } else if (q == 0 && p > 0) {
                    a[p][q] += a[p - 1][q];
                }
                maximumValue = a[p][q];
            }

        }

        return maximumValue;
    }