#include <bits/stdc++.h>
using namespace std;
long double PI = acosl(-1);
bool compare_int(int a, int b) { return (a > b); }
bool compare_string(string a, string b) { return a.size() < b.size(); }
bool compare_pair(const pair<int, int> &a, const pair<int, int> &b) {
  if (a.second == b.second)
    return a.first < b.first;
  else
    return (a.second > b.second);
}
bool cmp(pair<string, int> x, pair<string, int> y) {
  return (x.second < y.second);
}
void NA() {
  printf("NO\n");
  exit(0);
}
void YA() {
  printf("YES\n");
  exit(0);
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long int n, k, x;
  cin >> n >> k;
  vector<long long int> a(n + 1), pre(n + 1), b(k + 1);
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    i == 1 ? pre[i] = a[i] : pre[i] = pre[i - 1] + a[i];
  }
  for (int i = 1; i <= k; i++) cin >> b[i];
  unordered_map<long long int, long long int> Map;
  set<long long int> Set;
  long long int Max = 9e6 + 5, hand = 4e6 + 5;
  for (int i = 1; i <= k; i++) {
    Set.clear();
    for (int j = 1; j <= n; j++) Set.insert(b[i] - pre[j] + hand);
    for (auto it = Set.begin(); it != Set.end(); it++)
      if (*it >= 0 and *it <= Max) Map[*it]++;
  }
  int tot = 0;
  for (auto it = Map.begin(); it != Map.end(); it++) {
    if (it->second == k) tot++;
  }
  cout << tot << endl;
}
