#include <bits/stdc++.h>
using pii = std::pair<int, int>;
using pll = std::pair<long long, long long>;
const long long mod = 998244353;
const long long root = 15311432;
const long long root_1 = 469870224;
const long long root_pw = 1 << 23;
long long fpow(long long x, long long exp) {
  if (exp == 0) return 1;
  long long half = fpow(x, exp / 2);
  half = (half * half) % mod;
  if (exp & 1) half = (half * x) % mod;
  return half;
}
long long inverse(long long x) { return fpow(x, mod - 2); }
void fft(std::vector<long long>& a, bool invert) {
  long long n = (long long)a.size();
  for (long long i = 1, j = 0; i < n; ++i) {
    long long bit = n >> 1;
    for (; j >= bit; bit >>= 1) j -= bit;
    j += bit;
    if (i < j) std::swap(a[i], a[j]);
  }
  for (long long len = 2; len <= n; len <<= 1) {
    long long wlen = invert ? inverse(root) : root;
    for (long long i = len; i < root_pw; i <<= 1)
      wlen = (wlen * 1ll * wlen % mod);
    for (long long i = 0; i < n; i += len) {
      long long w = 1;
      for (long long j = 0; j < len / 2; ++j) {
        long long u = a[i + j], v = (a[i + j + len / 2] * 1ll * w % mod);
        a[i + j] = u + v < mod ? u + v : u + v - mod;
        a[i + j + len / 2] = u - v >= 0 ? u - v : u - v + mod;
        w = w * 1ll * wlen % mod;
      }
    }
  }
  if (invert) {
    long long nrev = inverse(n);
    for (long long i = 0; i < n; ++i) a[i] = a[i] * 1ll * nrev % mod;
  }
}
using poly = std::vector<long long>;
void print(poly a) {
  std::cout << "{";
  int sz = a.size();
  int cnt = std::min(sz, 10);
  for (int i = 0; i < sz && cnt; i++) {
    if (a[i]) {
      --sz;
      std::cout << "i"
                << " = " << i << "=" << a[i] << " ";
    }
  }
  std::cout << "}\n";
}
poly fpow(poly v1, int exp) {
  if (exp >= 2) v1.resize((v1.size() * exp + 1) / 2, 0);
  int lg = 1;
  while (lg <= (int)v1.size()) lg *= 2;
  lg *= 2;
  v1.resize(lg, 0);
  fft(v1, false);
  std::vector<long long> v(lg);
  for (int i = 0; i < lg; i++) v[i] = fpow(v1[i], exp);
  fft(v, true);
  while (v.size() && v.back() == 0) v.pop_back();
  return v;
}
int main() {
  std::ios::sync_with_stdio(false);
  int n, k;
  std::cin >> n >> k;
  poly r(10, 0);
  for (int i = 0; i < k; i++) {
    int d;
    std::cin >> d;
    r[d] = 1;
  }
  r = fpow(r, n / 2);
  long long ans = 0;
  for (int i = 0; i < (int)r.size(); i++) {
    ans = (ans + (r[i] * r[i])) % mod;
  }
  std::cout << ans << std::endl;
  return 0;
}
