#include <bits/stdc++.h>
using namespace std;
int a[200001], b[200001], cnt[200001];
map<int, int> g;
map<int, int> f[200001];
vector<int> ans;
int main() {
  ios::sync_with_stdio(false);
  int i, j, n, m, p;
  cin >> n >> m >> p;
  for (i = 0; i < n; i++) cin >> a[i];
  for (i = 0; i < m; i++) {
    cin >> b[i];
    g[b[i]]++;
  }
  for (i = 0; i < n; i++) {
    f[i % p][a[i]]++;
    cnt[i % p]++;
    if (cnt[i % p] > m) {
      cnt[i % p]--;
      f[i % p][a[i - m * p]]--;
      if (f[i % p][a[i - m * p]] == 0) f[i % p].erase(a[i - m * p]);
    }
    if (cnt[i % p] == m && f[i % p] == g) ans.push_back(i - (m - 1) * p);
  }
  sort(ans.begin(), ans.end());
  cout << ans.size() << endl;
  for (i = 0; i < ans.size(); i++) cout << ans[i] + 1 << " ";
  return 0;
}
