Given are integer sequence of length N, A = (A_1, A_2, \cdots, A_N), and an integer K.
For each X such that 1 \le X \le K, find the following value:
\left(\displaystyle \sum_{L=1}^{N-1} \sum_{R=L+1}^{N} (A_L+A_R)^X\right) \bmod 998244353

-----Constraints-----
 - All values in input are integers.
 -  2 \le N \le 2 \times 10^5
 -  1 \le K \le 300 
 -  1 \le A_i \le 10^8 

-----Input-----
Input is given from Standard Input in the following format:
N K
A_1 A_2 \cdots A_N

-----Output-----
Print K lines.
The X-th line should contain the value \left(\displaystyle \sum_{L=1}^{N-1} \sum_{R=L+1}^{N} (A_L+A_R)^X \right) \bmod 998244353.

-----Sample Input-----
3 3
1 2 3

-----Sample Output-----
12
50
216

In the 1-st line, we should print (1+2)^1 + (1+3)^1 + (2+3)^1 = 3 + 4 + 5 = 12.
In the 2-nd line, we should print (1+2)^2 + (1+3)^2 + (2+3)^2 = 9 + 16 + 25 = 50.
In the 3-rd line, we should print (1+2)^3 + (1+3)^3 + (2+3)^3 = 27 + 64 + 125 = 216.

```python

USER_FILENAME = "<user_code>"
import sys, json, builtins
import math, heapq, bisect, itertools, functools, collections, statistics, fractions, decimal, operator, array, random, re, string, os, pathlib
try:
    import resource as _res
except Exception:
    _res = None
from collections import Counter, defaultdict, deque, OrderedDict
from functools import lru_cache, reduce
from itertools import accumulate, permutations, combinations, product
from math import gcd, ceil, floor, sqrt
from decimal import Decimal
try:
    from typing import *
except Exception:
    pass
try:
    sys.setrecursionlimit(1_000_000)
except Exception:
    pass
try:
    import site as _site
    try:
        _sys_sites = _site.getsitepackages() if hasattr(_site, "getsitepackages") else []
        for _p in _sys_sites:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
    try:
        _usp = _site.getusersitepackages()
        if isinstance(_usp, str):
            _usp = [_usp]
        for _p in _usp:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
except Exception:
    pass

ns = {"__name__": "__main__"}
for _k, _v in list(globals().items()):
    if not _k.startswith("_"):
        ns[_k] = _v
_CODE = "import sys\n\nreadline = sys.stdin.readline\nINF = float('INF')\nsys.setrecursionlimit(10 ** 5)\n\n\ndef main():\n    import numpy as np\n\n    def combmoddp():\n        n = 400\n        comb = np.array([[0] * (n + 1) for _ in range(n + 1)])\n        comb[0][0] = 1\n\n        for i in range(1, n + 1):\n            comb[i][0] = 1\n            for j in range(1, i + 1):\n                comb[i][j] = (comb[i - 1][j - 1] + comb[i - 1][j]) % MOD\n\n        return comb\n\n    MOD = 998244353\n    N, K = list(map(int, readline().split()))\n    A = np.array(list(map(int, readline().split())), np.int64)\n\n    s = np.array([0] * (K + 1), np.int64)\n    t = np.array([1] * N, np.int64)\n    for i in range(K + 1):\n        s[i] = np.sum(t) % MOD\n        t = t * A\n        t = np.remainder(t, MOD)\n\n    comb = combmoddp()\n    d = np.array([1] * N, np.int64)\n\n    inv2 = pow(2, MOD - 2, MOD)\n    for x in range(1, K + 1):\n        ans = 0\n        for i in range(x + 1):\n            t = (s[i] * s[x - i]) % MOD\n            t = (t * comb[x][i]) % MOD\n            ans += t\n        ans %= MOD\n\n        d = 2 * A * d\n        d = np.remainder(d, MOD)\n        ans -= np.sum(d)\n        ans %= MOD\n        ans *= inv2\n        ans %= MOD\n        print(ans)\n\n\ndef __starting_point():\n    main()\n\n__starting_point()"
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

```

Measured memory_bytes: 8702755