output_description: Print the answer in the following format:
  
      
      
      c_0 c_1 ... c_{(N - 1) + (M - 1)}
      
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M
      a_0 a_1 ... a_{N-1}
      b_0 b_1 ... b_{M-1}
attempt: MOD = [469762049, 2281701377, 2483027969]
  D = dict()
  
  
  def DFTm(A, proot, mod, s):
      n = 1 << s
      m = n >> 1
      if n == 1:
          return 0
      X, Y = [], []
      for i in range(0, n, 2):
          X.append(A[i])
          Y.append(A[i + 1])
      DFTm(X, proot, mod, s - 1)
      DFTm(Y, proot, mod, s - 1)
      a, b = 1, 0
      if D.get((proot, s), -1) == -1:
          b = pow(proot, (mod - 1) >> s, mod)
          D[(proot, s)] = b
      else:
          b = D[(proot, s)]
      for i in range(n):
          A[i] = (X[i & (m - 1)] + a * Y[i & (m - 1)]) % mod
          a = a * b % mod
  
  
  def FFTm(X, Y, mod):
      n = 1
      c = 0
      while len(X) + len(Y) > n:
          n <<= 1
          c += 1
      A = X[:]
      B = Y[:]
      while len(A) < n:
          A.append(0)
      while len(B) < n:
          B.append(0)
      DFTm(A, 3, mod, c)
      DFTm(B, 3, mod, c)
      for i in range(n):
          A[i] = A[i] * B[i] % mod
      DFTm(A, pow(3, mod - 2, mod), mod, c)
      z = pow(n, mod - 2, mod)
      for i in range(n):
          A[i] = A[i] * z % mod
      return A
  
  
  N, M = map(int, input().split())
  print(
      *FFTm(list(map(int, input().split())), list(map(int, input().split())), 998244353)[
          : N + M - 1
      ]
  )
  
problem_description: Statement
  
  You are given two integer arrays a_0, a_1, ..., a_{N - 1} and b_0, b_1, ...,
  b_{M - 1}. Calculate the array c_0, c_1, ..., c_{(N - 1) + (M - 1)}, defined
  by c_i = \sum_{j = 0}^i a_j b_{i - j} \bmod 998244353.
samples: [{"input": "4 5\n    1 2 3 4\n    5 6 7 8 9", "output": "5 16 34 60 70 70 59 36\n    \n\n* * *"}, {"input": "1 1\n    10000000\n    10000000", "output": "871938225"}]