func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 200 * 1000 + 100;   int n, m, p;   int a[maxn];   int b[maxn];   map<int, int> numb;   map<int, int> numa;   vector<int> ans;   int sum = 0;   void add(int x) {     int val = numa[x] + 1;     numa[x] = val;     if (numb[x] >= val) sum++;   }   void remove(int x) {     int val = numa[x] - 1;     numa[x] = val;     if (numb[x] > val) sum--;   }   int main() {     ios::sync_with_stdio(false);     cin >> n >> m >> p;     for (int i = 0; i < n; ++i) cin >> a[i];     for (int i = 0; i < m; ++i) {       cin >> b[i];       numb[b[i]]++;     }     for (int i = 0; i < p; ++i) {       numa.clear();       sum = 0;       for (int j = i; j < i + (long long)p * (long long)m && j < n; j += p)         add(a[j]);       for (int q = i; (long long)q + (long long)p * (long long)(m - 1) < n;            q += p) {         if (sum == m) ans.push_back(q);         if ((long long)q + (long long)p * (long long)m < n) {           add(a[q + p * m]);           remove(a[q]);         }       }     }     sort((ans).begin(), (ans).end());     cout << (int)(ans).size() << endl;     for (int i = 0; i < (int)(ans).size(); ++i) cout << ans[i] + 1 <<    ;     cout << endl;     return 0;   }   