func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Query {     int prefixe, nombre;     int id;     bool operator<(const Query& autre) const { return prefixe < autre.prefixe; }   };   const int MAXP = 20;   const int MAXN = 100 * 1000 + 10;   const int MOD = 1000 * 1000 * 1000 + 7;   bool prise[MAXP];   int puissance[MAXN];   int iConcerne[MAXP];   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     puissance[0] = 1;     for (int i = 1; i < MAXN; i++) {       puissance[i] = (puissance[i - 1] * 2) % MOD;     }     int nbNombres, nbQuestions;     cin >> nbNombres >> nbQuestions;     int nombres[nbNombres];     for (int i = 0; i < nbNombres; i++) {       cin >> nombres[i];     }     Query questions[nbQuestions];     int solution[nbQuestions];     for (int i = 0; i < nbQuestions; i++) {       cin >> questions[i].prefixe >> questions[i].nombre;       questions[i].prefixe--;       questions[i].id = i;     }     sort(questions, questions + nbQuestions);     int inQuestion = 0;     int nbPris = 0;     for (int iN = 0; iN < nbNombres; iN++) {       for (int i = 0; i < nbPris; i++) {         if (nombres[iN] & (1 << iConcerne[i])) nombres[iN] ^= nombres[i];       }       for (int i = 0; i < MAXP; i++) {         if (!prise[i] && (nombres[iN] & (1 << i))) {           swap(nombres[iN], nombres[nbPris]);           iConcerne[nbPris] = i;           nbPris++;           prise[i] = true;           break;         }       }       while (inQuestion < nbQuestions && questions[inQuestion].prefixe == iN) {         for (int i = 0; i < nbPris; i++) {           if (questions[inQuestion].nombre & (1 << iConcerne[i]))             questions[inQuestion].nombre ^= nombres[i];         }         if (questions[inQuestion].nombre == 0) {           solution[questions[inQuestion].id] = puissance[iN + 1 - nbPris];         } else {           solution[questions[inQuestion].id] = 0;         }         inQuestion++;       }     }     for (int i = 0; i < nbQuestions; i++) {       cout << solution[i] << endl;     }   }   