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.

Constraints

* 1 \leq N,M \leq 300
* 0 \leq a_{i,j} \leq 1(1\leq i\leq N,1\leq j\leq M)
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N M
a_{11} ... a_{1M}
:
a_{N1} ... a_{NM}


Output

Print the number of the pairs of a subset of the rows and a subset of the columns that satisfy the condition, modulo 998244353.

Examples

Input

2 2
0 1
1 0


Output

6


Input

2 3
0 0 0
0 1 0


Output

8
N,M=map(int,input().split())
A=[[int(i) for i in input().split()] for i in range(N)]
r=0
mod=998244353
for j in range(M):
  flag=False
  for i in range(r,N):
    if not flag:
      if A[i][j]:
        flag=True
        A[i],A[r]=A[r],A[i]
        r+=1
    else:
      if A[i][j]:
        for k in range(M):
          A[i][k]^=A[r-1][k]

Factorial=[1]*(r+1)
for i in range(1,r+1):
  Factorial[i]=Factorial[i-1]*(i)%mod
def power(x,y):
  if y==0:
    return 1
  elif y==1:
    return x%mod
  elif y%2==0:
    return power(x,y//2)**2%mod
  else:
    return (power(x,y//2)**2)*x%mod
  
inverseFactorial=[1]*(r+1)
inverseFactorial[r]=power(Factorial[r],mod-2)
for i in range(0,r)[::-1]:
  inverseFactorial[i]=(inverseFactorial[i+1]*(i+1))%mod
  
def comb(x,y):
  if x<y or y<0:
    return 0
  else:
    return (Factorial[x]*inverseFactorial[y]*inverseFactorial[x-y])%mod

ans=0
a=1
while a<=r:
  ans=(ans+comb(r,a)*power(3,r-a)*power(4,min(N,M)-r)*power(2,max(N,M)-min(N,M)))%mod
  a+=2
print(ans)
  
  
        