#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int maxn = (1 << 21) + 5;
int rev[maxn], s, sum;
int n, k;
vector<int> h(10);
int quick_power(int a, int b) {
  int res = 1, base = a;
  while (b) {
    if (b & 1) res = (LL)res * base % 998244353;
    base = (LL)base * base % 998244353;
    b >>= 1;
  }
  return res;
}
void get_rev(int bit) {
  for (int i = 0; i < (1 << bit); i++)
    rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << bit - 1);
}
void FFT(vector<int> &a, int n, int dft) {
  int x, y;
  for (int i = 0; i < n; i++)
    if (i < rev[i]) swap(a[i], a[rev[i]]);
  for (int stp = 1; stp < n; stp <<= 1) {
    int wn = quick_power(3, (998244353 - 1) / (stp * 2));
    if (dft == -1) wn = quick_power(wn, 998244353 - 2);
    for (int j = 0; j < n; j += stp << 1) {
      int wnk = 1;
      for (int k = j; k < j + stp; k++) {
        x = a[k];
        y = (LL)wnk * a[k + stp] % 998244353;
        a[k] = (x + y) % 998244353;
        a[k + stp] = (x - y + 998244353) % 998244353;
        wnk = (LL)wnk * wn % 998244353;
      }
    }
  }
  if (dft == -1) {
    int t = quick_power(n, 998244353 - 2);
    for (int i = 0; i < n; i++) a[i] = (LL)a[i] * t % 998244353;
  }
}
vector<int> mul(vector<int> x, vector<int> y) {
  int s = 2, l1 = x.size(), l2 = y.size(), bit;
  for (bit = 1; (1 << bit) < l1 + l2 - 1; bit++) s <<= 1;
  get_rev(bit);
  x.resize(s), y.resize(s);
  FFT(x, s, 1);
  FFT(y, s, 1);
  for (int i = 0; i < s; i++) x[i] = (LL)x[i] * y[i] % 998244353;
  FFT(x, s, -1);
  while (!x.empty() && x.back() == 0) x.pop_back();
  return x;
}
vector<int> solve(int x) {
  if (x == 0) return vector<int>(1, 1);
  if (x == 1) return h;
  vector<int> a = solve(x / 2);
  if (x & 1)
    return mul(mul(a, a), h);
  else
    return mul(a, a);
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1, tmp; i <= k; i++) scanf("%d", &tmp), h[tmp] = 1;
  vector<int> ans = solve(n / 2);
  for (int i : ans) sum = (sum + (LL)i * i % 998244353) % 998244353;
  printf("%d", sum);
  return 0;
}
