class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        int m = array.size();
        int n = array[0].size();
        if(m == 0 || n == 0) return false;
        int i = 0 , j = 0 , now = array[0][0];
        while(1){
            if(now == target) return true;
            if(j<n-1){
                if(now < target && array[i][j+1] <= target){
                    now = array[i][j+1];
                    j = j+1;
                    continue;
                }
                if(j > 0 && array[i][j-1] >= target){
                    now = array[i][j-1];
                    j = j - 1;
                    continue;
                }
                if(i < m-1){
                    now = array[i+1][j];
                    i = i + 1;
                    continue;
                }
            }
            if(i<m-1){
                now = array[i+1][j];
                i = i + 1;
                if(array[i][j-1] >= target){
                    now = array[i][j-1];
                    j = j - 1;
                    continue;
                }
                continue;
            }
            break;
        }
        return false;
    }
};