import sys MOD = 998244353 def main(): input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]); ptr +=1 M = int(input[ptr]); ptr +=1 k = int(input[ptr]); ptr +=1 Cs = list(map(int, input[ptr:ptr+k])) ptr +=k max_sum = 2*N -1 dp = [0]*(max_sum +1) dp[0] = 1 for s in range(1, max_sum +1): for d in range(1,7): if s -d >=0: dp[s] = (dp[s] + dp[s-d]) % MOD total =0 for s in range(max(0, 2*N -6), 2*N): cnt = dp[s] mul = (s +7 -2*N) total = (total + cnt * mul) % MOD pow6 = [1]*(2*N +7) for i in range(1, 2*N +7): pow6[i] = (pow6[i-1] *6) % MOD for C in Cs: C_mod = C % N forbidden = [[0]*2 for _ in range(N)] if 0 != C_mod: forbidden[0][0] =1 for s in range(0, 2*N): for a in 0,1: m = s - a*N if not (0 <= m < N): continue if forbidden[m][a] ==0: continue current = forbidden[m][a] for d in range(1,7): new_s = a*N +m +d if new_s >= 2*N: pass else: if a ==0: if new_s < N: new_a =0 new_m = new_s else: new_a =1 new_m = new_s -N else: new_s_val = N +m +d if new_s_val >=2*N: continue else: new_a =1 new_m = m +d if new_m == C_mod: continue if new_m >=N: continue forbidden[new_m][new_a] = (forbidden[new_m][new_a] + current) % MOD forbidden_count =0 for s in range(2*N -6, 2*N): if s >=2*N: continue if s <0: continue a = 1 m = s -N if m <0 or m >=N: continue mul = (s +7 -2*N) if m == C_mod: continue cnt = forbidden[m][1] forbidden_count = (forbidden_count + cnt * mul) % MOD ans = (total - forbidden_count) % MOD print(ans) if __name__ == '__main__': main()