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
  import itertools
  from scipy import signal
  
  N, M = [int(s) for s in input().split()]
  A = np.zeros([N, M])
  for n in range(N):
      A[n] = [int(m) for m in input().split()]
  
  N_fft, M_fft = 2 * N, 2 * M
  Fa = np.fft.rfft2(A, [N_fft, M_fft])
  
  oddnum = 0
  for n, m in itertools.product(range(N), range(M)):
      W = np.fft.rfft2(np.ones([n + 1, m + 1]), [N_fft, M_fft])
      Aw = np.fft.irfft2(Fa * W).astype(int)
      print(Aw[n:N, m:M])
      oddnum += np.sum(Aw[n:N, m:M] % 2 == 1)
  
  print(oddnum % 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"}]