# Question Name:Search in a matrix

```#include <bits/stdc++.h>

#define inp(x) scanf("%d",&x)
#define loop(i,n) for(ll i=0;i<n;++i)
#define pb push_back
#define mp make_pair
#define ll long long

using namespace std;
//-------------------------------------------------//

int main(){
int t,m,n;
cin >> t;

while(t--){
cin >> m >> n;
int a[m][n];
loop(i,m)
loop(j,n)
cin >> a[i][j];
//Start at bottom left
int key,x=m-1,y=0;
cin >> key;

while(x>=0 && y<n){
if(a[x][y] == key){
cout << 1 << endl;
goto end;
}
(a[x][y] < key) ? (y++): (x--);
}
cout << 0 << endl;
end:;
}
return 0;
}```

### Problem Description

Given an n x m matrix, where every row and column is sorted in increasing order, and a number x .

The task is to find whether element x is present in the matrix or not.

Expected Time Complexity : O(m + n)

Input:
The first line of input contains a single integer T denoting the number of test cases. Then T test cases follow. Each test case consists of three lines.
First line of each test case consist of two space separated integers N and M, denoting the number of element in a row and column respectively.
Second line of each test case consists of N*M space separated integers denoting the elements in the matrix in row major order.
Third line of each test case contains a single integer x, the element to be searched.

Output:

Corresponding to each test case, print in a new line, 1 if the element x is present in the matrix, otherwise simply print 0.

Constraints:
1<=T<=200
1<=N,M<=30

• ###### Test Case 1

Input (stdin)

```2
3 3
3 30 38 44 52 54 57 60 69
62
1 6
18 21 27 38 55 67
55
```

Expected Output

```0
1```
• ###### Test Case 2

Input (stdin)

```2
3 2
2 16 18 20 25 30
60
4 3
2 30 49 56 57 64 20 10 34 54 63 72
68

```

Expected Output

```0
0``` 