public int Recursive(int[][] A, int[][] status, int i , int j){
		if (i == 0 && j == 0){
			if (status[0][0] == Integer.MIN_VALUE){
				status[0][0] = A[0][0];
			}
			return status[0][0];
		}
		
		if (i == 0){
			if (status[i][j] == Integer.MIN_VALUE){
				status[i][j - 1] = Recursive(A, status, i , j - 1);
				status[i][j] = status[i][j - 1] + A[i][j];
        	}
			return status[i][j];
		}
		if (j == 0){
			if (status[i][j] == Integer.MIN_VALUE){
				status[i - 1][j] = Recursive(A, status, i - 1, j);
				status[i][j] = status[i - 1][j] + A[i][j];
        	}
			return status[i][j];
		}
		if (status[i][j - 1] == Integer.MIN_VALUE){
			status[i][j - 1] = Recursive(A, status, i, j - 1);
		}
		if (status[i - 1][j] == Integer.MIN_VALUE){
			status[i - 1][j] = Recursive(A, status, i - 1, j);
		}
		status[i][j] = Math.min(status[i - 1][j], status[i][j - 1]) + A[i][j];
		return status[i][j];
	}