func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   void trace(T a) {     cout << a <<   n ;   }   template <typename T, typename... Args>   void trace(T a, Args... args) {     cout << a <<    ;     trace(args...);   }   int recNum = 0;   void prTabs() {     for (int i = 0; i < recNum; i++) cout <<       ;   }   template <typename... Args>   void recInit(Args... args) {     prTabs();     trace( rec( , args...,  ) );     recNum++;   }   template <typename T>   void recEnd(T a) {     prTabs();     trace( -> , a);     recNum--;   }   int n, m, a, b, c;   map<int, int> s;   map<int, int> sa;   int li[500001];   int freq[2][2000002];   int k;   int main() {     memset(freq, 0, sizeof freq);     scanf( %d %d %d %d , &m, &k, &n, &b);     for (int i = 1; i <= m; i++) {       scanf( %d , li + i);     }     for (int i = 0; i < b; i++) {       scanf( %d , &a);       if (s.count(a)) {         s[a]++;       } else {         s[a] = 1;       }     }     int il = 0, ir = 0;     for (int i = 0; i < n; i++) {       int dacerto = true;       while (ir < m - ((n - 1 - i) * k)) {         freq[1][li[++ir]]++;       }       while (il < k * i) {         freq[0][li[++il]]++;       }       for (map<int, int>::iterator it = s.begin(); it != s.end(); it++) {         if (freq[1][it->first] - freq[0][it->first] < it->second) {           dacerto = false;           break;         }       }       if (!dacerto) continue;       printf( %d n , m - (n * k));       int falta = k - b;       for (int j = k * i + 1; j <= m - ((n - 1 - i) * k); j++) {         if (sa[li[j]] < s[li[j]]) {           sa[li[j]]++;         } else if (falta) {           sa[li[j]]++;           falta--;         } else {           printf( %d  , j);         }       }       printf(  n );       return 0;     }     printf( -1 n );     return 0;   }   