output_description: Print the number of the pairs of a subset of the rows and a subset of the
  columns that satisfy the condition, modulo 998244353.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M
      a_{11} ... a_{1M}
      :
      a_{N1} ... a_{NM}
attempt: import numpy as np
  
  IN() = lambda: list(map(int, input().split()))
  n, m = IN()
  a = np.array([IN() for i in range(n)])
  r = np.linalg.matrix_rank(a)
  print((2 ** (n + m - 1) - 2 ** (n + m - 1 - r)) % 998244353)
  
problem_description: Statement
  
  There is a square grid with N rows and M columns. Each square contains an
  integer: 0 or 1. The square at the i-th row from the top and the j-th column
  from the left contains a_{ij}.
  
  Among the 2^{N+M} possible pairs of a subset A of the rows and a subset B of
  the columns, find the number of the pairs that satisfy the following
  condition, modulo 998244353:
  
    * The sum of the |A||B| numbers contained in the intersection of the rows belonging to A and the columns belonging to B, is odd.
samples: [{"input": "2 2\n    0 1\n    1 0", "output": "6\n    \n\nFor example, if A consists of the first row and B consists of both columns,\nthe sum of the numbers contained in the intersection is 0+1=1.\n\n* * *"}, {"input": "2 3\n    0 0 0\n    0 1 0", "output": "8"}]