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: #!/usr/bin/env python3
  from collections import defaultdict
  from collections import deque
  from heapq import heappush, heappop
  import sys
  import math
  import bisect
  import random
  import itertools
  sys.setrecursionlimit(10**5)
  stdin = sys.stdin
  bisect_left = bisect.bisect_left
  bisect_right = bisect.bisect_right
  def LI(): return list(map(int, stdin.readline().split()))
  def LF(): return list(map(float, stdin.readline().split()))
  def LI_(): return list(map(lambda x: int(x)-1, stdin.readline().split()))
  def II(): return int(stdin.readline())
  def IF(): return float(stdin.readline())
  def LS(): return list(map(list, stdin.readline().split()))
  def S(): return list(stdin.readline().rstrip())
  def IR(n): return [II() for _ in range(n)]
  def LIR(n): return [LI() for _ in range(n)]
  def FR(n): return [IF() for _ in range(n)]
  def LFR(n): return [LI() for _ in range(n)]
  def LIR_(n): return [LI_() for _ in range(n)]
  def SR(n): return [S() for _ in range(n)]
  def LSR(n): return [LS() for _ in range(n)]
  mod = 1000000007
  inf = float('INF')
  
  #A
  def A():
      a, b = LI()
      if (a * b) % 2:
          print("Yes")
      else:
          print("No")
      return
  
  #B
  def B():
      n = II()
      w = SR(n)
      d = []
      for i in w:
          d.append("".join(i))
      if len(set(d)) != n:
          print("No")
          return
      for i in range(n - 1):
          if w[i][-1] != w[i + 1][0]:
              print("No")
              return
      print("Yes")
      return
  
  #C
  def C():
      def gcd(a, b):
          a, b = max(a, b), min(a, b)
          while b:
              a, b = b, a % b
          return a
      n, x = LI()
      xn = LI()+[x]
      xn.sort()
      ans = xn[1] - xn[0]
      for i in range(1, n):
          ans = gcd(ans, xn[i + 1] - xn[i])
      print(ans)
      return
  
  #D
  def D():
      h, w = LI()
      d = []
      for y in range(h):
          a = LI()
          tmp = []
          for x in range(w):
              if a[x] & 1:
                  tmp.append((y,x))
          for t in tmp[::-1 if y & 1 else 1]:
              d.append(t)
      ans = []
      for i in range(0, len(d) - 1, 2):
          y, x = d[i]
          next_y, next_x = d[i + 1]
          while abs(x - next_x) > 0:
              ans.append((y + 1, x + 1, y + 1, x + 1 + (1 if x < next_x else - 1))
              x += 1 if x < next_x else - 1
          while abs(y - next_y) > 0:
              ans.append((y + 1, x + 1, y + 1 + (1 if y < next_y else - 1), x + 1))
              y += 1 if y < next_y else - 1
      print(len(ans))
      for a in ans:
          print(*a)
      return
  
  #Solve
  if __name__ == '__main__':
      D()
  
  
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"}]