Cherry has a binary matrix $A$ consisting of $N$ rows and $M$ columns. The rows are numbered from $1$ to $N$, columns are numbered from $1$ to $M$. Element at row $i$ ($1$ ≤ $i$ ≤ $N$) and column $j$ ($1$ ≤ $j$ ≤ $M$) is denoted as $A_{ij}$. All elements of $A$ are either $0$ or $1$.
He performs $Q$ queries on matrix. Each query is provided by four integers $x_{1}$, $y_{1}$, $x_{2}$, $y_{2}$ which define the rectangle, where ($x_{1}$, $y_{1}$) stands for the coordinates of the top left cell of the rectangle, while ($x_{2}$, $y_{2}$) stands for the coordinates of the bottom right cell. You need to flip all the bits i.e. ($0$ to $1$, $1$ to $0$) that are located fully inside the query rectangle.
Finally, print the matrix after performing all the queries.
Note: $x_{1}$ represents the row number while $y_{1}$ represents the column number.
-----Input:-----
- The first line of the input contains two integers $N$ and $M$ — the number of rows and the number of columns in the matrix.
- Each of the next $N$ lines contains a string of length $M$, where the $j^{th}$ character of $i^{th}$ line denotes the value of $A_{i,j}$. 
- Next line contains an integer $Q$ — the number of queries.
- Then follow $Q$ lines with queries descriptions. Each of them contains four space-seperated integers $x_{1}$, $y_{1}$, $x_{2}$, $y_{2}$ — coordinates of the up left and bottom right cells of the query rectangle.
-----Output:-----
Print the matrix, in the form of $N$ strings, after performing all the queries.
-----Constraints-----
- $1 \leq N,M \leq 1000$
- $0 \leq  A_{ij}  \leq 1$
- $1 \leq Q \leq 10^6$
- $1 \leq x_{1} \leq x_{2} \leq N$
- $1 \leq y_{1} \leq y_{2} \leq M$
-----Sample Input:-----
2 2
00
00
3
1 1 1 1
2 2 2 2
1 1 2 2 
-----Sample Output:-----
01
10
-----Explanation:-----
Example case 1:
After processing the 1st query 1 1 1 1, matrix becomes:
[1000][1000]\begin{bmatrix} 10 \\ 00  \end{bmatrix}
After processing the 2nd query 2 2 2 2, the matrix becomes:
[1001][1001]\begin{bmatrix} 10 \\ 01  \end{bmatrix}
After processing the 3rd query 1 1 2 2, matrix becomes:
[0110][0110]\begin{bmatrix} 01 \\ 10  \end{bmatrix}
We need to output the matrix after processing all queries.

n,m= map(int,input().split())
MX=list()
for i in range(n):
 YYY=str(input())
 yy=list(YYY)
 a=[]
 for j in range(m):
  a.append(yy[j])
 MX.append(a)

q=int(input())
dp=[[0 for i in range(m)]for i in range(n)]
for _ in range(q):
 x,y,x2,y2=map(int,input().split())
 dp[x-1][y-1]+=1
 if x2<n:
  dp[x2][y-1]-=1
 if y2<m:
  dp[x-1][y2]-=1
 if x2<n and y2<m:
  dp[x2][y2]-=1


for i in range(n):
 for j in range(1,m):
  dp[i][j]+=dp[i][j-1]

for i in range(m):
 for j in range(1,n):
  dp[j][i]+=dp[j-1][i]

# print(dp)
# print(MX)
for i in range(n):
 for j in range(m):
  if dp[i][j]%2==1:
   if MX[i][j]=='0':
    MX[i][j]='1'
   else:
    MX[i][j]='0'

  

for i in range(n):
 for j in range(m):
   print(MX[i][j],end="")

 print()


n,m= map(int,input().split())
MX=list()
for i in range(n):
 YYY=str(input())
 yy=list(YYY)
 a=[]
 for j in range(m):
  a.append(yy[j])
 MX.append(a)

q=int(input())
dp=[[0 for i in range(m)]for i in range(n)]
for _ in range(q):
 x,y,x2,y2=map(int,input().split())
 dp[x-1][y-1]+=1
 if x2<n:
  dp[x2][y-1]-=1
 if y2<m:
  dp[x-1][y2]-=1
 if x2<n and y2<m:
  dp[x2][y2]-=1


for i in range(n):
 for j in range(1,m):
  dp[i][j]+=dp[i][j-1]

for i in range(m):
 for j in range(1,n):
  dp[j][i]+=dp[j-1][i]

# print(dp)
# print(MX)
for i in range(n):
 for j in range(m):
  if dp[i][j]%2==1:
   if MX[i][j]=='0':
    MX[i][j]='1'
   else:
    MX[i][j]='0'

  

for i in range(n):
 for j in range(m):
   print(MX[i][j],end="")

 print()
