import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param target int整型
     * @param array int整型二维数组
     * @return bool布尔型
     */
    public boolean Find (int target, int[][] array) {
        // write code here
        // 解题思路:由题可知从左到右升序,从上到下升序
        // 因此从左下角开始比较,比它大的元素肯定在它的右边
        // 比它小的元素在它的上面,依次比较,只到出界

        if (array == null || array.length == 0
                || array[0].length == 0) {
            return false;
        }

        int h = array.length;
        int l = array[0].length;

        int ch = array.length - 1;
        int cl = 0;
        while (ch >= 0 && cl < l) {
            int val = array[ch][cl];

            if (val == target) {
                return true;
            }

            if (val > target) {
                ch--;
            }

            if (val < target) {
                cl++;
            }
        }

        return false;
    }
}