v#include <stdio.h>
#include <stdbool.h>

int main() {
    int m, n;
    if (scanf("%d %d", &m, &n) != 2 || m < 1 || m > 100 || n < 1 || n > 100) {
        printf("false\n");
        return 0;
    }

    int matrix[m][n];
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            if (scanf("%d", &matrix[i][j]) != 1) {
                printf("false\n");
                return 0;
            }
        }
    }

    int target;
    if (scanf("%d", &target) != 1) {
        printf("false\n");
        return 0;
    }

    // Since each row's first element > last element of previous row,
    // the whole matrix can be treated as a sorted 1D array.
    int left = 0, right = m * n - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2;
        int mid_val = matrix[mid / n][mid % n];
        if (mid_val == target) {
            printf("true\n");
            return 0;
        } else if (mid_val < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    printf("false\n");
    return 0;
}