n,m = map(int,input().split())
nums = []
for i in range(m):
    nums.append(int(input()))

class sol:
    def __init__(self):
        #    
        self.seen = set()      def dfs(self,nums,n,m,pos,step):
                    # 停止条件:如果是最后一次看时间后走的 
        if step == m:
            if pos not in self.seen:
                self.seen.add(pos)
            return
                # 剪枝 保证始终在坐标轴范围递归
        if 1 <= pos + nums[step]  <= n:
            a = pos + nums[step]
            self.dfs(nums,n,m,a,step+1)
        if 1 <= pos - nums[step]  <= n:
            b = pos - nums[step]
            self.dfs(nums,n,m,b,step+1)
        return
    
    def main(self):
                # 以坐标轴的每个起点为出发点进行递归
        for pos in range(1,n+1):
            self.dfs(nums,n,m,pos,0)
        print(len(self.seen))
test = sol()
test.main()    
基本思想:DFS + 剪枝     以坐标轴的每个起点为出发点进行递归,
    在坐标轴范围内以不同行走方向不断遍历行走,直到最后一次看时间之后