#include <bits/stdc++.h>
using namespace std;
int gi() {
  char cc = getchar();
  int cn = 0, flus = 1;
  while (cc < '0' || cc > '9') {
    if (cc == '-') flus = -flus;
    cc = getchar();
  }
  while (cc >= '0' && cc <= '9') cn = cn * 10 + cc - '0', cc = getchar();
  return cn * flus;
}
const int N = 3e5 + 5;
int n, q, a[N], g[20], f[N][20];
signed main() {
  n = gi(), q = gi();
  for (register int i = (1); i <= (n); ++i) a[i] = gi();
  for (register int i = (0); i <= (19); ++i) g[i] = n + 1;
  memset(f, 63, sizeof(f));
  for (register int i = n; i >= 1; --i) {
    for (register int j = (0); j <= (19); ++j)
      if ((1 << j) & a[i]) f[i][j] = i;
    for (register int j = (0); j <= (19); ++j)
      if ((1 << j) & a[i])
        for (register int k = (0); k <= (19); ++k)
          f[i][k] = min(f[i][k], f[g[j]][k]);
    for (register int j = (0); j <= (19); ++j)
      if ((1 << j) & a[i]) g[j] = i;
  }
  while (q--) {
    int x = gi(), y = gi();
    int flag = 0;
    for (register int j = (0); j <= (19); ++j)
      if ((1 << j) & a[y]) flag |= (f[x][j] <= y);
    (flag) ? puts("Shi") : puts("Fou");
  }
  return 0;
}
