func_code_string: #include <bits/stdc++.h>   #pragma warning(disable : 4996)   using namespace std;   const int mod = 1e9 + 7;   const int maxn = 1e5 + 5;   int m, q;   int val[maxn], sum1[maxn], sum2[maxn], las[maxn], pre[maxn], fl[maxn],       res[maxn];   struct no {     int le, ri, id;   } qu[maxn];   bool cmp(no n1, no n2) { return n1.ri < n2.ri; }   void solve() {     int i;     scanf( %d , &m);     for (i = 1; i <= m; i++) {       scanf( %d , &val[i]);       pre[i] = las[val[i]];       las[val[i]] = i;       if (i - pre[i] == pre[i] - pre[pre[i]]) {         fl[i] = fl[pre[i]];       } else {         fl[i] = pre[pre[i]];       }     }     scanf( %d , &q);     for (i = 1; i <= q; i++) {       scanf( %d%d , &qu[i].le, &qu[i].ri);       qu[i].id = i;     }     sort(qu + 1, qu + q + 1, cmp);     int j, k = 1;     for (i = 1; i <= m; i++) {       if (i == 10) {         i++;         i--;       }       for (j = i; j; j -= (j & (-j))) {         sum1[j]++;       }       for (j = pre[i]; j; j -= (j & (-j))) {         sum1[j]--;       }       for (j = fl[i]; j; j -= (j & (-j))) {         sum2[j]++;       }       for (j = fl[pre[i]]; j; j -= (j & (-j))) {         sum2[j]--;       }       while (qu[k].ri == i && k <= q) {         int su1 = 0, su2 = 0;         for (j = qu[k].le; j <= i; j += (j & (-j))) {           su1 += sum1[j];           su2 += sum2[j];         }         res[qu[k].id] = su1 + (su1 == su2);         k++;       }     }     for (i = 1; i <= q; i++) {       printf( %d n , res[i]);     }   }   int main() {     solve();     return 0;   }   