#include <bits/stdc++.h>
using namespace std;
int a[200001];
int b[200001];
vector<int> ans;
int main() {
  int n, m, p;
  scanf("%d%d%d", &n, &m, &p);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  for (int i = 0; i < m; i++) {
    scanf("%d", &b[i]);
  }
  for (int i = 0; i < p && i + (long long)(m - 1) * p < n; ++i) {
    map<int, int> mp;
    int j, k;
    for (j = 0; j < m; ++j) ++mp[b[j]];
    for (j = 0, k = i; j < m; k += p, ++j) {
      if (--mp[a[k]] == 0) mp.erase(a[k]);
    }
    for (j = i;; j += p, k += p) {
      if (!mp.size()) ans.push_back(j + 1);
      if (k >= n) break;
      if (--mp[a[k]] == 0) mp.erase(a[k]);
      if (++mp[a[j]] == 0) mp.erase(a[j]);
    }
  }
  sort(ans.begin(), ans.end());
  printf("%d\n", ans.size());
  for (int i = 0; i < ans.size(); i++) printf("%d ", ans[i]);
  puts("");
  return 0;
}
