#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > v[(1 << 20) + 5];
int a[1000000 + 10];
bool vis[(1 << 20) + 5];
int ans[1000000 + 10];
long long mod = 1e9 + 7;
vector<int> s;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, q;
  cin >> n >> q;
  for (int i = (1); i < (n + 1); i++) cin >> a[i];
  for (int i = (1); i < (q + 1); i++) {
    int l, x;
    cin >> l >> x;
    v[l].push_back(make_pair(x, i));
  }
  long long tmp = 1;
  vis[0] = true;
  s.push_back(0);
  for (int i = (1); i < (n + 1); i++) {
    if (vis[a[i]])
      tmp = tmp * 2 % mod;
    else {
      int len = s.size();
      for (int j = (0); j < (len); j++) {
        if (!vis[s[j] ^ a[i]]) {
          vis[s[j] ^ a[i]] = true;
          s.push_back(s[j] ^ a[i]);
        }
      }
    }
    for (auto j : v[i]) {
      ans[j.second] = tmp * vis[j.first] % mod;
    }
  }
  for (int i = (1); i < (q + 1); i++) cout << ans[i] << "\n";
  return 0;
}
