output_description: Print a sequence of operations that maximizes the number of cells containing
  an even number of coins, in the following format:
  
      
      
      N
      y_1 x_1 y_1' x_1'
      y_2 x_2 y_2' x_2'
      :
      y_N x_N y_N' x_N'
      
  
  That is, in the first line, print an integer N between 0 and H \times W
  (inclusive), representing the number of operations.
  
  In the (i+1)-th line (1 \leq i \leq N), print four integers y_i, x_i, y_i' and
  x_i' (1 \leq y_i, y_i' \leq H and 1 \leq x_i, x_i' \leq W), representing the
  i-th operation. These four integers represents the operation of moving one of
  the coins placed in Cell (y_i, x_i) to a vertically or horizontally adjacent
  cell, (y_i', x_i').
  
  Note that if the specified operation violates the specification in the problem
  statement or the output format is invalid, it will result in _Wrong Answer_.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      H W
      a_{11} a_{12} ... a_{1W}
      a_{21} a_{22} ... a_{2W}
      :
      a_{H1} a_{H2} ... a_{HW}
attempt: import sys, bisect, math, itertools, string, queue, copy
  
  # import numpy as np
  # import scipy
  from collections import Counter, defaultdict, deque
  from itertools import permutations, combinations
  from heapq import heappop, heappush
  
  input = sys.stdin.readline
  sys.setrecursionlimit(10**8)
  mod = 10**9 + 7
  
  
  def inp():
      return int(input())  # n=1
  
  
  def inpm():
      return map(int, input().split())  # x=1,y=2
  
  
  def inpl():
      return list(map(int, input().split()))  # a=[1,2,3,4,5,...,n]
  
  
  def inpls():
      return list(input().split())  # a=['1','2','3',...,'n']
  
  
  def inplm(n):
      return list(int(input()) for _ in range(n))  # x=[] 複数行
  
  
  def inplL(n):
      return [list(input()) for _ in range(n)]
  
  
  def inplT(n):
      return [tuple(input()) for _ in range(n)]
  
  
  def inpll(n):
      return [
          list(map(int, input().split())) for _ in range(n)
      ]  # [[1,1,1,1],[2,2,2,2],[3,3,3,3]]
  
  
  def inplls(n):
      return sorted(
          [list(map(int, input().split())) for _ in range(n)]
      )  # [[1,1,1,1],[2,2,2,2],[3,3,3,3]]
  
  
  def graph():
      n = inp()
      g = [[] for _ in range(n)]
      for i in range(n):
          a = inp()
          a -= 1
          g[i].append(a)
          g[a].append(i)
      return n, g
  
  
  def rotation_find(n, m, g):  # 迷路を外側からぐるぐると探索
      did = [[False for _ in range(m + 2)] for _ in range(n + 2)]
      for i in range(n + 2):
          did[i][0] = True
          did[i][m + 1] = True
      for i in range(m + 2):
          did[0][i] = True
          did[n + 1][i] = True
      x = 1
      y = 1
      key = 1
      ans = []
      while True:
          did[x][y] = True
          key1 = 0
          if g[x - 1][y - 1] % 2 != 0:
              key1 = 1
          a, b = x, y
          if key == 1:
              x += 1
          elif key == 2:
              y += 1
          elif key == 3:
              x -= 1
          elif key == 4:
              y -= 1
          if key == 1 and did[x][y]:
              x -= 1
              y += 1
              key = 2
          elif key == 2 and did[x][y]:
              y -= 1
              x -= 1
              key = 3
          elif key == 3 and did[x][y]:
              x += 1
              y -= 1
              key = 4
          elif key == 4 and did[x][y]:
              x += 1
              y += 1
              key = 1
          if key1:
              g[a - 1][b - 1] -= 1
              g[x - 1][y - 1] += 1
              ans.append((a, b, x, y))
          if did[x][y]:
              break
      return ans
  
  
  def main():
      h, w = inpm()
      a = inpll(h)
      ans = rotation_find(h, w, a)
      print(len(ans))
      for i in range(len(ans)):
          print(*ans[i])
  
  
  if __name__ == "__main__":
      main()
  
problem_description: Statement
  
  There is a grid of square cells with H horizontal rows and W vertical columns.
  The cell at the i-th row and the j-th column will be denoted as Cell (i, j).
  
  In Cell (i, j), a_{ij} coins are placed.
  
  You can perform the following operation any number of times:
  
  Operation: Choose a cell that was not chosen before and contains one or more
  coins, then move one of those coins to a vertically or horizontally adjacent
  cell.
  
  Maximize the number of cells containing an even number of coins.
samples: [{"input": "2 3\n    1 2 3\n    0 1 1", "output": "3\n    2 2 2 3\n    1 1 1 2\n    1 3 1 2\n    \n\nEvery cell contains an even number of coins after the following sequence of\noperations:\n\n  * Move the coin in Cell (2, 2) to Cell (2, 3).\n  * Move the coin in Cell (1, 1) to Cell (1, 2).\n  * Move one of the coins in Cell (1, 3) to Cell (1, 2).\n\n* * *"}, {"input": "3 2\n    1 0\n    2 1\n    1 0", "output": "3\n    1 1 1 2\n    1 2 2 2\n    3 1 3 2\n    \n\n* * *"}, {"input": "1 5\n    9 9 9 9 9", "output": "2\n    1 1 1 2\n    1 3 1 4"}]